<?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>147820</bug_id>
          
          <creation_ts>2015-08-09 19:32:03 -0700</creation_ts>
          <short_desc>Rename Color to OptionalRGBA</short_desc>
          <delta_ts>2015-08-17 18:14:52 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1116160</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-08-09 19:32:03 -0700</bug_when>
    <thetext>Rename Color to OptionalRGBA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116165</commentid>
    <comment_count>1</comment_count>
      <attachid>258607</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-08-09 19:36:42 -0700</bug_when>
    <thetext>Created attachment 258607
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116166</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-09 19:40:31 -0700</bug_when>
    <thetext>Attachment 258607 did not pass style-queue:


WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitColorChooser.h&quot;
ERROR: Source/WebCore/platform/graphics/mac/ColorMac.h:42:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/win/GraphicsContextCGWin.cpp:175:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/win/GraphicsContextCGWin.cpp:180:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/rendering/RenderInline.cpp:1597:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/rendering/RenderInline.h:177:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/rendering/RenderThemeSafari.h:66:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/rendering/RenderThemeMac.mm:629:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/Color.h:26:  #ifndef header guard has wrong style, please use: Color_h  [build/header_guard] [5]
ERROR: Source/WebCore/platform/graphics/Color.h:73:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/Color.h:75:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/Color.h:76:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/Color.h:78:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/Color.h:80:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/win/WebCoreTextRenderer.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/BitmapImage.h:319:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/platform/win/DragDataWin.cpp:205:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebKit/win/WebView.cpp:5848:  Missing space after ,  [whitespace/comma] [3]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:797:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:804:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/rendering/RenderThemeSafari.cpp:232:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/Gradient.h:54:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/gtk/InputMethodFilter.cpp:156:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/gtk/InputMethodFilter.cpp:263:  Missing space before {  [whitespace/braces] [5]
Total errors found: 23 in 379 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>1116167</commentid>
    <comment_count>3</comment_count>
      <attachid>258608</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-08-09 19:47:03 -0700</bug_when>
    <thetext>Created attachment 258608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116168</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-09 19:50:47 -0700</bug_when>
    <thetext>Attachment 258608 did not pass style-queue:


WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitColorChooser.h&quot;
ERROR: Source/WebCore/platform/graphics/mac/ColorMac.h:42:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/win/GraphicsContextCGWin.cpp:175:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/win/GraphicsContextCGWin.cpp:180:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/rendering/RenderInline.cpp:1597:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/rendering/RenderInline.h:177:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/rendering/RenderThemeSafari.h:66:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/rendering/RenderThemeMac.mm:629:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/Color.h:73:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/Color.h:75:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/Color.h:76:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/Color.h:78:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/Color.h:80:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/win/WebCoreTextRenderer.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/BitmapImage.h:319:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WebCore/platform/win/DragDataWin.cpp:205:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebKit/win/WebView.cpp:5848:  Missing space after ,  [whitespace/comma] [3]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:797:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:804:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/rendering/RenderThemeSafari.cpp:232:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/Gradient.h:54:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/gtk/InputMethodFilter.cpp:156:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/gtk/InputMethodFilter.cpp:263:  Missing space before {  [whitespace/braces] [5]
Total errors found: 22 in 379 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>1116755</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-08-11 15:51:31 -0700</bug_when>
    <thetext>/Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebKit2/WebPageMessageReceiver.cpp:86:10: fatal error: &apos;WebCore/OptionalRGBA.h&apos; file not found
#include &lt;WebCore/OptionalRGBA.h&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118352</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-08-17 18:14:52 -0700</bug_when>
    <thetext>I had a conversation about this with Beth, and after that talk I think I’m not going to do this. I’m going to chip at the problem from a different direction.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258607</attachid>
            <date>2015-08-09 19:36:42 -0700</date>
            <delta_ts>2015-08-09 19:47:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147820-20150809193628.patch</filename>
            <type>text/plain</type>
            <size>741190</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTc5OGU4YWQ4YWM0YWQ3
NTM2YTcwOGFjNWU4MDBjMTYyNzgzMjViOS4uMWZkNDEyZjQ1M2Y2MTk1NWE5N2JmMTEwNjk1ODli
YmI0YTc0NzMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3NCBAQAorMjAxNS0wOC0wOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIENvbG9yIHRvIE9w
dGlvbmFsUkdCQQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBpcyB0aGUgbmV4dCBzdGVwIGluIHJhdGlvbmFsaXppbmcgaG93IFdlYkNvcmUgaGFu
ZGxlcyBjb2xvciBzcGFjZXMuCisgICAgICAgIFdlIGFyZSBhZGRpbmcgYSBuZXcgQ29sb3IgY2xh
c3MgdGhhdCB3aWxsIGNvbnRhaW4gY29sb3IgdmFsdWVzIGFsb25nIHdpdGgKKyAgICAgICAgdGhl
IGNvbG9yIHNwYWNlIGluZm9ybWF0aW9uLiBUaGUgb2xkIGNsYXNzIHRoYXQgc2ltcGx5IGNvbnRh
aW5zIGNvbG9yIHZhbHVlcworICAgICAgICB3aXRoIDgtYml0IHJlZCwgZ3JlZW4sIGJsdWUsIGFu
ZCBhbHBoYSBpcyBnb2luZyB0byBiZSBuYW1lZCBSR0JBLiBUaGUgZXhpc3RpbmcKKyAgICAgICAg
Y2xhc3MgaXMgbGlrZSB0aGF0LCBidXQgd2l0aCBhbiAiaW52YWxpZCIgc3RhdGUsIHNvIGl0cyBu
YW1lIGlzIE9wdGlvbmFsUkdCQS4KKyAgICAgICAgTmV4dCBzdGVwcyBhcmUgdG8gYWRkIHRoZSBu
ZXcgUkdCQSBjbGFzcyBhbmQgdGhlIG5ldyBDb2xvciBjbGFzcywgYW5kIHN0YXJ0CisgICAgICAg
IHVzaW5nIHRoZW0gYXQgbW9zdCBjYWxsIHNpdGVzLiBEdXJpbmcgdGhpcyByZWZhY3RvcmluZyB3
ZSBhbHNvIHBsYW4gdG8gaW1wcm92ZQorICAgICAgICB0aGUgY2xhcml0eSBvZiB2YXJpb3VzIGZ1
bmN0aW9ucyBpbiB0aGUgbGVnYWN5IGNsYXNzLiBPbmNlIHRoZSB3b3JrIGlzIGVudGlyZWx5Cisg
ICAgICAgIGRvbmUsIE9wdGlvbmFsUkdCQSBzaG91bGQgYmUgcmVtb3ZlZCBlbnRpcmVseSBhbmQg
YW55IGNhbGwgc2l0ZXMgdGhhdCBzdGlsbCBuZWVkCisgICAgICAgIGl0IGNhbiB1c2UgT3B0aW9u
YWw8UkdCQT4uCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpjb2xv
clZhbHVlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0YVRhYmxlKToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5j
cHA6CisgICAgICAgIChnZXRBdHRyaWJ1dGVTZXRGb3JBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHA6
CisgICAgICAgIChnZXRJbnRlcmZhY2VNYXNrRnJvbU9iamVjdCk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06CisgICAgICAg
IChBWEF0dHJpYnV0ZVN0cmluZ1NldFN0eWxlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAgKEFYQXR0cmli
dXRlU3RyaW5nU2V0U3R5bGUpOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3Vy
cmVudENvbG9yT3JWYWxpZENvbG9yKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmg6CisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aW50ZXJwb2xhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRW
YWx1ZTo6YWRkU3RvcHMpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmg6CisgICAg
ICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBh
cnNlU3lzdGVtQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxT
aG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6ZmFzdFBhcnNlQ29sb3JJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmZhc3RQYXJzZUNvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcik6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpmb3JtYXRO
dW1iZXJGb3JDdXN0b21DU1NUZXh0KToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVQb29sLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Q1NTVmFsdWVQb29sKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Y3JlYXRlQ29sb3JWYWx1ZSk6CisgICAgICAgICogY3Nz
L1JHQkNvbG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSR0JDb2xvcjo6Y29sb3IpOgorICAgICAg
ICAqIGNzcy9TVkdDU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZVNWR1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VTVkdQYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlU1ZHQ29sb3IpOgorICAgICAg
ICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRhcEhpZ2hsaWdodENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNWR0NvbG9yKToKKyAgICAgICAg
KiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0U3ZnU2hhZG93KToKKyAgICAgICAg
KiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVy
dGllczo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNv
bHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb2xvckZvckNTU1ZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMpOgorICAg
ICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpTdGF0ZTo6YmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKiBjc3MvbWFrZXByb3AucGw6
CisgICAgICAgIChnZW5lcmF0ZUluaGVyaXRWYWx1ZVNldHRlcik6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVzZXRMaW5rQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnJlc2V0VmlzaXRlZExpbmtDb2xvcik6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VGV4dENvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0ZXh0Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmxpbmtDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dmlzaXRlZExp
bmtDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWN0aXZlTGlua0NvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRMaW5rQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnNldFZpc2l0ZWRMaW5rQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnNldEFjdGl2ZUxpbmtDb2xvcik6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5n
U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3NzVmFsdWVUb1JHQkEpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVDaGFuZ2U6OmV4dHJhY3RUZXh0U3R5bGVzKToKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU6OkNv
bXBvc2l0aW9uVW5kZXJsaW5lKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRpc2FwcGVhcnNJbnRvQmFja2dyb3VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpDYXJldEJhc2U6OnBhaW50Q2FyZXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246OnNldENhcmV0Q29sb3IpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAg
ICAgIChfcGxhdGZvcm1Db2xvcik6CisgICAgICAgIChub3JtYWxpemVkQ29sb3IpOgorICAgICAg
ICAoSFRNTENvbnZlcnRlckNhY2hlczo6Y29sb3JQcm9wZXJ0eVZhbHVlRm9yTm9kZSk6CisgICAg
ICAgIChIVE1MQ29udmVydGVyOjpfY29sb3JGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5n
L21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmZvbnRBdHRyaWJ1
dGVzRm9yU2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZENvbG9yU3RyaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbG9ySW5wdXRUeXBlOjp2YWx1ZUFzQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29s
b3JJbnB1dFR5cGU6OmRpZENob29zZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5w
dXRUeXBlOjpjdXJyZW50Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6
OnN1Z2dlc3Rpb25zKToKKyAgICAgICAgKiBodG1sL0NvbG9ySW5wdXRUeXBlLmg6CisgICAgICAg
ICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9yU3Ry
aW5nV2l0aENyYXp5TGVnYWN5UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6
OmFkZEhUTUxDb2xvclRvU3R5bGUpOgorICAgICAgICAqIGh0bWwvSFRNTEhSRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSFJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50
YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3RDb2xvckluQ29sb3JDaG9v
c2VyKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9DYW52YXNHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNHcmFk
aWVudDo6YWRkQ29sb3JTdG9wKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpTdGF0ZTo6U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzaGFkb3dDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmNsZWFyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmNsZWFyU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6YXBwbHlTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50Q29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmFwcGx5U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmNvbG9yKToK
KyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbmZpZ0NvbG9yKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9y
Q2hvb3Nlcik6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01lZGlhQUYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJl
bmNlc01lZGlhQUY6OmNhcHRpb25zV2luZG93Q1NTKToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0JhY2tncm91bmRDU1MpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zVGV4dENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpj
YXB0aW9uc1RleHRDb2xvckNTUyk6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZl
cmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNFZGdlQ29sb3JGb3JUZXh0Q29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNzc1Byb3BlcnR5V2l0aFRl
eHRFZGdlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUY6OmNvbG9yUHJvcGVydHlDU1MpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zVGV4dEVkZ2VDU1MpOgorICAgICAgICAqIHBhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmNyZWF0ZUNvbG9yQ2hvb3Nlcik6CisgICAg
ICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAg
ICAgICAqIHBhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVn
aW9uT3ZlcmxheTo6UmVnaW9uT3ZlcmxheSk6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJh
Zyk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6
Y3JlYXRlVmlldyk6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvRnJh
bWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3ROb2RlKToKKyAg
ICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OkZyYW1lVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlY2FsY3VsYXRlU2Ny
b2xsYmFyT3ZlcmxheVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YmFzZUJh
Y2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldEJhc2VCYWNr
Z3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVCYWNrZ3Jv
dW5kUmVjdXJzaXZlbHkpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVUaWxl
c0ZvckV4dGVuZGVkQmFja2dyb3VuZE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
Ojpkb2N1bWVudEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICog
cGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBhZ2VFeHRlbmRlZEJhY2tn
cm91bmRDb2xvcik6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9QYWdl
T3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlT3ZlcmxheTo6UGFnZU92ZXJsYXkp
OgorICAgICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBy
aW50Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKToKKyAgICAgICAgKiBwYWdl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpi
bGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVyQ29sb3I6OlByb3Bl
cnR5V3JhcHBlckNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlckNvbG9y
OjpibGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpzaGFkb3dGb3JCbGVuZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcjo6UHJvcGVydHlXcmFw
cGVyTWF5YmVJbnZhbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVy
TWF5YmVJbnZhbGlkQ29sb3I6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVdy
YXBwZXJNYXliZUludmFsaWRDb2xvcjo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVy
dHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3I6OlByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZl
Y3RlZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclNWR1BhaW50OjpQ
cm9wZXJ0eVdyYXBwZXJTVkdQYWludCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVdyYXBw
ZXJTVkdQYWludDo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclNW
R1BhaW50OjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vQ29sb3JDaG9vc2VyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDb2xvckNob29zZXI6OnJlYXR0YWNoQ29sb3JDaG9vc2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbG9yQ2hvb3Nlcjo6c2V0U2VsZWN0ZWRDb2xvcik6CisgICAgICAgICog
cGxhdGZvcm0vQ29sb3JDaG9vc2VyQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0Rh
dGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qb3B1
cE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qb3B1cE1lbnVTdHlsZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6UG9wdXBNZW51U3R5bGU6OlBvcHVwTWVudVN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBvcHVwTWVudVN0eWxlOjpmb3JlZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6UG9wdXBNZW51U3R5bGU6OmJhY2tncm91bmRDb2xvcik6CisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjpk
ZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWU6OnNldFVwT3ZlcmhhbmdBcmVhc0xheWVyQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ29tcG9zaXRlOjpwYWludFNjcm9sbENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9UaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6ZHJhd05hbWVkSW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL1RoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpUaGVt
ZTo6c2VsZWN0aW9uQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OnRleHRTZWFyY2hI
aWdobGlnaHRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6c3lzdGVtQ29sb3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGhlbWVDb2NvYTo6ZHJhd05hbWVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9E
cmFnRGF0YUVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNDb2xvcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lRWZsOjppc0NvbnRyb2xTdHlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVFZmw6OnBhaW50VGhlbWVQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxD
b2xvcnNGcm9tRWRqZUNsYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpS
ZW5kZXJUaGVtZUVmbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGxhdGZv
cm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVFZmw6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9u
Rm9yZWdyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpwbGF0
Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lRWZsOjpwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c29saWRDb2xv
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcHRpb25h
bFJHQkE6OnBhcnNlSGV4Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6ZGlmZmVyZW5jZVNxdWFy
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6T3B0aW9uYWxSR0JBOjpPcHRpb25hbFJHQkEpOgorICAg
ICAgICAoV2ViQ29yZTo6T3B0aW9uYWxSR0JBOjpzZXJpYWxpemVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wdGlvbmFsUkdCQTo6bmFtZUZvclJlbmRlclRyZWVBc1RleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6T3B0aW9uYWxSR0JBOjpzZXROYW1lZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
dGlvbmFsUkdCQTo6bGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6T3B0aW9uYWxSR0JBOjpkYXJr
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wdGlvbmFsUkdCQTo6aXNEYXJrKToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wdGlvbmFsUkdCQTo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6T3B0aW9uYWxS
R0JBOjpibGVuZFdpdGhXaGl0ZSk6CisgICAgICAgIChXZWJDb3JlOjpPcHRpb25hbFJHQkE6Omdl
dFJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6T3B0aW9uYWxSR0JBOjpnZXRIU0wpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IpOgorICAgICAgICAoV2ViQ29y
ZTo6cHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OnBhcnNlSGV4Q29sb3IpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q29sb3I6OkNvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbG9yOjpzZXJpYWxpemVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpu
YW1lRm9yUmVuZGVyVHJlZUFzVGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb2xv
cjo6c2V0TmFtZWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6bGln
aHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmRhcmspOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmlzRGFyayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDb2xvcjo6YmxlbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmJs
ZW5kV2l0aFdoaXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpnZXRSR0JB
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpnZXRIU0wpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpP
cHRpb25hbFJHQkE6Ok9wdGlvbmFsUkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpPcHRpb25hbFJH
QkE6OmNyZWF0ZVVuY2hlY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OkNv
bG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpjcmVhdGVVbmNoZWNrZWQp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjphZGRDb2xvclN0b3ApOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYWRpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d1JhaXNlZEVsbGlwc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRT
dHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRv
dyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldExlZ2FjeVNoYWRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmZpbGxDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpzZXRC
YWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Z2V0RGVi
dWdCb3JkZXJJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnVwZGF0ZURl
YnVnSW5kaWNhdG9ycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ci5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6YmFja2dyb3VuZENvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnNldERlYnVnQmFja2dyb3VuZENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnNldERlYnVnQm9yZGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OnNvbGlkQ29sb3IpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpmb3JlZ3JvdW5kQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OmJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6aGlnaGxpZ2h0Q29sb3IpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1
ZmZlcjo6c2V0Q2FjaGVkU2hhZG93VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hC
dWZmZXI6OnNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd0JsdXI6OlNoYWRvd0JsdXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6c2V0
U2hhZG93VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGls
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhU
aWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRo
VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmJlZ2luU2hhZG93TGF5ZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJMYXllcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDQTo6c2V0QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb1NvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldExheWVyRGVidWdCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGVudHNMYXll
ckRlYnVnQm9yZGVyQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Y2xvbmVMYXllckRlYnVnQm9y
ZGVyQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVEZWJ1
Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRl
bnRzQ29sb3JMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldERl
YnVnQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
Z2V0RGVidWdCb3JkZXJJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
c2V0RGVidWdCb3JkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmlt
YXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6c2V0VGlsZURlYnVnQm9yZGVyQ29sb3Ip
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRpbGVDb3ZlcmFnZU1hcDo6VGlsZUNvdmVyYWdlTWFwKToKKyAgICAgICAgKFdl
YkNvcmU6OlRpbGVDb3ZlcmFnZU1hcDo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9UaWxlR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlR3JpZDo6dXBkYXRl
VGlsZUxheWVyUHJvcGVydGllcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tOgorICAgICAgICAoUGxhdGZv
cm1DQUFuaW1hdGlvbkNvY29hOjpzZXRGcm9tVmFsdWUpOgorICAgICAgICAoUGxhdGZvcm1DQUFu
aW1hdGlvbkNvY29hOjpzZXRUb1ZhbHVlKToKKyAgICAgICAgKFBsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYTo6c2V0VmFsdWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9Q
bGF0Zm9ybUNBRmlsdGVyc0NvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChQbGF0Zm9ybUNB
TGF5ZXJDb2NvYTo6YmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllckNv
Y29hOjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyQ29jb2E6
OnNldEJvcmRlckNvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9X
ZWJUaWxlZEJhY2tpbmdMYXllci5tbToKKyAgICAgICAgKC1bV2ViVGlsZWRCYWNraW5nTGF5ZXIg
c2V0Qm9yZGVyQ29sb3I6XSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1Bs
YXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUFuaW1hdGlvbldp
bjo6c2V0RnJvbVZhbHVlKToKKyAgICAgICAgKFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OnNldFRv
VmFsdWUpOgorICAgICAgICAoUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6c2V0VmFsdWVzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4u
Y3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2luOjpiYWNrZ3JvdW5kQ29sb3IpOgorICAg
ICAgICAoUGxhdGZvcm1DQUxheWVyV2luOjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAo
UGxhdGZvcm1DQUxheWVyV2luOjpzZXRCb3JkZXJDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHA6CisgICAgICAg
IChQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6ZGlzcGxheUNhbGxiYWNrKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRTb3VyY2VSR0JBRnJvbUNvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxS
ZWN0V2l0aENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdMaW5lT25DYWlyb0NvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjphZGp1c3RGb2N1c1JpbmdDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0Ojpjb21wdXRlTGluZUJvdW5kc0ZvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3TGluZXNGb3JUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6c2V0UGxhdGZvcm1GaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjpwdXRCeXRlQXJyYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1Bs
YXRmb3JtQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByZXBhcmVDYWlyb0Nv
bnRleHRTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdl
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xv
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpPcHRpb25hbFJHQkE6Ok9wdGlvbmFsUkdCQSk6CisgICAgICAgIChXZWJDb3Jl
OjpsZWFrQ0dDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbG9yOjpDb2xvcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0
Q0dGaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q0dTdHJva2VDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0Ojpjb21wdXRlTGluZUJvdW5kc0ZvclRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZXNGb3JUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TdHJva2VDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtRmlsbENvbG9yKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6ZGlsYXRpb25TaXplRm9yVGV4dENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVz
ZUxpZ2h0aW5nOjpGRURpZmZ1c2VMaWdodGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1
c2VMaWdodGluZzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5n
OjpsaWdodGluZ0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpz
ZXRMaWdodGluZ0NvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RGlmZnVzZUxpZ2h0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURyb3BTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93OjpGRURyb3BT
aGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93OjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpGRURyb3BTaGFkb3c6OnNoYWRvd0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZF
RHJvcFNoYWRvdzo6c2V0U2hhZG93Q29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVGbG9vZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjpGRUZsb29k
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGRUZsb29kOjpmbG9vZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OnNldEZs
b29kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RkVMaWdodGluZzo6RkVMaWdodGluZyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVT
cGVjdWxhckxpZ2h0aW5nOjpGRVNwZWN1bGFyTGlnaHRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
RkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVTcGVjdWxh
ckxpZ2h0aW5nOjpsaWdodGluZ0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJM
aWdodGluZzo6c2V0TGlnaHRpbmdDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcm9wU2hh
ZG93RmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUFscGhhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2Via2l0VmlkZW9TaW5rUmVu
ZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvQ29sb3JHdGsuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6T3B0aW9uYWxSR0JBOjpPcHRpb25hbFJHQkEpOgorICAgICAgICAoV2Vi
Q29yZTo6T3B0aW9uYWxSR0JBOjpvcGVyYXRvciBHZGtSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbG9yOjpDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6b3BlcmF0
b3IgR2RrUkdCQSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Nv
bG9yTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Y29sb3JGcm9tTlNDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpu
c0NvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXREZWJ1Z0JvcmRlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZTo6ZHJhd1JlcGFpbnRDb3VudGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0Nv
dW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckZQU0NvdW50ZXI6OnVw
ZGF0ZUZQU0FuZERpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpk
cmF3Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd051bWJl
cik6CisgICAgICAgIChXZWJDb3JlOjpwcmVwYXJlRmlsdGVyUHJvZ3JhbSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdTb2xpZENvbG9yKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpibGVuZFdpdGhPcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllcjo6c2V0U29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5
ZXI6OnNldERlYnVnVmlzdWFscyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXI6OmRyYXdCb3JkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3Qm9yZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJhd1Jl
cGFpbnRDb3VudGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9Tb2xpZENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0RGVi
dWdCb3JkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3Jl
Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L1VwZGF0ZUF0bGFzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENH
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldENHU3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6c3BlbGxp
bmdQYXR0ZXJuQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Z3JhbW1hclBhdHRlcm5Db2xvcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yRG9jdW1lbnRN
YXJrZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6YXNDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xl
Z2FjeVRpbGVDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUu
bW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OmNvbG9yRm9yR3JpZFRpbGVC
b3JkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNvbG9yKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tOgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZFNldHVwRnVsbHNj
cmVlbik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmFzQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0
Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmNvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6c2V0VXBPdmVyaGFuZ0FyZWFCYWNrZ3JvdW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzZXRVcE92ZXJoYW5nQXJlYXNM
YXllckNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9j
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VHJhY2tC
YWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRU
aHVtYik6CisgICAgICAgICogcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdEYXRhOjphc0NvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJh
Z0ltYWdlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmsp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UG9wdXBNZW51V2luOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1dlYkNv
cmVUZXh0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9EcmF3VGV4dEF0UG9pbnQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZURyYXdEb3VibGVkVGV4dEF0UG9pbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL0JvcmRlckVkZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRWRnZTo6Qm9y
ZGVyRWRnZSk6CisgICAgICAgICogcmVuZGVyaW5nL0JvcmRlckVkZ2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkJvcmRlckVkZ2U6OmNvbG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvRWxsaXBzaXNC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxsaXBzaXNCb3g6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkVsbGlwc2lzQm94OjpwYWludFNlbGVjdGlvbik6CisgICAgICAgICogcmVuZGVy
aW5nL0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6
cGFpbnRGaWxsTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50
RmlsbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50Qm94RGVj
b3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cGFpbnRNYXNrKToK
KyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBh
aW50U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50Q29t
cG9zaXRpb25CYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBh
aW50RGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludFRl
eHRNYXRjaE1hcmtlcik6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUGFpbnRJbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWludElu
Zm86OmZvcmNlZFRleHRDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Um9vdEJveEZpbGxMYXllcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpnZXRCYWNrZ3JvdW5kUGFpbnRlZEV4dGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmJhY2tncm91bmRJc0tub3duVG9CZU9wYXF1
ZUluUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmJhY2tncm91bmRIYXNPcGFx
dWVUb3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Q2xpcHBpbmdN
YXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRNYXNrSW1hZ2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVy
RXh0ZW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
T25lQm9yZGVyU2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRCb3JkZXJTaWRlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91
bmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hh
ZG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJEZXRhaWxzTWFya2VyOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c2VsZWN0aW9u
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c2VsZWN0aW9uRm9yZWdy
b3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnNlbGVjdGlvbkVt
cGhhc2lzTWFya0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnNlbGVj
dGlvbkJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojpk
cmF3TGluZUZvckJveFNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6cGFp
bnRPdXRsaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFByZXNzZWRDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpyZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlcGxhY2VtZW50VGV4dENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnVuYXZhaWxhYmxlUGx1
Z2luQm9yZGVyQ29sb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJTdGFydEVkZ2VDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpib3JkZXJFbmRFZGdlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyRmlsbENv
bG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGdWxsU2NyZWVuU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRSZXBs
YWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludFNjcm9sbENvcm5lcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbkNyZWF0ZVRp
bGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpyZW5kZXJl
ckJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6
OnVwZGF0ZURpcmVjdGx5Q29tcG9zaXRlZEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVJvb3RMYXllckNvbmZpZ3VyYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzaG91bGREdW1wUHJvcGVydHlG
b3JMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp2aWV3SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cm9vdE9yQm9keVN0
eWxlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNl
dFJvb3RFeHRlbmRlZEJhY2tncm91bmRDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtQmFja2dyb3VuZCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJNZW51TGlzdC5jcHA6CisgICAgICAgIChSZW5kZXJNZW51TGlzdDo6aXRlbVN0eWxlKToKKyAg
ICAgICAgKFJlbmRlck1lbnVMaXN0OjpnZXRJdGVtQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TXVsdGlDb2x1bW5TZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5T
ZXQ6OnBhaW50Q29sdW1uUnVsZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVjb3JhdGlvbkNvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6Z2V0VGV4dERlY29yYXRpb25Db2xvcnNBbmRTdHlsZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpjYWxjdWxhdGVCb3JkZXJTdHlsZUNvbG9yKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6
OmdldFNjcm9sbGJhclBzZXVkb1N0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6
OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpiZ0NvbG9yKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVtcHR5Qm9yZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZFN0
YXJ0Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNv
bGxhcHNlZEVuZEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNv
bXB1dGVDb2xsYXBzZWRCZWZvcmVCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGVDZWxsOjpjb21wdXRlQ29sbGFwc2VkQWZ0ZXJCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGFibGVDZWxsOjpwYWludEJhY2tncm91bmRzQmVoaW5kQ2VsbCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUYWJsZVNlY3Rpb246OmNhY2hlZENvbGxhcHNlZEJvcmRlcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpzZWxlY3Rp
b25Gb3JlZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c2VsZWN0
aW9uRW1waGFzaXNNYXJrQ29sb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjdXN0b21Gb2N1c1JpbmdDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWU6OmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZTo6aW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6aW5hY3RpdmVTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFjdGl2ZUxpc3RC
b3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWU6OmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6aW5hY3RpdmVMaXN0Qm94U2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwbGF0
Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZTo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBsYXRmb3JtSW5h
Y3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWU6OnBsYXRmb3JtQWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwbGF0
Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmlzQ29udHJvbFN0
eWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGxhdGZvcm1Db2xvcnNEaWRD
aGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdo
bGlnaHRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGxhdGZvcm1JbmFj
dGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZTo6dGFwSGlnaGxpZ2h0Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6
OmRpc2FibGVkVGV4dENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpzZXRD
dXN0b21Gb2N1c1JpbmdDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6Zm9j
dXNSaW5nQ29sb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBsYXRmb3JtRm9jdXNSaW5nQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUd0azo6UmVuZGVyVGhlbWVHdGspOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGxhdGZvcm1BY3RpdmVT
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVH
dGs6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3Vu
ZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwbGF0Zm9ybUluYWN0
aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lR3RrOjpwbGF0Zm9ybUFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBsYXRmb3JtSW5hY3RpdmVMaXN0Qm94
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
R3RrOjpwbGF0Zm9ybUFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBsYXRmb3JtSW5hY3RpdmVMaXN0Qm94U2Vs
ZWN0aW9uRm9yZWdyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3Rr
OjpzeXN0ZW1Db2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnNo
YWRvd0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludENoZWNr
Ym94RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OmlzQ29u
dHJvbFN0eWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRSYWRp
b0RlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludE1l
bnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJ
T1M6OnBhaW50U2xpZGVyVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6
OnBhaW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBh
aW50RmlsZVVwbG9hZEljb25EZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUlPUzo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnN5c3RlbUNv
bG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZU1hYzo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtQWN0
aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybUluYWN0aXZl
TGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZU1hYzo6cGxhdGZvcm1Gb2N1c1JpbmdDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnN5c3RlbUNvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjppc0NvbnRyb2xTdHlsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6YWRqdXN0TWVudUxpc3RT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjphdHRhY2htZW50SWNvbkJhY2tncm91bmRDb2xvcik6
CisgICAgICAgIChXZWJDb3JlOjphdHRhY2htZW50SWNvbkJvcmRlckNvbG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OmF0dGFjaG1lbnRUaXRsZUluYWN0aXZlQmFja2dyb3VuZENvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OmF0dGFjaG1lbnRUaXRsZUluYWN0aXZlVGV4dENvbG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OmF0dGFjaG1lbnRTdWJ0aXRsZVRleHRDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjphdHRhY2htZW50UHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6YXR0YWNobWVudFByb2dyZXNzQmFyRmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmF0
dGFjaG1lbnRQcm9ncmVzc0JhckJvcmRlckNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50
QXR0YWNobWVudFRpdGxlQmFja2dyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lU2FmYXJpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwbGF0
Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZVNhZmFyaTo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6YWN0aXZlTGlzdEJveFNl
bGVjdGlvbkJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNh
ZmFyaTo6cGxhdGZvcm1Gb2N1c1JpbmdDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZVNhZmFyaTo6aXNDb250cm9sU3R5bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdE1lbnVMaXN0U3R5bGUpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGxhdGZv
cm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVXaW46OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9u
Rm9yZWdyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpwbGF0
Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lV2luOjpzeXN0ZW1Db2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lV2luLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclZpZXc6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVM
YXlvdXQ6OnBhaW50RGVidWdCb3JkZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dFBhaW50
U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50U3R5bGU6OlRleHRQYWludFN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdENvbG9yRm9yVmlzaWJpbGl0eU9uQmFja2dy
b3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlVGV4dFBhaW50U3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29tcHV0ZVRleHRTZWxlY3Rpb25QYWludFN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OnVwZGF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRQ
YWludFN0eWxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0FwcGxpZXI6OlNoYWRvd0FwcGxpZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6cGFpbnRUZXh0V2l0aFNoYWRvd3MpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxv
Y2s6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNs
b3NlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE1lbmNsb3NlOjpwYWludCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0JvcmRlclZhbHVlLmg6CisgICAgICAgIChXZWJD
b3JlOjpCb3JkZXJWYWx1ZTo6c2V0Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyVmFs
dWU6OmNvbG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ29sbGFwc2VkQm9yZGVyVmFs
dWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbGxhcHNlZEJvcmRlclZhbHVlOjpDb2xsYXBzZWRC
b3JkZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xsYXBzZWRCb3JkZXJWYWx1ZTo6Y29s
b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OnZpc2l0ZWRMaW5rQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OnNldENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRWaXNpdGVkTGlu
a0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb2xvckluY2x1ZGluZ0Zh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjp2aXNpdGVkRGVwZW5kZW50
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxUYXBIaWdobGln
aHRDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbEZpbGxQYWludENvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1JlbmRlclN0eWxlOjppbml0aWFsU3Ryb2tlUGFpbnRDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbFN0b3BDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbEZsb29kQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxMaWdodGluZ0NvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1JlbmRlclN0eWxlOjpzZXRGaWxsUGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UmVuZGVyU3R5bGU6OnNldFN0cm9rZVBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRl
clN0eWxlOjpzZXRTdG9wQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6
OnNldEZsb29kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OnNldExp
Z2h0aW5nQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmZpbGxQYWlu
dENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzdHJva2VQYWludENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzdG9wQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmZsb29kQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyU3R5bGU6OmxpZ2h0aW5nQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUmVuZGVyU3R5bGU6OnZpc2l0ZWRMaW5rRmlsbFBhaW50Q29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyU3R5bGU6OnZpc2l0ZWRMaW5rU3Ryb2tlUGFpbnRDb2xvcik6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5oOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRh
OjpTaGFkb3dEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0RhdGE6OmNvbG9yKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5oOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVCYWNrZ3JvdW5kRGF0YTo6Y29sb3IpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U3R5bGVNdWx0aUNvbERhdGEuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YS5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUlu
aGVyaXRlZERhdGEuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5oZXJpdENvbG9yRnJvbVBhcmVudFN0eWxlSWZOZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6cmVxdWVzdFBhaW50aW5nUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2U6OmZpbGxQYWludGluZ1Jlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlOjpzdHJva2VQYWludGluZ1Jlc291cmNl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1NoYXBlOjpmaWxsQ29udGFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
U2hhcGU6OnN0cm9rZUNvbnRhaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBl
OjpmaWxsU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OnN0cm9rZVNo
YXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb25CYWNrZ3JvdW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OmFjcXVpcmVQYWludGluZ1Jl
c291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJDb3JlOjp3cml0
ZVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuaDoK
KyAgICAgICAgKiBzdmcvQ29sb3JEaXN0YW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb2xv
ckRpc3RhbmNlOjpDb2xvckRpc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yRGlzdGFu
Y2U6OmNsYW1wQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JEaXN0YW5jZTo6YWRkQ29s
b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yRGlzdGFuY2U6OmFkZFRvQ29sb3IpOgorICAg
ICAgICAqIHN2Zy9Db2xvckRpc3RhbmNlLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkQ29s
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yOjpjb25z
dHJ1Y3RGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdEZvckN1cnJlbnRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9yRnJvbVN0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yOjpjYWxjdWxhdGVE
aXN0YW5jZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVkVHlwZTo6c2V0VmFsdWVBc1N0cmluZyk6CisgICAgICAgICogc3ZnL1NWR0Fu
aW1hdGVkVHlwZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpjb2xvcik6
CisgICAgICAgICogc3ZnL1NWR0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbG9y
Ojpjb2xvckZyb21SR0JDb2xvclN0cmluZyk6CisgICAgICAgICogc3ZnL1NWR0NvbG9yLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6Y3JlYXRlRnJvbUNvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0NvbG9yOjpjb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6c2V0
Q29sb3IpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5pZGw6CisgICAg
ICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcv
U1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURyb3BT
aGFkb3dFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRmxvb2RFbGVtZW50OjpidWlsZCk6CisgICAgICAg
ICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9T
VkdHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVt
ZW50OjpidWlsZFN0b3BzKToKKyAgICAgICAgKiBzdmcvU1ZHUGFpbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhaW50OjpjcmVhdGVDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWlu
dDo6Y3JlYXRlVVJJQW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGFpbnQ6OmNyZWF0
ZSk6CisgICAgICAgICogc3ZnL1NWR1N0b3BFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1N0b3BFbGVtZW50OjpzdG9wQ29sb3JJbmNsdWRpbmdPcGFjaXR5KToKKyAgICAgICAgKiBz
dmcvU1ZHU3RvcEVsZW1lbnQuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNlbGVjdENvbG9ySW5Db2xvckNob29zZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRWaWV3QmFzZUJhY2tncm91bmRDb2xvcik6
CisgICAgICAgICogdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3UmVjdCk6CisKIDIwMTUtMDgtMDkg
IE5hbiBXYW5nICA8bl93YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogQ1NTIHRhYmxlIGRp
c3BsYXkgc3R5bGVzIGNhbiBjYXVzZSBtYWxmb3JtZWQsIGluYWNjZXNzaWJsZSBBWFRhYmxlcyB0
byBiZSBleHBvc2VkIHRvIHRoZSBBWCB0cmVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lv
cy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKaW5kZXggZDRlNDUxNmQ3
NGYxZTYyNTk1ZGZmYzEwYzkxMDkxYWEwOTIyYzc3MS4uZjYyYzUxMjdlYjJhOTRiZjU3MDNiM2Q3
ZmRlYjliZWZkYmVhODc2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1
LTA4LTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUg
Q29sb3IgdG8gT3B0aW9uYWxSR0JBCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDc4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lPUy5tbToKKyAgICAgICAgKC1bV2Vi
UERGVmlldyBkcmF3UGFnZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBsYWluV2hpdGVWaWV3
Lm1tOgorCiAyMDE1LTA4LTA1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbCBvdXQgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvMTg3OTcyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDQ2YTBhY2E0ZmVkM2ZhOTc0NWU0YmUyNzBm
ZWY3ZmNjYjZlMGEwNjQuLmQyOTkyZDBjM2Y5ZTdlNjYyNzU4ODAyNWU3ZTk5ZDBkODBjNTExNzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxNS0wOC0wOSAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIENvbG9yIHRvIE9wdGlvbmFs
UkdCQQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3
ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUNv
bG9yQ2hvb3Nlcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
OgorICAgICAgICAodW5kb05hbWVGb3JFZGl0QWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvbG9yKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJG
cmFtZSBfdXBkYXRlQmFja2dyb3VuZEFuZFVwZGF0ZXNXaGlsZU9mZnNjcmVlbl0pOgorICAgICAg
ICAoLVtXZWJGcmFtZSBfYm9keUJhY2tncm91bmRDb2xvcl0pOgorICAgICAgICAoLVtXZWJGcmFt
ZSBzZXRDYXJldENvbG9yOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJGcmFtZVZpZXcgZHJhd1JlY3Q6XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGV4dHJhY3RVbmRlcmxpbmVzKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkluZGljYXRlTGF5ZXIubW06CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6
Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGluaXRTaW1wbGVIVE1MRG9jdW1lbnRX
aXRoU3R5bGU6ZnJhbWU6cHJlZmVyZW5jZXM6Z3JvdXBOYW1lOl0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxNS0wOC0wNiAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoZXMgd2hlbiBjYWxsaW5nIHN3aXp6bGVk
IHNldE5lZWRzRGlzcGxheUluUmVjdDogb24gaGVhcnRiZWF0IHRocmVhZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CmluZGV4IDlkNDJiYzQyZDQzZDE5YTAyMTk2YzY2YjFjZDA2Yjg4ZGM4MWViMmYuLjljY2I3ZjE4
YjI1YmZhNDczOTM5ZWNmYmVlOGNlZDI3NzgyZGYwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxNS0wOC0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVuYW1lIENvbG9yIHRvIE9wdGlvbmFsUkdCQQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3ODIwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
LmNwcDoKKyAgICAgICAgKEhVRFNsaWRlcjo6ZHJhdyk6CisgICAgICAgIChGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyOjpkcmF3KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlv
blRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAg
ICAoV2ViRnJhbWU6OnVwZGF0ZUJhY2tncm91bmQpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgor
ICAgICAgICAoV2ViVmlldzo6cGFpbnRJbnRvQmFja2luZ1N0b3JlKToKKyAgICAgICAgKGNvbXBv
c2l0aW9uVG9VbmRlcmxpbmVzKToKKyAgICAgICAgKFdlYlZpZXc6OnNldENvbXBvc2l0aW9uRm9y
VGVzdGluZyk6CisKIDIwMTUtMDgtMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBCdWlsZCBtb3JlIHRlc3RpbmcgYmluYXJpZXMgd2l0aCBD
TWFrZSBvbiBXaW5kb3dzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2JiYWE2YzFmYzY0YTg1ZDE2MGQ0N2RjYWQ2
OTI2MzBjNzA0NzFiYi4uYTY0NTI3NDQ4MDc3OTkyMjIzZjNmN2FiZTI2NjdmZDY4YzFlMTNlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxOCBAQAorMjAxNS0wOC0wOSAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIENvbG9yIHRvIE9wdGlvbmFsUkdCQQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3ODIwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpkcmF3Qm9yZGVyKToKKyAgICAgICAg
KFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmRyYXdSZXBhaW50Q291bnRlcik6Cisg
ICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmUuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+OjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Q29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpw
YWludFRvQ3VycmVudEdMQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6cGFpbnRUb0dyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg6CisgICAgICAgIChX
ZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0Vmlld0JhY2tncm91bmRDb2xvcik6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6dmlld0JhY2tncm91
bmRDb2xvcik6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRj
b21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRocmVh
ZGVkQ29tcG9zaXRvcjo6cmVuZGVyTGF5ZXJUcmVlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxPcHRpb25h
bFJHQkE+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE9wdGlvbmFsUkdC
QT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OmRlY29kZUZpbHRlck9wZXJhdGlvbik6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q29sb3I+OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPENvbG9yPjo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL0FyZ3VtZW50Q29k
ZXJzTWFjLm1tOgorICAgICAgICAoSVBDOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9tYWMv
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KToKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90
ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbToKKyAgICAgICAgKFdlYktpdDo6Y2dDb2xvckZy
b21Db2xvcik6CisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bi5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6cGFnZUV4
dGVuZGVkQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OnNldFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcik6CisgICAgICAgICog
U2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6TGF5ZXJQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6b3Bl
cmF0b3I8PCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXdFZmwuY3BwOgor
ICAgICAgICAoV0tWaWV3U2V0QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdLVmlld0dldEJh
Y2tncm91bmRDb2xvcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW06CisgICAgICAgIChiYXNlU2Nyb2xsVmlld0JhY2tncm91bmRDb2xvcik6CisgICAgICAgIChz
Y3JvbGxWaWV3QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF91cGRhdGVT
Y3JvbGxWaWV3QmFja2dyb3VuZF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Byb2Nlc3NEaWRF
eGl0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHA6CisgICAgICAg
IChFd2tWaWV3OjpyZXF1ZXN0Q29sb3JQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL0V3a1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlj
a2VyLmNwcDoKKyAgICAgICAgKEV3a0NvbG9yUGlja2VyOjpFd2tDb2xvclBpY2tlcik6CisgICAg
ICAgIChFd2tDb2xvclBpY2tlcjo6c2V0Q29sb3IpOgorICAgICAgICAoRXdrQ29sb3JQaWNrZXI6
OmNvbG9yKToKKyAgICAgICAgKGV3a19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KToKKyAgICAgICAg
KGV3a19jb2xvcl9waWNrZXJfY29sb3JfZ2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29sb3JfcGlja2VyX3ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpj
cmVhdGVDb2xvclBpY2tlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRDb2xvckNob29zZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYktpdENvbG9yQ2hvb3Nlcjo6V2ViS2l0Q29sb3JDaG9vc2VyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViS2l0Q29sb3JDaG9vc2VyOjpzaG93Q29sb3JQaWNrZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3Nlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXcubW06CisgICAgICAgIChleHRyYWN0VW5kZXJsaW5lcyk6CisgICAgICAgICgtW1dL
VmlldyB1bmRlcmxheUNvbG9yXSk6CisgICAgICAgICgtW1dLVmlldyBfcGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yXSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQ
cm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBh
c3RlYm9hcmRDb2xvcik6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
V2ViVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZUNvbG9yUGlja2Vy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
Q29sb3JQaWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlcjo6c2V0U2Vs
ZWN0ZWRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yUGlja2VyOjpzaG93Q29sb3JQ
aWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb2xvclBpY2tlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RWRpdENvbW1hbmRQcm94eTo6bmFtZUZvckVkaXRBY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VW5kZXJsYXlDb2xv
cik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvd0NvbG9yUGlja2VyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRDb2xvclBpY2tlckNvbG9yKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VDb2xvcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6dW5kZXJsYXlDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpiYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpCYWNraW5nU3RvcmU6OmluY29ycG9yYXRlVXBkYXRlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvZWZsL0lucHV0TWV0aG9kQ29udGV4dEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OklucHV0
TWV0aG9kQ29udGV4dEVmbDo6b25JTUZQcmVlZGl0U2VxdWVuY2VDaGFuZ2VkKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3
Q2xpZW50RWZsOjpzaG93Q29sb3JQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2Vi
Q29sb3JQaWNrZXJFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlckVmbDo6
V2ViQ29sb3JQaWNrZXJFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlckVmbDo6
c2hvd0NvbG9yUGlja2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJFZmw6OnNl
dFNlbGVjdGVkQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlckVmbDo6ZGlk
Q2hvb3NlQ29sb3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29sb3JQaWNrZXJFZmwu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJFZmw6OmNyZWF0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2VmbC9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHk6OnNldENv
bG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3RWZsOjpzZXRWaWV3QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0VmbDo6dmlld0JhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdFZmw6OmNyZWF0ZUNvbG9yUGlja2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZs
L1dlYlZpZXdFZmwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0lucHV0TWV0aG9kRmlsdGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5wdXRNZXRob2RGaWx0ZXI6OmhhbmRsZUtleWJvYXJk
RXZlbnRXaXRoQ29tcG9zaXRpb25SZXN1bHRzKToKKyAgICAgICAgKFdlYktpdDo6SW5wdXRNZXRo
b2RGaWx0ZXI6OnVwZGF0ZVByZWVkaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViQ29s
b3JQaWNrZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlckd0azo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJHdGs6OldlYkNvbG9yUGlja2Vy
R3RrKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJHdGs6OmRpZENob29zZUNvbG9y
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJHdGs6OnNob3dDb2xvclBpY2tlcik6
CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJDb2xvclBpY2tlckd0ay5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6ZGlkR2V0VGFwSGlnaGxpZ2h0R2VvbWV0cmllcyk6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OnJlbW92ZVN3aXBlU25hcHNob3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgX2RpZEdldFRhcEhpZ2hsaWdodEZvclJlcXVlc3Q6Y29sb3I6cXVhZHM6dG9wTGVmdFJhZGl1
czp0b3BSaWdodFJhZGl1czpib3R0b21MZWZ0UmFkaXVzOmJvdHRvbVJpZ2h0UmFkaXVzOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXMpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlQ29sb3JQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVD
b250cm9sbGVyLmg6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6YmFj
a2dyb3VuZENvbG9yRm9yQ3VycmVudFNuYXBzaG90KToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1
cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6cmVtb3ZlU3dpcGVTbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNo
b3Q6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6
YmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2Vy
TWFjLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJNYWM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbG9yUGlja2VyTWFjOjpXZWJDb2xvclBpY2tlck1hYyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbG9yUGlja2VyTWFjOjpzZXRTZWxlY3RlZENvbG9yKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29sb3JQaWNrZXJNYWM6OmRpZENob29zZUNvbG9yKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29sb3JQaWNrZXJNYWM6OnNob3dDb2xvclBpY2tlcik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwOgorICAgICAgICAod2Vi
a2l0V2ViUGFnZURpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9t
ZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21l
Q2xpZW50Ojp1bmRlcmxheUNvbG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50
OjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb2xvckNob29zZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb2xvckNob29zZXI6OldlYkNvbG9yQ2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbG9yQ2hvb3Nlcjo6ZGlkQ2hvb3NlQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xv
ckNob29zZXI6OnJlYXR0YWNoQ29sb3JDaG9vc2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29s
b3JDaG9vc2VyOjpzZXRTZWxlY3RlZENvbG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbG9yQ2hvb3Nlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJlY3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb2xvcik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6ZHJhd1JlY3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpnZXRE
b2N1bWVudEJhY2tncm91bmRDb2xvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnNldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6ZGlkQ2hvb3NlQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpz
ZXRDb21wb3NpdGlvbkZvclRlc3RpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFVuZGVybGF5Q29sb3IpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1bmRlcmxheUNvbG9yKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoaGlnaGxpZ2h0Q29s
b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2VuZFRhcEhpZ2hsaWdodEZvck5vZGVJZk5lY2Vzc2Fy
eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9u
UmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5p
bWF0aW9uUmVtb3RlLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBQW5pbWF0aW9uUmVt
b3RlOjpzZXRGcm9tVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBQW5pbWF0aW9u
UmVtb3RlOjpzZXRUb1ZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUFuaW1hdGlv
blJlbW90ZTo6c2V0VmFsdWVzKToKKyAgICAgICAgKFdlYktpdDo6YW5pbWF0aW9uVmFsdWVGcm9t
S2V5ZnJhbWVWYWx1ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OmJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6c2V0QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxh
eWVyUmVtb3RlOjpzZXRCb3JkZXJDb2xvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZzo6c2V0Qm9yZGVyQ29sb3Ip
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3Rl
VGlsZWRCYWNraW5nLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKwogMjAxNS0wOC0wOSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEZvbGxvdy11cCBuaXQgZml4ZXMgYWZ0ZXIgcjE4NzY5
MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggODk1M2ViYWI2OTg4Njg4MmJmYjFlODMxYjAyN2Y0ZTk5
ZDY3MTg1MC4uMTViNDI2YTRiMjQ3ODMxZGE2MTlkMThhZDQ1MjEwOWE5YWQ1NmU3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5jcHAKQEAgLTE4ODEsOCArMTg4MSw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3Q6OmNvbG9yVmFsdWUoaW50JiByLCBpbnQmIGcsIGludCYgYikgY29uc3QKICAgICBpZiAo
IWVxdWFsSWdub3JpbmdDYXNlKHR5cGUsICJjb2xvciIpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICAvLyBIVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZSBhbHdheXMgcmV0dXJucyBhIHN0cmluZyBwYXJz
ZWFibGUgYnkgQ29sb3IoKS4KLSAgICBDb2xvciBjb2xvcihpbnB1dC52YWx1ZSgpKTsKKyAgICAv
LyBIVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZSBhbHdheXMgcmV0dXJucyBhIHN0cmluZyBwYXJzZWFi
bGUgYnkgT3B0aW9uYWxSR0JBKCkuCisgICAgT3B0aW9uYWxSR0JBIGNvbG9yKGlucHV0LnZhbHVl
KCkpOwogICAgIHIgPSBjb2xvci5yZWQoKTsKICAgICBnID0gY29sb3IuZ3JlZW4oKTsKICAgICBi
ID0gY29sb3IuYmx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IGJmZTIwOTRmYWMwYzEyZmEwYjk3MzNlMDJiZjg0
NWE0MDM0ZTdjYWUuLjhlMTQ5MGU5NWFjMzYwNzY5N2M3OTQ2NDEzZTBhMjQ1ZWQ1YzY1YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZS5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRh
VGFibGUoKSBjb25zdAogICAgIAogICAgIC8vIFN0b3JlIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9m
IHRoZSB0YWJsZSB0byBjaGVjayBhZ2FpbnN0IGNlbGwncyBiYWNrZ3JvdW5kIGNvbG9ycy4KICAg
ICBjb25zdCBSZW5kZXJTdHlsZSYgdGFibGVTdHlsZSA9IHRhYmxlLnN0eWxlKCk7Ci0gICAgQ29s
b3IgdGFibGVCR0NvbG9yID0gdGFibGVTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ29sb3IpOworICAgIE9wdGlvbmFsUkdCQSB0YWJsZUJHQ29sb3IgPSB0
YWJsZVN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
cik7CiAgICAgCiAgICAgLy8gY2hlY2sgZW5vdWdoIG9mIHRoZSBjZWxscyB0byBmaW5kIGlmIHRo
ZSB0YWJsZSBtYXRjaGVzIG91ciBjcml0ZXJpYQogICAgIC8vIENyaXRlcmlhOiAKQEAgLTE5Miw3
ICsxOTIsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAog
ICAgIHVuc2lnbmVkIGNlbGxzV2l0aExlZnRCb3JkZXIgPSAwOwogICAgIHVuc2lnbmVkIGNlbGxz
V2l0aFJpZ2h0Qm9yZGVyID0gMDsKICAgICAKLSAgICBDb2xvciBhbHRlcm5hdGluZ1Jvd0NvbG9y
c1s1XTsKKyAgICBPcHRpb25hbFJHQkEgYWx0ZXJuYXRpbmdSb3dDb2xvcnNbNV07CiAgICAgaW50
IGFsdGVybmF0aW5nUm93Q29sb3JDb3VudCA9IDA7CiAgICAgCiAgICAgaW50IGhlYWRlcnNJbkZp
cnN0Q29sdW1uQ291bnQgPSAwOwpAQCAtMjUzLDcgKzI1Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0
eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNvbnN0CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8v
IElmIHRoZSBjZWxsIGhhcyBhIGRpZmZlcmVudCBjb2xvciBmcm9tIHRoZSB0YWJsZSBhbmQgdGhl
cmUgaXMgY2VsbCBzcGFjaW5nLAogICAgICAgICAgICAgLy8gdGhlbiBpdCBpcyBwcm9iYWJseSBh
IGRhdGEgdGFibGUgY2VsbCAoc3BhY2luZyBhbmQgY29sb3JzIHRha2UgdGhlIHBsYWNlIG9mIGJv
cmRlcnMpLgotICAgICAgICAgICAgQ29sb3IgY2VsbENvbG9yID0gcmVuZGVyU3R5bGUudmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAgICAg
IE9wdGlvbmFsUkdCQSBjZWxsQ29sb3IgPSByZW5kZXJTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29s
b3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogICAgICAgICAgICAgaWYgKHRhYmxlLmhC
b3JkZXJTcGFjaW5nKCkgPiAwICYmIHRhYmxlLnZCb3JkZXJTcGFjaW5nKCkgPiAwCiAgICAgICAg
ICAgICAgICAgJiYgdGFibGVCR0NvbG9yICE9IGNlbGxDb2xvciAmJiBjZWxsQ29sb3IuYWxwaGEo
KSAhPSAxKQogICAgICAgICAgICAgICAgICsrYmFja2dyb3VuZERpZmZlcmVuY2VDZWxsQ291bnQ7
CkBAIC0yNjgsNyArMjY4LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0YVRhYmxl
KCkgY29uc3QKICAgICAgICAgICAgICAgICBpZiAoIWlzPFJlbmRlclRhYmxlUm93PihyZW5kZXJS
b3cpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBjb25z
dCBSZW5kZXJTdHlsZSYgcm93UmVuZGVyU3R5bGUgPSByZW5kZXJSb3ctPnN0eWxlKCk7Ci0gICAg
ICAgICAgICAgICAgQ29sb3Igcm93Q29sb3IgPSByb3dSZW5kZXJTdHlsZS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOworICAgICAgICAgICAgICAgIE9w
dGlvbmFsUkdCQSByb3dDb2xvciA9IHJvd1JlbmRlclN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgICAgICAgICAgICAgYWx0ZXJuYXRp
bmdSb3dDb2xvcnNbYWx0ZXJuYXRpbmdSb3dDb2xvckNvdW50XSA9IHJvd0NvbG9yOwogICAgICAg
ICAgICAgICAgICsrYWx0ZXJuYXRpbmdSb3dDb2xvckNvdW50OwogICAgICAgICAgICAgfQpAQCAt
MzAwLDcgKzMwMCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNv
bnN0CiAKICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhbiBhbHRlcm5hdGluZyByb3cgYmFja2dy
b3VuZCBjb2xvciBpbmRpY2F0aW5nIGEgemVicmEgc3RyaXBlZCBzdHlsZSBwYXR0ZXJuLgogICAg
IGlmIChhbHRlcm5hdGluZ1Jvd0NvbG9yQ291bnQgPiAyKSB7Ci0gICAgICAgIENvbG9yIGZpcnN0
Q29sb3IgPSBhbHRlcm5hdGluZ1Jvd0NvbG9yc1swXTsKKyAgICAgICAgT3B0aW9uYWxSR0JBIGZp
cnN0Q29sb3IgPSBhbHRlcm5hdGluZ1Jvd0NvbG9yc1swXTsKICAgICAgICAgZm9yIChpbnQgayA9
IDE7IGsgPCBhbHRlcm5hdGluZ1Jvd0NvbG9yQ291bnQ7IGsrKykgewogICAgICAgICAgICAgLy8g
SWYgYW4gb2RkIHJvdyB3YXMgdGhlIHNhbWUgY29sb3IgYXMgdGhlIGZpcnN0IHJvdywgaXRzIG5v
dCBhbHRlcm5hdGluZy4KICAgICAgICAgICAgIGlmIChrICUgMiA9PSAxICYmIGFsdGVybmF0aW5n
Um93Q29sb3JzW2tdID09IGZpcnN0Q29sb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4
dC5jcHAKaW5kZXggZWE2OGIwMzBlNDU4MjM3OTgxOGQwM2JlZGY0NGNmM2Q2ZTA1YTU1Zi4uMmQx
M2UwODkxZTNlYzk3YmE2YmNlYWJhODFmYmU0YTM3MDJhOTk2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVJbnRlcmZhY2VUZXh0LmNwcApAQCAtOTAsMTMgKzkwLDEzIEBAIHN0YXRpYyBBdGtBdHRyaWJ1
dGVTZXQqIGdldEF0dHJpYnV0ZVNldEZvckFjY2Vzc2liaWxpdHlPYmplY3QoY29uc3QgQWNjZXNz
aWJpbGl0CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gYnVmZmVyKGdfc3RyZHVwX3ByaW50ZigiJWki
LCBzdHlsZS0+Zm9udFNpemUoKSkpOwogICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0
KHJlc3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJfU0laRSks
IGJ1ZmZlci5nZXQoKSk7CiAKLSAgICBDb2xvciBiZ0NvbG9yID0gc3R5bGUtPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CisgICAgT3B0aW9uYWxSR0JB
IGJnQ29sb3IgPSBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yKTsKICAgICBpZiAoYmdDb2xvci5pc1ZhbGlkKCkpIHsKICAgICAgICAgYnVmZmVy
LnJlc2V0KGdfc3RyZHVwX3ByaW50ZigiJWksJWksJWkiLCBiZ0NvbG9yLnJlZCgpLCBiZ0NvbG9y
LmdyZWVuKCksIGJnQ29sb3IuYmx1ZSgpKSk7CiAgICAgICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0
cmlidXRlU2V0KHJlc3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FU
VFJfQkdfQ09MT1IpLCBidWZmZXIuZ2V0KCkpOwogICAgIH0KIAotICAgIENvbG9yIGZnQ29sb3Ig
PSBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpOworICAgIE9w
dGlvbmFsUkdCQSBmZ0NvbG9yID0gc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9w
ZXJ0eUNvbG9yKTsKICAgICBpZiAoZmdDb2xvci5pc1ZhbGlkKCkpIHsKICAgICAgICAgYnVmZmVy
LnJlc2V0KGdfc3RyZHVwX3ByaW50ZigiJWksJWksJWkiLCBmZ0NvbG9yLnJlZCgpLCBmZ0NvbG9y
LmdyZWVuKCksIGZnQ29sb3IuYmx1ZSgpKSk7CiAgICAgICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0
cmlidXRlU2V0KHJlc3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FU
VFJfRkdfQ09MT1IpLCBidWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3Bw
CmluZGV4IDMxMjgxNjczODM3MTIwNzlkODYyN2Q1MWIyYTRlNzJmNThiMDcyN2QuLjlmMDk2N2Jk
ZjNmYjA1ZWM1NjU3YTg4MDVlOWZlNzUzOGNlODJmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBl
ckF0ay5jcHAKQEAgLTExNDYsNyArMTE0Niw3IEBAIHN0YXRpYyBndWludDE2IGdldEludGVyZmFj
ZU1hc2tGcm9tT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QpCiAgICAgICAg
IGludGVyZmFjZU1hc2sgfD0gMSA8PCBXQUlWYWx1ZTsKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBF
X0NPTE9SKQotICAgIC8vIENvbG9yIHR5cGUuCisgICAgLy8gT3B0aW9uYWxSR0JBIHR5cGUuCiAg
ICAgaWYgKHJvbGUgPT0gQ29sb3JXZWxsUm9sZSkKICAgICAgICAgaW50ZXJmYWNlTWFzayB8PSAx
IDw8IFdBSVRleHQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KaW5kZXggNWI1ZWYzOTgwYmJhNmVmZDUxOTg3ZmVkZTliOGE3ZTdjN2QwMzE0MS4uNzE1NjI2
MWNjMTliNTUwYmQ4MmU1ZTBlNmI4NzQ1MWU3M2VhZTA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTE4NDgsNyArMTg0OCw3IEBAIHN0YXRpYyB2b2lkIEFY
QXR0cmlidXRlU3RyaW5nU2V0U3R5bGUoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0
cmluZywgUmVuCiAgICAgICAgICAgICAgICAgCiAgICAgaW50IGRlY29yID0gc3R5bGUudGV4dERl
Y29yYXRpb25zSW5FZmZlY3QoKTsKICAgICBpZiAoKGRlY29yICYgKFRleHREZWNvcmF0aW9uVW5k
ZXJsaW5lIHwgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCkpICE9IDApIHsKLSAgICAgICAgQ29s
b3IgdW5kZXJsaW5lQ29sb3IsIG92ZXJsaW5lQ29sb3IsIGxpbmV0aHJvdWdoQ29sb3I7CisgICAg
ICAgIE9wdGlvbmFsUkdCQSB1bmRlcmxpbmVDb2xvciwgb3ZlcmxpbmVDb2xvciwgbGluZXRocm91
Z2hDb2xvcjsKICAgICAgICAgVGV4dERlY29yYXRpb25TdHlsZSB1bmRlcmxpbmVTdHlsZSwgb3Zl
cmxpbmVTdHlsZSwgbGluZXRocm91Z2hTdHlsZTsKICAgICAgICAgcmVuZGVyZXItPmdldFRleHRE
ZWNvcmF0aW9uQ29sb3JzQW5kU3R5bGVzKGRlY29yLCB1bmRlcmxpbmVDb2xvciwgb3ZlcmxpbmVD
b2xvciwgbGluZXRocm91Z2hDb2xvciwgdW5kZXJsaW5lU3R5bGUsIG92ZXJsaW5lU3R5bGUsIGxp
bmV0aHJvdWdoU3R5bGUpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW0KaW5kZXggODM1NGVlNTU4YTYyODY0MmRlMzUyMzgzYmIzOGE4NWIxOWI2ZmMzMi4u
NDBjYjI3NTZlNDViNDk1NTBkZjJiYjExNzQ1NmU3ZDgyMmY5YzcyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTkxMSw3ICs5MTEsNyBAQCBzdGF0aWMgdm9p
ZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFN0eWxlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0
dHJTdHJpbmcsIFJlbgogICAgIAogICAgIGlmICgoZGVjb3IgJiAoVGV4dERlY29yYXRpb25VbmRl
cmxpbmUgfCBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoKSkgIT0gMCkgewogICAgICAgICAvLyBG
SVhNRTogU2hvdWxkIHRoZSB1bmRlcmxpbmUgc3R5bGUgYmUgcmVwb3J0ZWQgaGVyZT8KLSAgICAg
ICAgQ29sb3IgdW5kZXJsaW5lQ29sb3IsIG92ZXJsaW5lQ29sb3IsIGxpbmV0aHJvdWdoQ29sb3I7
CisgICAgICAgIE9wdGlvbmFsUkdCQSB1bmRlcmxpbmVDb2xvciwgb3ZlcmxpbmVDb2xvciwgbGlu
ZXRocm91Z2hDb2xvcjsKICAgICAgICAgVGV4dERlY29yYXRpb25TdHlsZSB1bmRlcmxpbmVTdHls
ZSwgb3ZlcmxpbmVTdHlsZSwgbGluZXRocm91Z2hTdHlsZTsKICAgICAgICAgcmVuZGVyZXItPmdl
dFRleHREZWNvcmF0aW9uQ29sb3JzQW5kU3R5bGVzKGRlY29yLCB1bmRlcmxpbmVDb2xvciwgb3Zl
cmxpbmVDb2xvciwgbGluZXRocm91Z2hDb2xvciwgdW5kZXJsaW5lU3R5bGUsIG92ZXJsaW5lU3R5
bGUsIGxpbmV0aHJvdWdoU3R5bGUpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggMmVjNDQ0MjVhYzA1Y2M0
ODE5MGI2OTBkNzdkOTQzMGE2OTllYzIxMC4uNmVmOWYyNmZhYjk3NjYxYzg3MGZjNWIzMzE3Y2Ri
MzI3MDhiMWFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTcyNiw3ICs3MjYsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gcG9zaXRpb25PZmZzZXRWYWx1ZShSZW5kZXJTdHlsZSYgc3R5bGUsIENTU1Byb3Bl
cnR5SQogICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVBdXRvKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6Y3VycmVudENvbG9yT3JWYWxpZENvbG9yKFJlbmRlclN0eWxlKiBzdHls
ZSwgY29uc3QgQ29sb3ImIGNvbG9yKSBjb25zdAorUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VycmVudENvbG9yT3JWYWxpZENvbG9yKFJlbmRl
clN0eWxlKiBzdHlsZSwgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvcikgY29uc3QKIHsKICAgICAv
LyBUaGlzIGZ1bmN0aW9uIGRvZXMgTk9UIGxvb2sgYXQgdmlzaXRlZCBpbmZvcm1hdGlvbiwgc28g
dGhhdCBjb21wdXRlZCBzdHlsZSBkb2Vzbid0IGV4cG9zZSB0aGF0LgogICAgIGlmICghY29sb3Iu
aXNWYWxpZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5oCmluZGV4IGU5NjZkMjQzYWYyYmE4MDNjZWQ4ZGVmZDZhYmEwOTAyNDQ1Njc0MzYu
LjA2MGRmMmI4YzlkNjkwMjAxMGNkMWRiMTMzYmZhZTNkNzcxZmNhZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTMwLDcgKzMw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKIGNs
YXNzIENTU1ZhbHVlTGlzdDsKLWNsYXNzIENvbG9yOworY2xhc3MgT3B0aW9uYWxSR0JBOwogY2xh
c3MgRmlsdGVyT3BlcmF0aW9uczsKIGNsYXNzIE11dGFibGVTdHlsZVByb3BlcnRpZXM7CiBjbGFz
cyBOb2RlOwpAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8U1ZHUGFp
bnQ+IGFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFBhc3NSZWZQdHI8U1ZHUGFpbnQ+LCBS
ZW5kZXJTdHlsZSopIGNvbnN0OwogCiAgICAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JT
aGFkb3coY29uc3QgU2hhZG93RGF0YSosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFJlbmRlclN0eWxl
JiwgQWRqdXN0UGl4ZWxWYWx1ZXNGb3JDb21wdXRlZFN0eWxlID0gQWRqdXN0UGl4ZWxWYWx1ZXMp
OwotICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGN1cnJlbnRDb2xvck9yVmFsaWRD
b2xvcihSZW5kZXJTdHlsZSosIGNvbnN0IENvbG9yJikgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKFJlbmRlclN0eWxlKiwg
Y29uc3QgT3B0aW9uYWxSR0JBJikgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlz
dD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxl
UHJvcGVydHlTaG9ydGhhbmQmKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4g
Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5
U2hvcnRoYW5kJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
ZGllbnRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAK
aW5kZXggNWI0MzFlZmFlMDNiNWZlYWI4MWMwMWM3ZTk3NDY2YmZkOGU2YzE4MS4uNThhOGZhNDAx
Y2IzY2E0ODVhNjdiYzU5ZjEzN2JhMjM4MWFiNGMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFkaWVudFZhbHVlLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIENTU0dyYWRpZW50VmFsdWU6
OnNvcnRTdG9wc0lmTmVlZGVkKCkKIH0KIAogc3RydWN0IEdyYWRpZW50U3RvcCB7Ci0gICAgQ29s
b3IgY29sb3I7CisgICAgT3B0aW9uYWxSR0JBIGNvbG9yOwogICAgIGZsb2F0IG9mZnNldDsKICAg
ICBib29sIHNwZWNpZmllZDsKICAgICBib29sIGlzTWlkcG9pbnQ7CkBAIC0xNDAsMTQgKzE0MCwx
NCBAQCBzdGF0aWMgaW5saW5lIGludCBpbnRlcnBvbGF0ZShpbnQgbWluLCBpbnQgbWF4LCBmbG9h
dCBwb3NpdGlvbikKICAgICByZXR1cm4gbWluICsgc3RhdGljX2Nhc3Q8aW50Pihwb3NpdGlvbiAq
IChtYXggLSBtaW4pKTsKIH0KIAotc3RhdGljIGlubGluZSBDb2xvciBpbnRlcnBvbGF0ZShDb2xv
ciBjb2xvcjEsIENvbG9yIGNvbG9yMiwgZmxvYXQgcG9zaXRpb24pCitzdGF0aWMgaW5saW5lIE9w
dGlvbmFsUkdCQSBpbnRlcnBvbGF0ZShPcHRpb25hbFJHQkEgY29sb3IxLCBPcHRpb25hbFJHQkEg
Y29sb3IyLCBmbG9hdCBwb3NpdGlvbikKIHsKICAgICBpbnQgcmVkID0gaW50ZXJwb2xhdGUoY29s
b3IxLnJlZCgpLCBjb2xvcjIucmVkKCksIHBvc2l0aW9uKTsKICAgICBpbnQgZ3JlZW4gPSBpbnRl
cnBvbGF0ZShjb2xvcjEuZ3JlZW4oKSwgY29sb3IyLmdyZWVuKCksIHBvc2l0aW9uKTsKICAgICBp
bnQgYmx1ZSA9IGludGVycG9sYXRlKGNvbG9yMS5ibHVlKCksIGNvbG9yMi5ibHVlKCksIHBvc2l0
aW9uKTsKICAgICBpbnQgYWxwaGEgPSBpbnRlcnBvbGF0ZShjb2xvcjEuYWxwaGEoKSwgY29sb3Iy
LmFscGhhKCksIHBvc2l0aW9uKTsKIAotICAgIHJldHVybiBDb2xvcihyZWQsIGdyZWVuLCBibHVl
LCBhbHBoYSk7CisgICAgcmV0dXJuIE9wdGlvbmFsUkdCQShyZWQsIGdyZWVuLCBibHVlLCBhbHBo
YSk7CiB9CiAKIHZvaWQgQ1NTR3JhZGllbnRWYWx1ZTo6YWRkU3RvcHMoR3JhZGllbnQmIGdyYWRp
ZW50LCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgZmxv
YXQgbWF4TGVuZ3RoRm9yUmVwZWF0KQpAQCAtMjkyLDggKzI5Miw4IEBAIHZvaWQgQ1NTR3JhZGll
bnRWYWx1ZTo6YWRkU3RvcHMoR3JhZGllbnQmIGdyYWRpZW50LCBjb25zdCBDU1NUb0xlbmd0aENv
bnZlcnNpb25ECiAKICAgICAgICAgLy8gRmluZCBwcmV2aW91cyBhbmQgbmV4dCBjb2xvciBzbyB3
ZSBrbm93IHdoYXQgdG8gaW50ZXJwb2xhdGUgYmV0d2Vlbi4KICAgICAgICAgLy8gV2UgYWxyZWFk
eSBrbm93IHRoZXkgaGF2ZSBhIGNvbG9yIHNpbmNlIHdlIGNoZWNrZWQgZm9yIHRoYXQgZWFybGll
ci4KLSAgICAgICAgQ29sb3IgY29sb3IxID0gc3RvcHNbeCAtIDFdLmNvbG9yOwotICAgICAgICBD
b2xvciBjb2xvcjIgPSBzdG9wc1t4ICsgMV0uY29sb3I7CisgICAgICAgIE9wdGlvbmFsUkdCQSBj
b2xvcjEgPSBzdG9wc1t4IC0gMV0uY29sb3I7CisgICAgICAgIE9wdGlvbmFsUkdCQSBjb2xvcjIg
PSBzdG9wc1t4ICsgMV0uY29sb3I7CiAgICAgICAgIC8vIExpa2V3aXNlIGZpbmQgdGhlIHBvc2l0
aW9uIG9mIHByZXZpb3VzIGFuZCBuZXh0IGNvbG9yIHN0b3AuCiAgICAgICAgIGZsb2F0IG9mZnNl
dDEgPSBzdG9wc1t4IC0gMV0ub2Zmc2V0OwogICAgICAgICBmbG9hdCBvZmZzZXQyID0gc3RvcHNb
eCArIDFdLm9mZnNldDsKQEAgLTQ2Niw3ICs0NjYsNyBAQCB2b2lkIENTU0dyYWRpZW50VmFsdWU6
OmFkZFN0b3BzKEdyYWRpZW50JiBncmFkaWVudCwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RAogCiAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGludGVyU3RvcFByb3BvcnRpb24gPSAtcHJl
dk9mZnNldCAvIChuZXh0T2Zmc2V0IC0gcHJldk9mZnNldCk7CiAgICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiB3aGVuIHdlIGludGVycG9sYXRlIGdyYWRpZW50cyB1c2luZyBwcmVtdWx0aXBs
aWVkIGNvbG9ycywgdGhpcyBzaG91bGQgZG8gcHJlbXVsdGlwbGljYXRpb24uCi0gICAgICAgICAg
ICAgICAgICAgIENvbG9yIGJsZW5kZWRDb2xvciA9IGJsZW5kKHN0b3BzW2ZpcnN0WmVyb09yR3Jl
YXRlckluZGV4IC0gMV0uY29sb3IsIHN0b3BzW2ZpcnN0WmVyb09yR3JlYXRlckluZGV4XS5jb2xv
ciwgaW50ZXJTdG9wUHJvcG9ydGlvbik7CisgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsUkdC
QSBibGVuZGVkQ29sb3IgPSBibGVuZChzdG9wc1tmaXJzdFplcm9PckdyZWF0ZXJJbmRleCAtIDFd
LmNvbG9yLCBzdG9wc1tmaXJzdFplcm9PckdyZWF0ZXJJbmRleF0uY29sb3IsIGludGVyU3RvcFBy
b3BvcnRpb24pOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIENsYW1wIHRoZSBwb3NpdGlvbnMg
dG8gMCBhbmQgc2V0IHRoZSBjb2xvci4KICAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBmaXJzdFplcm9PckdyZWF0ZXJJbmRleDsgKytpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYWRpZW50VmFsdWUuaAppbmRleCBkYTkxMWEyMjAzOGQ2NDVjMzlkNzI2NmMzZTM0NzZl
YmVjNTRmNjQ5Li4xZTQ3M2YzYzA4Y2I2N2IyMzc2ZGQ5OGEyNzUyNDUyYTU5NjAxZjZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKQEAgLTUwLDcgKzUwLDcgQEAgZW51bSBD
U1NHcmFkaWVudFJlcGVhdCB7IE5vblJlcGVhdGluZywgUmVwZWF0aW5nIH07CiBzdHJ1Y3QgQ1NT
R3JhZGllbnRDb2xvclN0b3AgewogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9wb3Np
dGlvbjsgLy8gcGVyY2VudGFnZSBvciBsZW5ndGgKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IG1fY29sb3I7Ci0gICAgQ29sb3IgbV9yZXNvbHZlZENvbG9yOworICAgIE9wdGlvbmFsUkdC
QSBtX3Jlc29sdmVkQ29sb3I7CiAgICAgYm9vbCBtX2NvbG9ySXNEZXJpdmVkRnJvbUVsZW1lbnQg
PSBmYWxzZTsKICAgICBib29sIGlzTWlkcG9pbnQgPSBmYWxzZTsKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQ1NTR3JhZGllbnRDb2xvclN0b3AmIG90aGVyKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcAppbmRleCBjNTdmYTAzMjMwYWIxN2VlNTIzZmY0MWZiZjI0NzNmYTBhYmM0YTA0
Li5kOWUzZjE3MDcxZWE1OTc0MjkwY2U3NDVkMTQzMDU5ODMyMWU2ZDQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcApAQCAtMTQwNCw3ICsxNDA0LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNl
U3lzdGVtQ29sb3IoUkdCQTMyJiBjb2xvciwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIERvY3VtZW50
KgogICAgIGlmICghdmFsaWRQcmltaXRpdmVWYWx1ZUNvbG9yKGlkKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgQ29sb3IgcGFyc2VkQ29sb3IgPSBkb2N1bWVudC0+cGFnZSgpLT50aGVt
ZSgpLnN5c3RlbUNvbG9yKGlkKTsKKyAgICBPcHRpb25hbFJHQkEgcGFyc2VkQ29sb3IgPSBkb2N1
bWVudC0+cGFnZSgpLT50aGVtZSgpLnN5c3RlbUNvbG9yKGlkKTsKICAgICBpZiAoIXBhcnNlZENv
bG9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zNDk4LDcgKzM0OTgs
NyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGaWxsU2hvcnRoYW5kKENTU1Byb3BlcnR5SUQgcHJv
cElkLCBjb25zdCBDU1NQcm9wZXJ0eUlEKiBwcgogICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5l
eHQoKTsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsK
ICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRDb2xvciAmJiBwYXJzZWRQcm9wZXJ0eVtpXSkKLSAgICAgICAgICAgICAgICAgICAgLy8gQ29s
b3IgaXMgbm90IGFsbG93ZWQgZXhjZXB0IGFzIHRoZSBsYXN0IGl0ZW0gaW4gYSBsaXN0IGZvciBi
YWNrZ3JvdW5kcy4KKyAgICAgICAgICAgICAgICAgICAgLy8gT3B0aW9uYWxSR0JBIGlzIG5vdCBh
bGxvd2VkIGV4Y2VwdCBhcyB0aGUgbGFzdCBpdGVtIGluIGEgbGlzdCBmb3IgYmFja2dyb3VuZHMu
CiAgICAgICAgICAgICAgICAgICAgIC8vIFJlamVjdCB0aGUgZW50aXJlIHByb3BlcnR5LgogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTczMDMsMTAgKzczMDMsMTAgQEAg
c3RhdGljIGlubGluZSBib29sIGZhc3RQYXJzZUNvbG9ySW50ZXJuYWwoUkdCQTMyJiByZ2IsIGNv
bnN0IENoYXJhY3RlclR5cGUqIGNoYXIKICAgICAKICAgICBpZiAoIXN0cmljdCAmJiBsZW5ndGgg
Pj0gMykgewogICAgICAgICBpZiAoY2hhcmFjdGVyc1swXSA9PSAnIycpIHsKLSAgICAgICAgICAg
IGlmIChDb2xvcjo6cGFyc2VIZXhDb2xvcihjaGFyYWN0ZXJzICsgMSwgbGVuZ3RoIC0gMSwgcmdi
KSkKKyAgICAgICAgICAgIGlmIChPcHRpb25hbFJHQkE6OnBhcnNlSGV4Q29sb3IoY2hhcmFjdGVy
cyArIDEsIGxlbmd0aCAtIDEsIHJnYikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoQ29sb3I6OnBhcnNlSGV4Q29sb3IoY2hh
cmFjdGVycywgbGVuZ3RoLCByZ2IpKQorICAgICAgICAgICAgaWYgKE9wdGlvbmFsUkdCQTo6cGFy
c2VIZXhDb2xvcihjaGFyYWN0ZXJzLCBsZW5ndGgsIHJnYikpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC03Mzc0LDcgKzczNzQsNyBAQCBib29sIENT
U1BhcnNlcjo6ZmFzdFBhcnNlQ29sb3IoUkdCQTMyJiByZ2IsIGNvbnN0IFN0cmluZ1R5cGUmIG5h
bWUsIGJvb2wgc3RyaWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIFRyeSBuYW1l
ZCBjb2xvcnMuCi0gICAgQ29sb3IgdGM7CisgICAgT3B0aW9uYWxSR0JBIHRjOwogICAgIHRjLnNl
dE5hbWVkQ29sb3IobmFtZSk7CiAgICAgaWYgKHRjLmlzVmFsaWQoKSkgewogICAgICAgICByZ2Ig
PSB0Yy5yZ2IoKTsKQEAgLTc0OTYsNyArNzQ5Niw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUhT
TFBhcmFtZXRlcnMoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlLCBkb3VibGUqIGNvbG9yQXJyYXksIGJv
CiAKIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VDb2xvcihD
U1NQYXJzZXJWYWx1ZSogdmFsdWUpCiB7Ci0gICAgUkdCQTMyIGMgPSBDb2xvcjo6dHJhbnNwYXJl
bnQ7CisgICAgUkdCQTMyIGMgPSBPcHRpb25hbFJHQkE6OnRyYW5zcGFyZW50OwogICAgIGlmICgh
cGFyc2VDb2xvckZyb21WYWx1ZSh2YWx1ZSA/ICp2YWx1ZSA6ICptX3ZhbHVlTGlzdC0+Y3VycmVu
dCgpLCBjKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bCgpLmNyZWF0ZUNvbG9yVmFsdWUoYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmNwcAppbmRleCA0ZTYxNzNkYjNlODhhYmE0ZmJjMjU4M2I3ZTAyYzM1ODIyNjRkZmZiLi4z
NmI4MTljZWY3OWI5MDAwYTk4OWVkODQ5M2VjMDI2ZTg5M2UwZmVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTEwOTcsOCArMTA5Nyw4IEBAIEFMV0FZU19J
TkxJTkUgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpmb3JtYXROdW1iZXJGb3JDdXN0b21DU1NU
ZXh0KCkgY29uc3QKICAgICBjYXNlIENTU19QQVJTRVJfSEVYQ09MT1I6IHsKICAgICAgICAgUkdC
QTMyIHJnYkNvbG9yID0gbV92YWx1ZS5yZ2Jjb2xvcjsKICAgICAgICAgaWYgKG1fcHJpbWl0aXZl
VW5pdFR5cGUgPT0gQ1NTX1BBUlNFUl9IRVhDT0xPUikKLSAgICAgICAgICAgIENvbG9yOjpwYXJz
ZUhleENvbG9yKG1fdmFsdWUuc3RyaW5nLCByZ2JDb2xvcik7Ci0gICAgICAgIENvbG9yIGNvbG9y
KHJnYkNvbG9yKTsKKyAgICAgICAgICAgIE9wdGlvbmFsUkdCQTo6cGFyc2VIZXhDb2xvcihtX3Zh
bHVlLnN0cmluZywgcmdiQ29sb3IpOworICAgICAgICBPcHRpb25hbFJHQkEgY29sb3IocmdiQ29s
b3IpOwogCiAgICAgICAgIFZlY3RvcjxMQ2hhcj4gcmVzdWx0OwogICAgICAgICByZXN1bHQucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eSgzMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVQb29sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCmlu
ZGV4IGFlM2UwZmQ0YWViNjBkNmRjODg2ZGM5MWI5YjAwNGM1ZjVjNDkxZGEuLmMyMzZjYTNhZTZi
ZGUxY2RjZWE1OWZjMzFmZTU5NTViZDgxYjhkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBv
b2wuY3BwCkBAIC00NCw5ICs0NCw5IEBAIENTU1ZhbHVlUG9vbDo6Q1NTVmFsdWVQb29sKCkKICAg
ICA6IG1faW5oZXJpdGVkVmFsdWUoQ1NTSW5oZXJpdGVkVmFsdWU6OmNyZWF0ZSgpKQogICAgICwg
bV9pbXBsaWNpdEluaXRpYWxWYWx1ZShDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUltcGxpY2l0KCkp
CiAgICAgLCBtX2V4cGxpY2l0SW5pdGlhbFZhbHVlKENTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlRXhw
bGljaXQoKSkKLSAgICAsIG1fY29sb3JUcmFuc3BhcmVudChDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KSkKLSAgICAsIG1fY29sb3JXaGl0ZShDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlQ29sb3IoQ29sb3I6OndoaXRlKSkKLSAgICAsIG1fY29sb3JCbGFj
ayhDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29sb3IoQ29sb3I6OmJsYWNrKSkKKyAgICAsIG1f
Y29sb3JUcmFuc3BhcmVudChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29sb3IoT3B0aW9uYWxS
R0JBOjp0cmFuc3BhcmVudCkpCisgICAgLCBtX2NvbG9yV2hpdGUoQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZUNvbG9yKE9wdGlvbmFsUkdCQTo6d2hpdGUpKQorICAgICwgbV9jb2xvckJsYWNrKENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xvcihPcHRpb25hbFJHQkE6OmJsYWNrKSkKIHsKIH0K
IApAQCAtNjksMTIgKzY5LDEyIEBAIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29s
OjpjcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTUHJvcGVydHlJRCBpZGVudCkKIFJlZjxDU1NQcmlt
aXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVDb2xvclZhbHVlKHVuc2lnbmVkIHJnYlZh
bHVlKQogewogICAgIC8vIFRoZXNlIGFyZSB0aGUgZW1wdHkgYW5kIGRlbGV0ZWQgdmFsdWVzIG9m
IHRoZSBoYXNoIHRhYmxlLgotICAgIGlmIChyZ2JWYWx1ZSA9PSBDb2xvcjo6dHJhbnNwYXJlbnQp
CisgICAgaWYgKHJnYlZhbHVlID09IE9wdGlvbmFsUkdCQTo6dHJhbnNwYXJlbnQpCiAgICAgICAg
IHJldHVybiBtX2NvbG9yVHJhbnNwYXJlbnQuY29weVJlZigpOwotICAgIGlmIChyZ2JWYWx1ZSA9
PSBDb2xvcjo6d2hpdGUpCisgICAgaWYgKHJnYlZhbHVlID09IE9wdGlvbmFsUkdCQTo6d2hpdGUp
CiAgICAgICAgIHJldHVybiBtX2NvbG9yV2hpdGUuY29weVJlZigpOwogICAgIC8vIEp1c3QgYmVj
YXVzZSBpdCBpcyBjb21tb24uCi0gICAgaWYgKHJnYlZhbHVlID09IENvbG9yOjpibGFjaykKKyAg
ICBpZiAocmdiVmFsdWUgPT0gT3B0aW9uYWxSR0JBOjpibGFjaykKICAgICAgICAgcmV0dXJuIG1f
Y29sb3JCbGFjay5jb3B5UmVmKCk7CiAKICAgICAvLyBSZW1vdmUgb25lIGVudHJ5IGF0IHJhbmRv
bSBpZiB0aGUgY2FjaGUgZ3Jvd3MgdG9vIGxhcmdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1JHQkNvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUkdCQ29sb3IuaAppbmRleCAx
YWY3ZWI3NWQxY2YwYzQwYWU0ODIzYjE5NGRhYTViOTY4ZTQyNmIzLi45NTQ4ODJhMzkyN2UyMThm
M2FjZjA4YTYwMjU0NjBhY2NjNjlmMWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
UkdCQ29sb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUkdCQ29sb3IuaApAQCAtNDMsNyAr
NDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGJsdWUoKTsKICAgICAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
YWxwaGEoKTsKIAotICAgICAgICBDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKG1f
cmdiQ29sb3IpOyB9CisgICAgICAgIE9wdGlvbmFsUkdCQSBjb2xvcigpIGNvbnN0IHsgcmV0dXJu
IE9wdGlvbmFsUkdCQShtX3JnYkNvbG9yKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUkdC
Q29sb3IodW5zaWduZWQgcmdiQ29sb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U1ZHQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwCmlu
ZGV4IDkwNjNhOTAzNjRhZjYzNjQwYWNlOWE1OWJhMTZmMWFiOWI5MTQwZDAuLjcxOWQ0MzNkYzJi
NDlmZjU0MWYzZTc0NWQ3NWQ0NTgzOWNkODQ2NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TVkdDU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJz
ZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU1ZHVmFsdWUo
Q1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgZWxzZSBp
ZiAoaXNWYWxpZFN5c3RlbUNvbnRyb2xDb2xvclZhbHVlKGlkKSB8fCBpZCA9PSBDU1NWYWx1ZU1l
bnUpCiAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBTVkdQYWludDo6Y3JlYXRlQ29sb3Io
UmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5zeXN0ZW1Db2xvcihpZCkpOwogICAgICAgICAg
ICAgZWxzZSBpZiAodmFsdWVXaXRoQ2FsY3VsYXRpb24udmFsdWUoKS51bml0ID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfVVJJKSB7Ci0gICAgICAgICAgICAgICAgUkdCQTMyIGMgPSBDb2xvcjo6
dHJhbnNwYXJlbnQ7CisgICAgICAgICAgICAgICAgUkdCQTMyIGMgPSBPcHRpb25hbFJHQkE6OnRy
YW5zcGFyZW50OwogICAgICAgICAgICAgICAgIGlmIChtX3ZhbHVlTGlzdC0+bmV4dCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZUNvbG9yRnJvbVZhbHVlKCptX3ZhbHVlTGlzdC0+
Y3VycmVudCgpLCBjKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gU1ZH
UGFpbnQ6OmNyZWF0ZVVSSUFuZENvbG9yKHZhbHVlV2l0aENhbGN1bGF0aW9uLnZhbHVlKCkuc3Ry
aW5nLCBjKTsKQEAgLTM2NiwxOCArMzY2LDE4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1Bh
cnNlcjo6cGFyc2VTVkdTdHJva2VEYXNoYXJyYXkoKQogCiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NQYXJzZXI6OnBhcnNlU1ZHUGFpbnQoKQogewotICAgIFJHQkEzMiBjID0gQ29sb3I6OnRyYW5z
cGFyZW50OworICAgIFJHQkEzMiBjID0gT3B0aW9uYWxSR0JBOjp0cmFuc3BhcmVudDsKICAgICBp
ZiAoIXBhcnNlQ29sb3JGcm9tVmFsdWUoKm1fdmFsdWVMaXN0LT5jdXJyZW50KCksIGMpKQogICAg
ICAgICByZXR1cm4gU1ZHUGFpbnQ6OmNyZWF0ZVVua25vd24oKTsKLSAgICByZXR1cm4gU1ZHUGFp
bnQ6OmNyZWF0ZUNvbG9yKENvbG9yKGMpKTsKKyAgICByZXR1cm4gU1ZHUGFpbnQ6OmNyZWF0ZUNv
bG9yKE9wdGlvbmFsUkdCQShjKSk7CiB9CiAKIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNl
cjo6cGFyc2VTVkdDb2xvcigpCiB7Ci0gICAgUkdCQTMyIGMgPSBDb2xvcjo6dHJhbnNwYXJlbnQ7
CisgICAgUkdCQTMyIGMgPSBPcHRpb25hbFJHQkE6OnRyYW5zcGFyZW50OwogICAgIGlmICghcGFy
c2VDb2xvckZyb21WYWx1ZSgqbV92YWx1ZUxpc3QtPmN1cnJlbnQoKSwgYykpCiAgICAgICAgIHJl
dHVybiAwOwotICAgIHJldHVybiBTVkdDb2xvcjo6Y3JlYXRlRnJvbUNvbG9yKENvbG9yKGMpKTsK
KyAgICByZXR1cm4gU1ZHQ29sb3I6OmNyZWF0ZUZyb21Db2xvcihPcHRpb25hbFJHQkEoYykpOwog
fQogCiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlUGFpbnRPcmRlcigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggZWIwM2ZiMDVk
ZWQ2MWUyOGJiN2JlN2FlNzJmYjE5MmIyNjdiMjA0YS4uYzMyZjE1NTcxYTUxZDMwNjhlY2FlYzI1
NzNkYzAxMDZlZmFmYzY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVp
bGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252
ZXJ0ZXIuaApAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBjb252
ZXJ0VG91Y2hDYWxsb3V0KFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogI2VuZGlmCiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBzdGF0aWMgQ29sb3IgY29udmVydFRhcEhpZ2hsaWdo
dENvbG9yKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBPcHRpb25hbFJH
QkEgY29udmVydFRhcEhpZ2hsaWdodENvbG9yKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwog
I2VuZGlmCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKICAgICBz
dGF0aWMgYm9vbCBjb252ZXJ0T3ZlcmZsb3dTY3JvbGxpbmcoU3R5bGVSZXNvbHZlciYsIENTU1Zh
bHVlJik7CkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYWludE9yZGVy
IGNvbnZlcnRQYWludE9yZGVyKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRp
YyBmbG9hdCBjb252ZXJ0T3BhY2l0eShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBz
dGF0aWMgU3RyaW5nIGNvbnZlcnRTVkdVUklSZWZlcmVuY2UoU3R5bGVSZXNvbHZlciYsIENTU1Zh
bHVlJik7Ci0gICAgc3RhdGljIENvbG9yIGNvbnZlcnRTVkdDb2xvcihTdHlsZVJlc29sdmVyJiwg
Q1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWxSR0JBIGNvbnZlcnRTVkdDb2xvcihTdHls
ZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgU3R5bGVTZWxmQWxpZ25tZW50RGF0
YSBjb252ZXJ0U2VsZk9yRGVmYXVsdEFsaWdubWVudERhdGEoU3R5bGVSZXNvbHZlciYsIENTU1Zh
bHVlJik7CiAgICAgc3RhdGljIFN0eWxlQ29udGVudEFsaWdubWVudERhdGEgY29udmVydENvbnRl
bnRBbGlnbm1lbnREYXRhKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBF
R2x5cGhPcmllbnRhdGlvbiBjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihTdHlsZVJlc29sdmVyJiwg
Q1NTVmFsdWUmKTsKQEAgLTEwMjcsNyArMTAyNyw3IEBAIGlubGluZSBib29sIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFRvdWNoQ2FsbG91dChTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUm
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi1pbmxpbmUgQ29sb3IgU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGFwSGlnaGxpZ2h0Q29sb3IoU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIE9wdGlvbmFsUkdCQSBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUYXBIaWdobGlnaHRDb2xvcihTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHN0eWxlUmVz
b2x2ZXIuY29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKSk7CiB9CkBAIC0xMTA3LDcgKzExMDcsNyBAQCBpbmxpbmUgU3RyaW5nIFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFNWR1VSSVJlZmVyZW5jZShTdHlsZVJlc29sdmVyJiBzdHls
ZQogICAgIHJldHVybiBTVkdVUklSZWZlcmVuY2U6OmZyYWdtZW50SWRlbnRpZmllckZyb21JUklT
dHJpbmcocywgc3R5bGVSZXNvbHZlci5kb2N1bWVudCgpKTsKIH0KIAotaW5saW5lIENvbG9yIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNWR0NvbG9yKFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBPcHRpb25hbFJHQkEgU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHQ29sb3IoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHN2Z0NvbG9yID0gZG93bmNhc3Q8U1ZH
Q29sb3I+KHZhbHVlKTsKICAgICByZXR1cm4gc3ZnQ29sb3IuY29sb3JUeXBlKCkgPT0gU1ZHQ29s
b3I6OlNWR19DT0xPUlRZUEVfQ1VSUkVOVENPTE9SID8gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5j
b2xvcigpIDogc3ZnQ29sb3IuY29sb3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZUJ1aWxkZXJDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJD
dXN0b20uaAppbmRleCAyZWIxYWEwYjJiOTg5ZjFkMjlmM2RlYTNhZmYwMzM2MWJmODM2M2E4Li4y
YmE3ZjE2ZjNkYTMzNmFkMTkzNDA4MDQzOTc2NjBmOGYzNWU1MjNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCkBAIC03NjAsMTIgKzc2MCwxMiBAQCBpbmxpbmUgdm9p
ZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUoU3R5bGVSZXNv
bHZlciYgc3R5bGVSZQogICAgICAgICBpbnQgYmx1ciA9IHNoYWRvd1ZhbHVlLmJsdXIgPyBzaGFk
b3dWYWx1ZS5ibHVyLT5jb21wdXRlTGVuZ3RoPGludD4oY29udmVyc2lvbkRhdGEpIDogMDsKICAg
ICAgICAgaW50IHNwcmVhZCA9IHNoYWRvd1ZhbHVlLnNwcmVhZCA/IHNoYWRvd1ZhbHVlLnNwcmVh
ZC0+Y29tcHV0ZUxlbmd0aDxpbnQ+KGNvbnZlcnNpb25EYXRhKSA6IDA7CiAgICAgICAgIFNoYWRv
d1N0eWxlIHNoYWRvd1N0eWxlID0gc2hhZG93VmFsdWUuc3R5bGUgJiYgc2hhZG93VmFsdWUuc3R5
bGUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUluc2V0ID8gSW5zZXQgOiBOb3JtYWw7Ci0gICAg
ICAgIENvbG9yIGNvbG9yOworICAgICAgICBPcHRpb25hbFJHQkEgY29sb3I7CiAgICAgICAgIGlm
IChzaGFkb3dWYWx1ZS5jb2xvcikKICAgICAgICAgICAgIGNvbG9yID0gc3R5bGVSZXNvbHZlci5j
b2xvckZyb21QcmltaXRpdmVWYWx1ZSgqc2hhZG93VmFsdWUuY29sb3IpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBjb2xvciA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+Y29sb3IoKTsKLSAg
ICAgICAgYXV0byBzaGFkb3dEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPihJbnRQ
b2ludCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwgaWQgPT0gQ1NTUHJvcGVydHlX
ZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogQ29sb3I6OnRyYW5zcGFy
ZW50KTsKKyAgICAgICAgYXV0byBzaGFkb3dEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dE
YXRhPihJbnRQb2ludCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwgaWQgPT0gQ1NT
UHJvcGVydHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogT3B0aW9u
YWxSR0JBOjp0cmFuc3BhcmVudCk7CiAgICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eVRleHRT
aGFkb3cpCiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRTaGFkb3co
V1RGOjptb3ZlKHNoYWRvd0RhdGEpLCAhaXNGaXJzdEVudHJ5KTsgLy8gYWRkIHRvIHRoZSBsaXN0
IGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBlbnRyeQogICAgICAgICBlbHNlCkBAIC0xMjI3LDcg
KzEyMjcsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJr
aXRTdmdTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZQogICAgIEludFBvaW50IGxvY2F0aW9u
KHNoYWRvd1ZhbHVlLngtPmNvbXB1dGVMZW5ndGg8aW50PihzdHlsZVJlc29sdmVyLnN0YXRlKCku
Y3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLmNvcHlXaXRoQWRqdXN0ZWRab29tKDEuMGYpKSwK
ICAgICAgICAgc2hhZG93VmFsdWUueS0+Y29tcHV0ZUxlbmd0aDxpbnQ+KHN0eWxlUmVzb2x2ZXIu
c3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkuY29weVdpdGhBZGp1c3RlZFpvb20o
MS4wZikpKTsKICAgICBpbnQgYmx1ciA9IHNoYWRvd1ZhbHVlLmJsdXIgPyBzaGFkb3dWYWx1ZS5i
bHVyLT5jb21wdXRlTGVuZ3RoPGludD4oc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEoKS5jb3B5V2l0aEFkanVzdGVkWm9vbSgxLjBmKSkgOiAwOwotICAgIENv
bG9yIGNvbG9yOworICAgIE9wdGlvbmFsUkdCQSBjb2xvcjsKICAgICBpZiAoc2hhZG93VmFsdWUu
Y29sb3IpCiAgICAgICAgIGNvbG9yID0gc3R5bGVSZXNvbHZlci5jb2xvckZyb21QcmltaXRpdmVW
YWx1ZSgqc2hhZG93VmFsdWUuY29sb3IpOwogCkBAIC0xMjM1LDcgKzEyMzUsNyBAQCBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRTdmdTaGFkb3coU3R5bGVS
ZXNvbHZlciYgc3R5bGVSZQogICAgIEFTU0VSVCghc2hhZG93VmFsdWUuc3ByZWFkKTsKICAgICBB
U1NFUlQoIXNoYWRvd1ZhbHVlLnN0eWxlKTsKIAotICAgIHN2Z1N0eWxlLnNldFNoYWRvdyhzdGQ6
Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KGxvY2F0aW9uLCBibHVyLCAwLCBOb3JtYWwsIGZhbHNl
LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IENvbG9yOjp0cmFuc3BhcmVudCkpOworICAgIHN2
Z1N0eWxlLnNldFNoYWRvdyhzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KGxvY2F0aW9uLCBi
bHVyLCAwLCBOb3JtYWwsIGZhbHNlLCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IE9wdGlvbmFs
UkdCQTo6dHJhbnNwYXJlbnQpKTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseUluaXRpYWxGb250V2VpZ2h0KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCmluZGV4IGRlZGQwNzAwN2FlNWU5NWUz
YTRlNDg4NDIxZTg4YTVhZWQzN2QzNjQuLjA2ZmE1NTNiZWFlNzhlMmM1YWIyMGZhZGMwZGFmMjYx
MDlkMDM3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCkBAIC0zOTQs
NyArMzk0LDcgQEAgU3RyaW5nIFN0eWxlUHJvcGVydGllczo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZh
bHVlKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHMKICAgICAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZXNbal07CiAKLSAgICAgICAgICAg
ICAgICAgICAgLy8gQ29sb3Igb25seSBiZWxvbmdzIGluIHRoZSBsYXN0IGxheWVyLgorICAgICAg
ICAgICAgICAgICAgICAvLyBPcHRpb25hbFJHQkEgb25seSBiZWxvbmdzIGluIHRoZSBsYXN0IGxh
eWVyLgogICAgICAgICAgICAgICAgICAgICBpZiAoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtqXSA9
PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikgewogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGkgIT0gbnVtTGF5ZXJzIC0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1
ZSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNDY3M2M4
NWM3OGE0MWY2Y2M1NTQ4ODNmN2JkMjA0NTk0MjM1ZmM3MS4uZjM5YWE1YTJkODA2MDRmY2QwNWM2
MmI5YzEzNTM3Y2JkZDYzOTdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApA
QCAtMjA0Miw3ICsyMDQyLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpzZXRGb250U2l6ZShGb250
RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgZmxvYXQgc2l6ZSkKICAgICBmb250RGVzY3Jp
cHRpb24uc2V0Q29tcHV0ZWRTaXplKFN0eWxlOjpjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmll
ZFNpemUoc2l6ZSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIHVzZVNWR1pvb21S
dWxlcygpLCBtX3N0YXRlLnN0eWxlKCksIGRvY3VtZW50KCkpKTsKIH0KIAotc3RhdGljIENvbG9y
IGNvbG9yRm9yQ1NTVmFsdWUoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlkKQorc3RhdGljIE9wdGlvbmFs
UkdCQSBjb2xvckZvckNTU1ZhbHVlKENTU1ZhbHVlSUQgY3NzVmFsdWVJZCkKIHsKICAgICBzdHJ1
Y3QgQ29sb3JWYWx1ZSB7CiAgICAgICAgIENTU1ZhbHVlSUQgY3NzVmFsdWVJZDsKQEAgLTIwOTMs
MTYgKzIwOTMsMTYgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjb2xvckZyb21QcmltaXRpdmVWYWx1
ZUlzRGVyaXZlZEZyb21FbGVtZW50KENTU1ByaW1pdGl2ZVZhbHUKICAgICB9CiB9CiAKLUNvbG9y
IFN0eWxlUmVzb2x2ZXI6OmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVl
JiB2YWx1ZSwgYm9vbCBmb3JWaXNpdGVkTGluaykgY29uc3QKK09wdGlvbmFsUkdCQSBTdHlsZVJl
c29sdmVyOjpjb2xvckZyb21QcmltaXRpdmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUs
IGJvb2wgZm9yVmlzaXRlZExpbmspIGNvbnN0CiB7CiAgICAgaWYgKHZhbHVlLmlzUkdCQ29sb3Io
KSkKLSAgICAgICAgcmV0dXJuIENvbG9yKHZhbHVlLmdldFJHQkEzMlZhbHVlKCkpOworICAgICAg
ICByZXR1cm4gT3B0aW9uYWxSR0JBKHZhbHVlLmdldFJHQkEzMlZhbHVlKCkpOwogCiAgICAgY29u
c3QgU3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsKICAgICBDU1NWYWx1ZUlEIGlkZW50ID0gdmFsdWUu
Z2V0VmFsdWVJRCgpOwogICAgIHN3aXRjaCAoaWRlbnQpIHsKICAgICBjYXNlIDA6Ci0gICAgICAg
IHJldHVybiBDb2xvcigpOworICAgICAgICByZXR1cm4gT3B0aW9uYWxSR0JBKCk7CiAgICAgY2Fz
ZSBDU1NWYWx1ZVdlYmtpdFRleHQ6CiAgICAgICAgIHJldHVybiBzdGF0ZS5kb2N1bWVudCgpLnRl
eHRDb2xvcigpOwogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRMaW5rOgpAQCAtMjMwNCwxMSArMjMw
NCwxMSBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoQ1NTVmFs
dWUmIGluVmFsdWUsIEZpbHRlck9wZXJhdGlvbnMmCiAgICAgICAgICAgICBpbnQgeSA9IGl0ZW0u
eS0+Y29tcHV0ZUxlbmd0aDxpbnQ+KHN0YXRlLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSk7
CiAgICAgICAgICAgICBJbnRQb2ludCBsb2NhdGlvbih4LCB5KTsKICAgICAgICAgICAgIGludCBi
bHVyID0gaXRlbS5ibHVyID8gaXRlbS5ibHVyLT5jb21wdXRlTGVuZ3RoPGludD4oc3RhdGUuY3Nz
VG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKSA6IDA7Ci0gICAgICAgICAgICBDb2xvciBjb2xvcjsK
KyAgICAgICAgICAgIE9wdGlvbmFsUkdCQSBjb2xvcjsKICAgICAgICAgICAgIGlmIChpdGVtLmNv
bG9yKQogICAgICAgICAgICAgICAgIGNvbG9yID0gY29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoKml0
ZW0uY29sb3IpOwogCi0gICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQo
RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKGxvY2F0aW9uLCBibHVyLCBjb2xvci5p
c1ZhbGlkKCkgPyBjb2xvciA6IENvbG9yOjp0cmFuc3BhcmVudCkpOworICAgICAgICAgICAgb3Bl
cmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246OmNy
ZWF0ZShsb2NhdGlvbiwgYmx1ciwgY29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBPcHRpb25hbFJH
QkE6OnRyYW5zcGFyZW50KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIFdlYktpdENTU0ZpbHRlclZhbHVlOjpVbmtub3duRmlsdGVyT3BlcmF0aW9uOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggYWRkNTQyNWQ3ZmRiNThkMTE5ZTk4NDYyYjhl
MDYzN2E5ZmRjZWY5MS4uMmY0Yjg3NWIxMTZlN2ZlYzliZWFkYTE3YWNhNWJkNjFjZGU4OTA0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC0yMTAsNyArMjEwLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgdXNlU1ZHWm9vbVJ1bGVzRm9yTGVuZ3RoKCk7CiAKICAgICBzdGF0aWMgYm9v
bCBjb2xvckZyb21QcmltaXRpdmVWYWx1ZUlzRGVyaXZlZEZyb21FbGVtZW50KENTU1ByaW1pdGl2
ZVZhbHVlJik7Ci0gICAgQ29sb3IgY29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWUmLCBib29sIGZvclZpc2l0ZWRMaW5rID0gZmFsc2UpIGNvbnN0OworICAgIE9wdGlvbmFs
UkdCQSBjb2xvckZyb21QcmltaXRpdmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSYsIGJvb2wgZm9y
VmlzaXRlZExpbmsgPSBmYWxzZSkgY29uc3Q7CiAKICAgICBib29sIGhhc1NlbGVjdG9yRm9ySWQo
Y29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CiAgICAgYm9vbCBoYXNTZWxlY3RvckZvckNsYXNz
KGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OwpAQCAtMzkwLDcgKzM5MCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgYm9vbCBoYXNVQUFwcGVhcmFuY2UoKSBjb25zdCB7IHJldHVybiBtX2hhc1VBQXBw
ZWFyYW5jZTsgfQogICAgICAgICBCb3JkZXJEYXRhIGJvcmRlckRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2JvcmRlckRhdGE7IH0KICAgICAgICAgRmlsbExheWVyIGJhY2tncm91bmREYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YTsgfQotICAgICAgICBDb2xvciBiYWNrZ3JvdW5k
Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQorICAgICAgICBPcHRp
b25hbFJHQkEgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29s
b3I7IH0KIAogICAgICAgICBjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbigp
IHsgcmV0dXJuIG1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOyB9CiAgICAgICAgIGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgcGFyZW50Rm9udERlc2NyaXB0aW9uKCkgeyByZXR1cm4gbV9wYXJlbnRT
dHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7IH0KQEAgLTQzMyw3ICs0MzMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGJvb2wgbV9oYXNVQUFwcGVhcmFuY2U7CiAgICAgICAgIEJvcmRlckRhdGEgbV9ib3Jk
ZXJEYXRhOwogICAgICAgICBGaWxsTGF5ZXIgbV9iYWNrZ3JvdW5kRGF0YTsKLSAgICAgICAgQ29s
b3IgbV9iYWNrZ3JvdW5kQ29sb3I7CisgICAgICAgIE9wdGlvbmFsUkdCQSBtX2JhY2tncm91bmRD
b2xvcjsKIAogICAgICAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIG1fY3NzVG9MZW5ndGhD
b252ZXJzaW9uRGF0YTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21h
a2Vwcm9wLnBsIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCmluZGV4IDZiMGJiMzVj
NzcyZTdkZmU3N2E0YzU5MTlkZjA1NDEwOGFkZjQ0OTcuLmViYjg1MGQ2YjhjZmQ2N2Q0ZTE0YTNi
MDc3NDQ2NmY4Mjc1MzJhNmYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJv
cC5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKQEAgLTc0Miw3ICs3NDIs
NyBAQCBzdWIgZ2VuZXJhdGVJbmhlcml0VmFsdWVTZXR0ZXIgewogICAgICRzZXR0ZXJDb250ZW50
IC49ICRpbmRlbnQgLiAiICAgICAgICByZXR1cm47XG4iOwogICAgICRzZXR0ZXJDb250ZW50IC49
ICRpbmRlbnQgLiAiICAgIH1cbiI7CiAgIH0gZWxzaWYgKGV4aXN0cyAkcHJvcGVydGllc1dpdGhT
dHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiVmlzaXRlZExpbmtDb2xvclN1cHBvcnQifSkgewot
ICAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIENvbG9yIGNvbG9yID0gIiAuICRw
YXJlbnRTdHlsZSAuICItPiIgLiAkZ2V0dGVyIC4gIigpO1xuIjsKKyAgICAkc2V0dGVyQ29udGVu
dCAuPSAkaW5kZW50IC4gIiAgICBPcHRpb25hbFJHQkEgY29sb3IgPSAiIC4gJHBhcmVudFN0eWxl
IC4gIi0+IiAuICRnZXR0ZXIgLiAiKCk7XG4iOwogICAgIGlmICghZXhpc3RzKCRwcm9wZXJ0aWVz
V2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJOb0RlZmF1bHRDb2xvciJ9KSkgewogICAg
ICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkp
XG4iOwogICAgICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIGNvbG9yID0g
IiAuICRwYXJlbnRTdHlsZSAuICItPmNvbG9yKCk7XG4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
aW5kZXggZWI0ODRlMTc4Y2I0NGY5OTE4ZWQyYzU0YmFmYmZmY2IxMDMxOGE4ZC4uMTY2YTk2Yjgx
ODRkMjA2NzA3ZWM4MzBiMzQ1NzcyZTkxZDc2MmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC00MzQsNyArNDM0LDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29u
c3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcywgdW5zaWcKICAgICAsIG1fcGFn
aW5hdGVkRm9yU2NyZWVuKGZhbHNlKQogICAgICwgbV9jb21wYXRpYmlsaXR5TW9kZShEb2N1bWVu
dENvbXBhdGliaWxpdHlNb2RlOjpOb1F1aXJrc01vZGUpCiAgICAgLCBtX2NvbXBhdGliaWxpdHlN
b2RlTG9ja2VkKGZhbHNlKQotICAgICwgbV90ZXh0Q29sb3IoQ29sb3I6OmJsYWNrKQorICAgICwg
bV90ZXh0Q29sb3IoT3B0aW9uYWxSR0JBOjpibGFjaykKICAgICAsIG1fZG9tVHJlZVZlcnNpb24o
KytzX2dsb2JhbFRyZWVWZXJzaW9uKQogICAgICwgbV9saXN0ZW5lclR5cGVzKDApCiAgICAgLCBt
X211dGF0aW9uT2JzZXJ2ZXJUeXBlcygwKQpAQCAtODAzLDEyICs4MDMsMTIgQEAgU3RyaW5nIERv
Y3VtZW50Ojpjb21wYXRNb2RlKCkgY29uc3QKIAogdm9pZCBEb2N1bWVudDo6cmVzZXRMaW5rQ29s
b3IoKQogewotICAgIG1fbGlua0NvbG9yID0gQ29sb3IoMCwgMCwgMjM4KTsKKyAgICBtX2xpbmtD
b2xvciA9IE9wdGlvbmFsUkdCQSgwLCAwLCAyMzgpOwogfQogCiB2b2lkIERvY3VtZW50OjpyZXNl
dFZpc2l0ZWRMaW5rQ29sb3IoKQogewotICAgIG1fdmlzaXRlZExpbmtDb2xvciA9IENvbG9yKDg1
LCAyNiwgMTM5KTsgICAgCisgICAgbV92aXNpdGVkTGlua0NvbG9yID0gT3B0aW9uYWxSR0JBKDg1
LCAyNiwgMTM5KTsgICAgCiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnJlc2V0QWN0aXZlTGlua0NvbG9y
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggODBmZTdhNDhlZWYyMWI3NDEwNTQyNDIyOGE2Zjcz
MjZmNmNkNGEyNy4uZjJmNzgxN2M0YzE0ZTcwODg0NmEzYTE0MjNhMjZhNjRjMWVkNmVlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKQEAgLTY4MiwxNSArNjgyLDE1IEBAIHB1YmxpYzoKICAgICBib29s
IGlzTGF5b3V0VGltZXJBY3RpdmUoKTsKICAgICBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIGVs
YXBzZWRUaW1lKCkgY29uc3Q7CiAgICAgCi0gICAgdm9pZCBzZXRUZXh0Q29sb3IoY29uc3QgQ29s
b3ImIGNvbG9yKSB7IG1fdGV4dENvbG9yID0gY29sb3I7IH0KLSAgICBDb2xvciB0ZXh0Q29sb3Io
KSBjb25zdCB7IHJldHVybiBtX3RleHRDb2xvcjsgfQotCi0gICAgY29uc3QgQ29sb3ImIGxpbmtD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fbGlua0NvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHZp
c2l0ZWRMaW5rQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3Zpc2l0ZWRMaW5rQ29sb3I7IH0KLSAg
ICBjb25zdCBDb2xvciYgYWN0aXZlTGlua0NvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVM
aW5rQ29sb3I7IH0KLSAgICB2b2lkIHNldExpbmtDb2xvcihjb25zdCBDb2xvciYgYykgeyBtX2xp
bmtDb2xvciA9IGM7IH0KLSAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQ29sb3IoY29uc3QgQ29sb3Im
IGMpIHsgbV92aXNpdGVkTGlua0NvbG9yID0gYzsgfQotICAgIHZvaWQgc2V0QWN0aXZlTGlua0Nv
bG9yKGNvbnN0IENvbG9yJiBjKSB7IG1fYWN0aXZlTGlua0NvbG9yID0gYzsgfQorICAgIHZvaWQg
c2V0VGV4dENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IpIHsgbV90ZXh0Q29sb3IgPSBj
b2xvcjsgfQorICAgIE9wdGlvbmFsUkdCQSB0ZXh0Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHRDb2xvcjsgfQorCisgICAgY29uc3QgT3B0aW9uYWxSR0JBJiBsaW5rQ29sb3IoKSBjb25zdCB7
IHJldHVybiBtX2xpbmtDb2xvcjsgfQorICAgIGNvbnN0IE9wdGlvbmFsUkdCQSYgdmlzaXRlZExp
bmtDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaXRlZExpbmtDb2xvcjsgfQorICAgIGNvbnN0
IE9wdGlvbmFsUkdCQSYgYWN0aXZlTGlua0NvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVM
aW5rQ29sb3I7IH0KKyAgICB2b2lkIHNldExpbmtDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIGMp
IHsgbV9saW5rQ29sb3IgPSBjOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua0NvbG9yKGNvbnN0
IE9wdGlvbmFsUkdCQSYgYykgeyBtX3Zpc2l0ZWRMaW5rQ29sb3IgPSBjOyB9CisgICAgdm9pZCBz
ZXRBY3RpdmVMaW5rQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiBjKSB7IG1fYWN0aXZlTGlua0Nv
bG9yID0gYzsgfQogICAgIHZvaWQgcmVzZXRMaW5rQ29sb3IoKTsKICAgICB2b2lkIHJlc2V0Vmlz
aXRlZExpbmtDb2xvcigpOwogICAgIHZvaWQgcmVzZXRBY3RpdmVMaW5rQ29sb3IoKTsKQEAgLTE0
MzAsNyArMTQzMCw3IEBAIHByaXZhdGU6CiAgICAgRG9jdW1lbnRDb21wYXRpYmlsaXR5TW9kZSBt
X2NvbXBhdGliaWxpdHlNb2RlOwogICAgIGJvb2wgbV9jb21wYXRpYmlsaXR5TW9kZUxvY2tlZDsg
Ly8gVGhpcyBpcyBjaGVhcGVyIHRoYW4gbWFraW5nIHNldENvbXBhdGliaWxpdHlNb2RlIHZpcnR1
YWwuCiAKLSAgICBDb2xvciBtX3RleHRDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgbV90ZXh0Q29s
b3I7CiAKICAgICBSZWZQdHI8RWxlbWVudD4gbV9mb2N1c2VkRWxlbWVudDsKICAgICBSZWZQdHI8
RWxlbWVudD4gbV9ob3ZlcmVkRWxlbWVudDsKQEAgLTE0NTMsOSArMTQ1Myw5IEBAIHByaXZhdGU6
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybUNvbnRyb2xsZXI+IG1fZm9ybUNvbnRyb2xsZXI7
CiAKLSAgICBDb2xvciBtX2xpbmtDb2xvcjsKLSAgICBDb2xvciBtX3Zpc2l0ZWRMaW5rQ29sb3I7
Ci0gICAgQ29sb3IgbV9hY3RpdmVMaW5rQ29sb3I7CisgICAgT3B0aW9uYWxSR0JBIG1fbGlua0Nv
bG9yOworICAgIE9wdGlvbmFsUkdCQSBtX3Zpc2l0ZWRMaW5rQ29sb3I7CisgICAgT3B0aW9uYWxS
R0JBIG1fYWN0aXZlTGlua0NvbG9yOwogICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxWaXNpdGVk
TGlua1N0YXRlPiBtX3Zpc2l0ZWRMaW5rU3RhdGU7CiAKICAgICBib29sIG1fdmlzdWFsbHlPcmRl
cmVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4IDE3YWFiMjk1
YmE2YjkyZGFlMmE3MjQ0ZGMxNTY4ZWZmMmY1NTc0N2EuLjA0OWIzMDIyYjllNDgyYzU5YTk3Nzhl
OWJkYjM4NjQxMDAyZDY2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHAKQEAgLTM4NSw3ICszODUsNyBAQCBFZGl0aW5nU3R5bGU6On5FZGl0aW5nU3R5bGUoKQogc3Rh
dGljIFJHQkEzMiBjc3NWYWx1ZVRvUkdCQShDU1NWYWx1ZSogY29sb3JWYWx1ZSkKIHsKICAgICBp
ZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPihjb2xvclZhbHVlKSkKLSAgICAgICAgcmV0dXJuIENv
bG9yOjp0cmFuc3BhcmVudDsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsUkdCQTo6dHJhbnNwYXJl
bnQ7CiAgICAgCiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZUNvbG9yID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpjb2xvclZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlQ29s
b3IuaXNSR0JDb2xvcigpKQpAQCAtMTcwNiw3ICsxNzA2LDcgQEAgdm9pZCBTdHlsZUNoYW5nZTo6
ZXh0cmFjdFRleHRTdHlsZXMoRG9jdW1lbnQqIGRvY3VtZW50LCBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzJgogICAgIH0KIAogICAgIGlmIChzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3Bl
cnR5Q29sb3IpKSB7Ci0gICAgICAgIG1fYXBwbHlGb250Q29sb3IgPSBDb2xvcih0ZXh0Q29sb3JG
cm9tU3R5bGUoc3R5bGUpKS5zZXJpYWxpemVkKCk7CisgICAgICAgIG1fYXBwbHlGb250Q29sb3Ig
PSBPcHRpb25hbFJHQkEodGV4dENvbG9yRnJvbVN0eWxlKHN0eWxlKSkuc2VyaWFsaXplZCgpOwog
ICAgICAgICBzdHlsZS5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDhhODJmM2RmMmEwZmI5YTc3NTM4NmU0MmU2Zjc5
MDI4OGY1ZjlhZDcuLjRmMzc1Yzk4YWY1N2I1ODE1ZTg1MzI4NmUzYzBlMmM2MDY2NDI1YTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtODAsMTEgKzgwLDExIEBAIHN0cnVjdCBUZXh0Q2hl
Y2tpbmdSZXN1bHQ7CiBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmUgewogICAgIENvbXBvc2l0
aW9uVW5kZXJsaW5lKCkgCiAgICAgICAgIDogc3RhcnRPZmZzZXQoMCksIGVuZE9mZnNldCgwKSwg
dGhpY2soZmFsc2UpIHsgfQotICAgIENvbXBvc2l0aW9uVW5kZXJsaW5lKHVuc2lnbmVkIHMsIHVu
c2lnbmVkIGUsIGNvbnN0IENvbG9yJiBjLCBib29sIHQpIAorICAgIENvbXBvc2l0aW9uVW5kZXJs
aW5lKHVuc2lnbmVkIHMsIHVuc2lnbmVkIGUsIGNvbnN0IE9wdGlvbmFsUkdCQSYgYywgYm9vbCB0
KSAKICAgICAgICAgOiBzdGFydE9mZnNldChzKSwgZW5kT2Zmc2V0KGUpLCBjb2xvcihjKSwgdGhp
Y2sodCkgeyB9CiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQ7CiAgICAgdW5zaWduZWQgZW5kT2Zm
c2V0OwotICAgIENvbG9yIGNvbG9yOworICAgIE9wdGlvbmFsUkdCQSBjb2xvcjsKICAgICBib29s
IHRoaWNrOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApp
bmRleCBkZTQwMWM1Y2IyYTcxZWY2NTc0YmFhMTYwOWU5NjgzM2YxNjVjNDkzLi4zNGZjOGU3NDQz
Mjk3ZWI0NjE4N2RiM2U4YTg3NDcyYzRlNjNiZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTU0OSw3ICsxNTQ5LDcgQEAgdm9pZCBGcmFtZVNlbGVj
dGlvbjo6cGFpbnRDYXJldChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFBv
aW50JiBwYWkKIH0KIAogI2lmIEVOQUJMRShURVhUX0NBUkVUKQotc3RhdGljIGlubGluZSBib29s
IGRpc2FwcGVhcnNJbnRvQmFja2dyb3VuZChDb2xvciBmb3JlZ3JvdW5kLCBDb2xvciBiYWNrZ3Jv
dW5kKQorc3RhdGljIGlubGluZSBib29sIGRpc2FwcGVhcnNJbnRvQmFja2dyb3VuZChPcHRpb25h
bFJHQkEgZm9yZWdyb3VuZCwgT3B0aW9uYWxSR0JBIGJhY2tncm91bmQpCiB7CiAgICAgcmV0dXJu
IGJhY2tncm91bmQuYmxlbmQoZm9yZWdyb3VuZCkgPT0gYmFja2dyb3VuZDsKIH0KQEAgLTE1Njks
NyArMTU2OSw3IEBAIHZvaWQgQ2FyZXRCYXNlOjpwYWludENhcmV0KE5vZGUqIG5vZGUsIEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pCiAgICAgaWYgKGNhcmV0LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ29sb3IgY2FyZXRDb2xvciA9IENvbG9yOjpi
bGFjazsKKyAgICBPcHRpb25hbFJHQkEgY2FyZXRDb2xvciA9IE9wdGlvbmFsUkdCQTo6YmxhY2s7
CiAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQjsKICAgICBF
bGVtZW50KiBlbGVtZW50ID0gaXM8RWxlbWVudD4oKm5vZGUpID8gZG93bmNhc3Q8RWxlbWVudD4o
bm9kZSkgOiBub2RlLT5wYXJlbnRFbGVtZW50KCk7CiAgICAgRWxlbWVudCogcm9vdEVkaXRhYmxl
RWxlbWVudCA9IG5vZGUtPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKQEAgLTI2NjAsNyArMjY2MCw3
IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldENhcmV0QmxpbmtzKGJvb2wgY2FyZXRCbGlua3Mp
CiAgICAgdXBkYXRlQXBwZWFyYW5jZSgpOwogfQogCi12b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRD
YXJldENvbG9yKGNvbnN0IENvbG9yJiBjYXJldENvbG9yKQordm9pZCBGcmFtZVNlbGVjdGlvbjo6
c2V0Q2FyZXRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIGNhcmV0Q29sb3IpCiB7CiAgICAgaWYg
KG1fY2FyZXRDb2xvciAhPSBjYXJldENvbG9yKSB7CiAgICAgICAgIG1fY2FyZXRDb2xvciA9IGNh
cmV0Q29sb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKaW5kZXggZGY3
NzdjOWFiMjYyNjFhNDhhMTJjZjc5YTBlZGE3NTliMTQ1ZjQwMy4uMTA1ZjYzOWQ4MGVjNjMwMDAy
YmZhMDM0MTU1YzI0ZTBiNzI5YWI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uaApAQCAtMjMzLDcgKzIzMyw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNlbGVjdFJhbmdlT25FbGVtZW50KHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5n
dGgsIE5vZGUqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyQ3VycmVudFNlbGVjdGlv
bigpOwogICAgIHZvaWQgc2V0Q2FyZXRCbGlua3MoYm9vbCBjYXJldEJsaW5rcyA9IHRydWUpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FyZXRDb2xvcihjb25zdCBDb2xvciYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FyZXRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVmlzaWJsZVNlbGVjdGlvbiB3b3JkU2VsZWN0aW9u
Q29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKICAgICB2
b2lkIHNldFVwZGF0ZUFwcGVhcmFuY2VFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3VwZGF0ZUFw
cGVhcmFuY2VFbmFibGVkID0gZW5hYmxlZDsgfQogICAgIHZvaWQgc3VwcHJlc3NTY3JvbGxpbmco
KSB7ICsrbV9zY3JvbGxpbmdTdXBwcmVzc0NvdW50OyB9CkBAIC0zNDgsNyArMzQ4LDcgQEAgcHJp
dmF0ZToKICNpZiBQTEFURk9STShJT1MpCiAgICAgYm9vbCBtX3VwZGF0ZUFwcGVhcmFuY2VFbmFi
bGVkIDogMTsKICAgICBib29sIG1fY2FyZXRCbGlua3MgOiAxOwotICAgIENvbG9yIG1fY2FyZXRD
b2xvcjsKKyAgICBPcHRpb25hbFJHQkEgbV9jYXJldENvbG9yOwogICAgIGludCBtX3Njcm9sbGlu
Z1N1cHByZXNzQ291bnQ7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggNjBjNDM3YTliYzFjMjI2YzA5NWI1NGUxZDg2MDc4
MjUyOGU1OTg0MS4uMmZjZWY3NjhkMTUxNzc5ZTliYTkxY2QxZDMxNTdjMDc0NTY3ZjkyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMzM1
LDcgKzMzNSw3IEBAIGNsYXNzIEhUTUxDb252ZXJ0ZXJDYWNoZXMgewogcHVibGljOgogICAgIFN0
cmluZyBwcm9wZXJ0eVZhbHVlRm9yTm9kZShOb2RlJiwgQ1NTUHJvcGVydHlJRCApOwogICAgIGJv
b2wgZmxvYXRQcm9wZXJ0eVZhbHVlRm9yTm9kZShOb2RlJiwgQ1NTUHJvcGVydHlJRCwgZmxvYXQm
KTsKLSAgICBDb2xvciBjb2xvclByb3BlcnR5VmFsdWVGb3JOb2RlKE5vZGUmLCBDU1NQcm9wZXJ0
eUlEKTsKKyAgICBPcHRpb25hbFJHQkEgY29sb3JQcm9wZXJ0eVZhbHVlRm9yTm9kZShOb2RlJiwg
Q1NTUHJvcGVydHlJRCk7CiAKICAgICBib29sIGlzQmxvY2tFbGVtZW50KEVsZW1lbnQmKTsKICAg
ICBib29sIGVsZW1lbnRIYXNPd25CYWNrZ3JvdW5kQ29sb3IoRWxlbWVudCYpOwpAQCAtODcxLDEy
ICs4NzEsMTIgQEAgc3RhdGljIE5TQnVuZGxlICpfd2ViS2l0QnVuZGxlKCkKICAgICByZXR1cm4g
YnVuZGxlOwogfQogCi1zdGF0aWMgaW5saW5lIFVJQ29sb3IgKl9wbGF0Zm9ybUNvbG9yKENvbG9y
IGNvbG9yKQorc3RhdGljIGlubGluZSBVSUNvbG9yICpfcGxhdGZvcm1Db2xvcihPcHRpb25hbFJH
QkEgY29sb3IpCiB7CiAgICAgcmV0dXJuIFtnZXRVSUNvbG9yQ2xhc3MoKSBfZGlzYW1iaWd1YXRl
ZF9kdWVfdG9fQ0lJbWFnZV9jb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3IsIFdl
YkNvcmU6OkNvbG9yU3BhY2VEZXZpY2VSR0IpXTsKIH0KICNlbHNlCi1zdGF0aWMgaW5saW5lIE5T
Q29sb3IgKl9wbGF0Zm9ybUNvbG9yKENvbG9yIGNvbG9yKQorc3RhdGljIGlubGluZSBOU0NvbG9y
ICpfcGxhdGZvcm1Db2xvcihPcHRpb25hbFJHQkEgY29sb3IpCiB7CiAgICAgcmV0dXJuIG5zQ29s
b3IoY29sb3IpOwogfQpAQCAtOTY0LDM2ICs5NjQsMzYgQEAgRWxlbWVudCogSFRNTENvbnZlcnRl
cjo6X2Jsb2NrTGV2ZWxFbGVtZW50Rm9yTm9kZShOb2RlKiBub2RlKQogICAgIHJldHVybiBlbGVt
ZW50OwogfQogCi1zdGF0aWMgQ29sb3Igbm9ybWFsaXplZENvbG9yKENvbG9yIGNvbG9yLCBib29s
IGlnbm9yZUJsYWNrKQorc3RhdGljIE9wdGlvbmFsUkdCQSBub3JtYWxpemVkQ29sb3IoT3B0aW9u
YWxSR0JBIGNvbG9yLCBib29sIGlnbm9yZUJsYWNrKQogewogICAgIGNvbnN0IGRvdWJsZSBDb2xv
ckVwc2lsb24gPSAxIC8gKDIgKiAoZG91YmxlKTI1NS4wKTsKICAgICAKICAgICBkb3VibGUgcmVk
LCBncmVlbiwgYmx1ZSwgYWxwaGE7CiAgICAgY29sb3IuZ2V0UkdCQShyZWQsIGdyZWVuLCBibHVl
LCBhbHBoYSk7CiAgICAgaWYgKHJlZCA8IENvbG9yRXBzaWxvbiAmJiBncmVlbiA8IENvbG9yRXBz
aWxvbiAmJiBibHVlIDwgQ29sb3JFcHNpbG9uICYmIChpZ25vcmVCbGFjayB8fCBhbHBoYSA8IENv
bG9yRXBzaWxvbikpCi0gICAgICAgIHJldHVybiBDb2xvcigpOworICAgICAgICByZXR1cm4gT3B0
aW9uYWxSR0JBKCk7CiAgICAgCiAgICAgcmV0dXJuIGNvbG9yOwogfQogCi1Db2xvciBIVE1MQ29u
dmVydGVyQ2FjaGVzOjpjb2xvclByb3BlcnR5VmFsdWVGb3JOb2RlKE5vZGUmIG5vZGUsIENTU1By
b3BlcnR5SUQgcHJvcGVydHlJZCkKK09wdGlvbmFsUkdCQSBIVE1MQ29udmVydGVyQ2FjaGVzOjpj
b2xvclByb3BlcnR5VmFsdWVGb3JOb2RlKE5vZGUmIG5vZGUsIENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJZCkKIHsKICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpKSB7CiAgICAgICAgIGlmIChOb2Rl
KiBwYXJlbnQgPSBub2RlLnBhcmVudE5vZGUoKSkKICAgICAgICAgICAgIHJldHVybiBjb2xvclBy
b3BlcnR5VmFsdWVGb3JOb2RlKCpwYXJlbnQsIHByb3BlcnR5SWQpOwotICAgICAgICByZXR1cm4g
Q29sb3IoKTsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsUkdCQSgpOwogICAgIH0KIAogICAgIEVs
ZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pihub2RlKTsKICAgICBpZiAoUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZSA9IGNvbXB1dGVkU3R5bGVQcm9wZXJ0eUZvckVsZW1lbnQoZWxlbWVu
dCwgcHJvcGVydHlJZCkpIHsKICAgICAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPigqdmFs
dWUpICYmIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmlzUkdCQ29sb3IoKSkK
LSAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVkQ29sb3IoQ29sb3IoZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KCp2YWx1ZSkuZ2V0UkdCQTMyVmFsdWUoKSksIHByb3BlcnR5SWQgPT0gQ1NT
UHJvcGVydHlDb2xvcik7CisgICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplZENvbG9yKE9wdGlv
bmFsUkdCQShkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5nZXRSR0JBMzJWYWx1
ZSgpKSwgcHJvcGVydHlJZCA9PSBDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICB9CiAKICAgICBib29s
IGluaGVyaXQgPSBmYWxzZTsKICAgICBpZiAoUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGlubGlu
ZVN0eWxlUHJvcGVydHlGb3JFbGVtZW50KGVsZW1lbnQsIHByb3BlcnR5SWQpKSB7CiAgICAgICAg
IGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKSAmJiBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4oKnZhbHVlKS5pc1JHQkNvbG9yKCkpCi0gICAgICAgICAgICByZXR1cm4gbm9ybWFs
aXplZENvbG9yKENvbG9yKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmdldFJH
QkEzMlZhbHVlKCkpLCBwcm9wZXJ0eUlkID09IENTU1Byb3BlcnR5Q29sb3IpOworICAgICAgICAg
ICAgcmV0dXJuIG5vcm1hbGl6ZWRDb2xvcihPcHRpb25hbFJHQkEoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KCp2YWx1ZSkuZ2V0UkdCQTMyVmFsdWUoKSksIHByb3BlcnR5SWQgPT0gQ1NTUHJv
cGVydHlDb2xvcik7CiAgICAgICAgIGlmICh2YWx1ZS0+aXNJbmhlcml0ZWRWYWx1ZSgpKQogICAg
ICAgICAgICAgaW5oZXJpdCA9IHRydWU7CiAgICAgfQpAQCAtMTAxOSwxMiArMTAxOSwxMiBAQCBD
b2xvciBIVE1MQ29udmVydGVyQ2FjaGVzOjpjb2xvclByb3BlcnR5VmFsdWVGb3JOb2RlKE5vZGUm
IG5vZGUsIENTU1Byb3BlcnR5SUQgcAogICAgICAgICAgICAgcmV0dXJuIGNvbG9yUHJvcGVydHlW
YWx1ZUZvck5vZGUoKnBhcmVudCwgcHJvcGVydHlJZCk7CiAgICAgfQogCi0gICAgcmV0dXJuIENv
bG9yKCk7CisgICAgcmV0dXJuIE9wdGlvbmFsUkdCQSgpOwogfQogCiBQbGF0Zm9ybUNvbG9yICpI
VE1MQ29udmVydGVyOjpfY29sb3JGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJZCkKIHsKLSAgICBDb2xvciByZXN1bHQgPSBfY2FjaGVzLT5jb2xvclBy
b3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1lbnQsIHByb3BlcnR5SWQpOworICAgIE9wdGlvbmFsUkdC
QSByZXN1bHQgPSBfY2FjaGVzLT5jb2xvclByb3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1lbnQsIHBy
b3BlcnR5SWQpOwogICAgIGlmICghcmVzdWx0LmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG5p
bDsKICAgICBQbGF0Zm9ybUNvbG9yICpwbGF0Zm9ybVJlc3VsdCA9IF9wbGF0Zm9ybUNvbG9yKHJl
c3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggNWMwYmRh
YTM4OTYwNTk0ZTU5OTIyZGYwZTcyZTMxYjM2ZmNmNTZjYS4uMTg1YzIyNGVmYmZmMjY1NjczODNj
MzlhZjRhN2YxYTEyYjY5Y2Y3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbQpAQCAtMTY3LDcgKzE2Nyw3IEBAIE5TRGljdGlvbmFyeSogRWRpdG9yOjpmb250QXR0cmli
dXRlc0ZvclNlbGVjdGlvblN0YXJ0KCkgY29uc3QKICAgICBpZiAoc3R5bGUtPmZvbnRDYXNjYWRl
KCkucHJpbWFyeUZvbnQoKS5nZXROU0ZvbnQoKSkKICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6
c3R5bGUtPmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5nZXROU0ZvbnQoKSBmb3JLZXk6TlNG
b250QXR0cmlidXRlTmFtZV07CiAKLSAgICBpZiAoc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUNvbG9yKS5pc1ZhbGlkKCkgJiYgc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eUNvbG9yKSAhPSBDb2xvcjo6YmxhY2spCisgICAgaWYgKHN0eWxlLT52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikuaXNWYWxpZCgpICYmIHN0eWxl
LT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikgIT0gT3B0aW9uYWxSR0JB
OjpibGFjaykKICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6bnNDb2xvcihzdHlsZS0+dmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKSBmb3JLZXk6TlNGb3JlZ3JvdW5kQ29s
b3JBdHRyaWJ1dGVOYW1lXTsKIAogICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdyA9IHN0eWxl
LT50ZXh0U2hhZG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5w
dXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCmluZGV4
IDhiYmRiOTdjMjUyNGI2MmFiMzlhYTY0ZTY4NDA4NTVjYTQ2OTU1OWMuLjk1ZTczNzk3Y2QyN2Vj
ZjQwYzFlNWM3YzY1YzhiMjFhN2U2YThhNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQ29sb3JJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1
dFR5cGUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBib29sIGlzVmFsaWRDb2xvclN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIC8vIFdlIGRvbid0IGFjY2VwdCAjcmdiIGFuZCAj
YWFycmdnYmIgZm9ybWF0cy4KICAgICBpZiAodmFsdWUubGVuZ3RoKCkgIT0gNykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIENvbG9yIGNvbG9yKHZhbHVlKTsKKyAgICBPcHRpb25hbFJHQkEg
Y29sb3IodmFsdWUpOwogICAgIHJldHVybiBjb2xvci5pc1ZhbGlkKCkgJiYgIWNvbG9yLmhhc0Fs
cGhhKCk7CiB9CiAKQEAgLTk3LDkgKzk3LDkgQEAgU3RyaW5nIENvbG9ySW5wdXRUeXBlOjpzYW5p
dGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSkgY29uc3QKICAgICByZXR1cm4g
cHJvcG9zZWRWYWx1ZS5sb3dlcigpOwogfQogCi1Db2xvciBDb2xvcklucHV0VHlwZTo6dmFsdWVB
c0NvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBDb2xvcklucHV0VHlwZTo6dmFsdWVBc0NvbG9y
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gQ29sb3IoZWxlbWVudCgpLnZhbHVlKCkpOworICAgIHJl
dHVybiBPcHRpb25hbFJHQkEoZWxlbWVudCgpLnZhbHVlKCkpOwogfQogCiB2b2lkIENvbG9ySW5w
dXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKQEAgLTE2Nyw3ICsxNjcsNyBAQCBib29sIENv
bG9ySW5wdXRUeXBlOjpzaG91bGRSZXNldE9uRG9jdW1lbnRBY3RpdmF0aW9uKCkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBDb2xvcklucHV0VHlwZTo6ZGlkQ2hvb3NlQ29sb3IoY29uc3Qg
Q29sb3ImIGNvbG9yKQordm9pZCBDb2xvcklucHV0VHlwZTo6ZGlkQ2hvb3NlQ29sb3IoY29uc3Qg
T3B0aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICBpZiAoZWxlbWVudCgpLmlzRGlzYWJsZWRPclJl
YWRPbmx5KCkgfHwgY29sb3IgPT0gdmFsdWVBc0NvbG9yKCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTIwOSw3ICsyMDksNyBAQCBJbnRSZWN0IENvbG9ySW5wdXRUeXBlOjplbGVtZW50UmVjdFJlbGF0
aXZlVG9Sb290VmlldygpIGNvbnN0CiAgICAgcmV0dXJuIGVsZW1lbnQoKS5kb2N1bWVudCgpLnZp
ZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KGVsZW1lbnQoKS5yZW5kZXJlcigpLT5hYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdCgpKTsKIH0KIAotQ29sb3IgQ29sb3JJbnB1dFR5cGU6OmN1cnJlbnRDb2xv
cigpCitPcHRpb25hbFJHQkEgQ29sb3JJbnB1dFR5cGU6OmN1cnJlbnRDb2xvcigpCiB7CiAgICAg
cmV0dXJuIHZhbHVlQXNDb2xvcigpOwogfQpAQCAtMjIzLDkgKzIyMyw5IEBAIGJvb2wgQ29sb3JJ
bnB1dFR5cGU6OnNob3VsZFNob3dTdWdnZXN0aW9ucygpIGNvbnN0CiAjZW5kaWYKIH0KIAotVmVj
dG9yPENvbG9yPiBDb2xvcklucHV0VHlwZTo6c3VnZ2VzdGlvbnMoKSBjb25zdAorVmVjdG9yPE9w
dGlvbmFsUkdCQT4gQ29sb3JJbnB1dFR5cGU6OnN1Z2dlc3Rpb25zKCkgY29uc3QKIHsKLSAgICBW
ZWN0b3I8Q29sb3I+IHN1Z2dlc3Rpb25zOworICAgIFZlY3RvcjxPcHRpb25hbFJHQkE+IHN1Z2dl
c3Rpb25zOwogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIEhUTUxEYXRhTGlzdEVs
ZW1lbnQqIGRhdGFMaXN0ID0gZWxlbWVudCgpLmRhdGFMaXN0KCk7CiAgICAgaWYgKGRhdGFMaXN0
KSB7CkBAIC0yMzMsNyArMjMzLDcgQEAgVmVjdG9yPENvbG9yPiBDb2xvcklucHV0VHlwZTo6c3Vn
Z2VzdGlvbnMoKSBjb25zdAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBIVE1MT3B0aW9u
RWxlbWVudCogb3B0aW9uID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KG9wdGlvbnMtPml0
ZW0oaSkpOyArK2kpIHsKICAgICAgICAgICAgIGlmICghZWxlbWVudCgpLmlzVmFsaWRWYWx1ZShv
cHRpb24tPnZhbHVlKCkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
Q29sb3IgY29sb3Iob3B0aW9uLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIE9wdGlvbmFsUkdCQSBj
b2xvcihvcHRpb24tPnZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBzdWdnZXN0aW9ucy5hcHBl
bmQoY29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlw
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5oCmluZGV4IDAyZjkwYmEy
Zjc3YmM2ZTExYzQ4Yjc3NDBmNGY4MDk5MmEzYjQ5YmYuLmNmZjJjMDFhODNkNzk3ODVmOWFmYjA0
NmZkMmRhYmYzNGQyOWEzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJ
bnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmgKQEAg
LTQzLDEyICs0MywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q29sb3JJbnB1dFR5cGUoKTsK
IAogICAgIC8vIENvbG9yQ2hvb3NlckNsaWVudCBpbXBsZW1lbnRhdGlvbi4KLSAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hvb3NlQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hvb3NlQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEVuZENob29zZXIoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEludFJl
Y3QgZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIENvbG9yIGN1cnJlbnRDb2xvcigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgT3B0aW9u
YWxSR0JBIGN1cnJlbnRDb2xvcigpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRT
aG93U3VnZ2VzdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFZlY3RvcjxDb2xv
cj4gc3VnZ2VzdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFZlY3RvcjxPcHRp
b25hbFJHQkE+IHN1Z2dlc3Rpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIGlzQ29sb3JDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC02NCw3ICs2
NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHR5cGVNaXNtYXRjaEZvcihjb25zdCBT
dHJpbmcmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVzZXRPbkRv
Y3VtZW50QWN0aXZhdGlvbigpIG92ZXJyaWRlOwogCi0gICAgQ29sb3IgdmFsdWVBc0NvbG9yKCkg
Y29uc3Q7CisgICAgT3B0aW9uYWxSR0JBIHZhbHVlQXNDb2xvcigpIGNvbnN0OwogICAgIHZvaWQg
ZW5kQ29sb3JDaG9vc2VyKCk7CiAgICAgdm9pZCB1cGRhdGVDb2xvclN3YXRjaCgpOwogICAgIEhU
TUxFbGVtZW50KiBzaGFkb3dDb2xvclN3YXRjaCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcAppbmRleCBhYWU0Mjc0NDAwNTc2NDhmYzVlNzA1MzAzYjU4NWRkNGVlZWQ2Mjk4
Li40YzVhZGU0OWZhMDhmZTAxODFiYmNkZThjYjZlYWEwYjZhMmJlY2RmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMTA5OCw3ICsxMDk4LDcgQEAgc3RhdGljIFJHQkEzMiBw
YXJzZUNvbG9yU3RyaW5nV2l0aENyYXp5TGVnYWN5UnVsZXMoY29uc3QgU3RyaW5nJiBjb2xvclN0
cmluZykKICAgICB9CiAKICAgICBpZiAoIWRpZ2l0QnVmZmVyLnNpemUoKSkKLSAgICAgICAgcmV0
dXJuIENvbG9yOjpibGFjazsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsUkdCQTo6YmxhY2s7CiAK
ICAgICAvLyBQYWQgdGhlIGJ1ZmZlciBvdXQgdG8gYXQgbGVhc3QgdGhlIG5leHQgbXVsdGlwbGUg
b2YgdGhyZWUgaW4gc2l6ZS4KICAgICBkaWdpdEJ1ZmZlci5hcHBlbmQoJzAnKTsKQEAgLTExMzIs
NyArMTEzMiw3IEBAIHN0YXRpYyBSR0JBMzIgcGFyc2VDb2xvclN0cmluZ1dpdGhDcmF6eUxlZ2Fj
eVJ1bGVzKGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbmcpCiAgICAgcmV0dXJuIG1ha2VSR0IocmVk
VmFsdWUsIGdyZWVuVmFsdWUsIGJsdWVWYWx1ZSk7CiB9CiAKLS8vIENvbG9yIHBhcnNpbmcgdGhh
dCBtYXRjaGVzIEhUTUwncyAicnVsZXMgZm9yIHBhcnNpbmcgYSBsZWdhY3kgY29sb3IgdmFsdWUi
CisvLyBPcHRpb25hbFJHQkEgcGFyc2luZyB0aGF0IG1hdGNoZXMgSFRNTCdzICJydWxlcyBmb3Ig
cGFyc2luZyBhIGxlZ2FjeSBjb2xvciB2YWx1ZSIKIHZvaWQgSFRNTEVsZW1lbnQ6OmFkZEhUTUxD
b2xvclRvU3R5bGUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUsIENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKIHsKICAgICAvLyBBbiBl
bXB0eSBzdHJpbmcgZG9lc24ndCBhcHBseSBhIGNvbG9yLiAoT25lIGNvbnRhaW5pbmcgb25seSB3
aGl0ZXNwYWNlIGRvZXMsIHdoaWNoIGlzIHdoeSB0aGlzIGNoZWNrIG9jY3VycyBiZWZvcmUgc3Ry
aXBwaW5nLikKQEAgLTExNDYsNyArMTE0Niw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OmFkZEhUTUxD
b2xvclRvU3R5bGUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUsIENTU1Byb3BlcnR5CiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgYSBuYW1lZCBDU1MgY29s
b3Igb3IgYSAzLzYtZGlnaXQgaGV4IGNvbG9yLCB1c2UgdGhhdC4KLSAgICBDb2xvciBwYXJzZWRD
b2xvcihjb2xvclN0cmluZyk7CisgICAgT3B0aW9uYWxSR0JBIHBhcnNlZENvbG9yKGNvbG9yU3Ry
aW5nKTsKICAgICBpZiAoIXBhcnNlZENvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgcGFyc2VkQ29s
b3Iuc2V0UkdCKHBhcnNlQ29sb3JTdHJpbmdXaXRoQ3JhenlMZWdhY3lSdWxlcyhjb2xvclN0cmlu
ZykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmNwcAppbmRleCA0MzgzNzA0ZjI1
MzNjNzZlMTBkNzYzOGM0MzNjMzE2N2VlOGRhNzk4Li5hYjZlZTlmMzMzNDk3MjRiY2E2MDhlZGI5
OTQ3ZjBmZmNkMzdiNzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAKQEAg
LTg0LDcgKzg0LDcgQEAgdm9pZCBIVE1MSFJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50
YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmEKICAgICAgICAgaWYgKCFmYXN0
SGFzQXR0cmlidXRlKGNvbG9yQXR0cikpIHsKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVz
ZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwgQ1NT
VmFsdWVTb2xpZCk7CiAKLSAgICAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZGFy
a0dyYXlWYWx1ZSA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUNvbG9yVmFsdWUoQ29sb3I6OmRhcmtH
cmF5KTsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZGFya0dyYXlWYWx1
ZSA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUNvbG9yVmFsdWUoT3B0aW9uYWxSR0JBOjpkYXJrR3Jh
eSk7CiAgICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckNvbG9y
LCBkYXJrR3JheVZhbHVlKTsKICAgICAgICAgICAgIHN0eWxlLnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yLCBkYXJrR3JheVZhbHVlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggOWE0ZGRlYzVjMWQxMTZmZDE2OGU2
ZDk1NTgxYjFjYmY3MzE3YzA1Yi4uNDk3Y2M4ZWVmYTY4YTc4ZjI1ODJjYjAwMjI1N2NkMWFiYzll
N2M5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xNTQy
LDcgKzE1NDIsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnJlcXVpcmVkQXR0cmlidXRlQ2hh
bmdlZCgpCiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLXZvaWQgSFRNTElucHV0
RWxlbWVudDo6c2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3Nlcihjb25zdCBDb2xvciYgY29sb3IpCit2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdENvbG9ySW5Db2xvckNob29zZXIoY29uc3QgT3B0
aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICBpZiAoIW1faW5wdXRUeXBlLT5pc0NvbG9yQ29udHJv
bCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5o
CmluZGV4IDliMjc1MDQxOWI0ZmM4NzI5Njk5MGYyZmVjODU4ZTUwZTllZDhhZGMuLmJhZTQ1MDcy
YTdkMGZkZjAwMGY4NjRkZmM2ZDI2MjhiYmZiMDFlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5oCkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxF
KElOUFVUX1RZUEVfQ09MT1IpCiAgICAgLy8gRm9yIHRlc3QgcHVycG9zZXMuCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKGNvbnN0IENvbG9yJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKGNvbnN0IE9w
dGlvbmFsUkdCQSYpOwogI2VuZGlmCiAKICAgICBTdHJpbmcgZGVmYXVsdFRvb2xUaXAoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmNwcAppbmRl
eCA0M2FkZjM2MTcwZDVhMTZjOGE3ZjkzMjkxYzM5ODY0ZjQzMTQzZDBkLi45ZDU4M2ZjNTcwNmJj
ODhjMzg3MTg3MzU4ZWNjYTJjM2YzMWM4NGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzR3JhZGllbnQuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgQ2FudmFzR3Jh
ZGllbnQ6OmFkZENvbG9yU3RvcChmbG9hdCB2YWx1ZSwgY29uc3QgU3RyaW5nJiBjb2xvciwgRXhj
ZXB0aW9uQ29kCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2dyYWRpZW50LT5hZGRD
b2xvclN0b3AodmFsdWUsIENvbG9yKHJnYmEpKTsKKyAgICBtX2dyYWRpZW50LT5hZGRDb2xvclN0
b3AodmFsdWUsIE9wdGlvbmFsUkdCQShyZ2JhKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAppbmRleCA3NjdjNjJjM2NjMGZiYTU0YzBlMGNhMDNiYTRiOTFkOWJhNGUyY2IzLi4w
NzJmYWE0YjE4MjUyNDQ5MWVlYmQ1YjM4ZDg2Mjc1ZDZlYzFjZWY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAK
QEAgLTE1OSwxNCArMTU5LDE0IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZXNl
dCgpCiB9CiAKIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6U3RhdGU6OlN0YXRlKCkKLSAgICA6
IG1fc3Ryb2tlU3R5bGUoQ29sb3I6OmJsYWNrKQotICAgICwgbV9maWxsU3R5bGUoQ29sb3I6OmJs
YWNrKQorICAgIDogbV9zdHJva2VTdHlsZShPcHRpb25hbFJHQkE6OmJsYWNrKQorICAgICwgbV9m
aWxsU3R5bGUoT3B0aW9uYWxSR0JBOjpibGFjaykKICAgICAsIG1fbGluZVdpZHRoKDEpCiAgICAg
LCBtX2xpbmVDYXAoQnV0dENhcCkKICAgICAsIG1fbGluZUpvaW4oTWl0ZXJKb2luKQogICAgICwg
bV9taXRlckxpbWl0KDEwKQogICAgICwgbV9zaGFkb3dCbHVyKDApCi0gICAgLCBtX3NoYWRvd0Nv
bG9yKENvbG9yOjp0cmFuc3BhcmVudCkKKyAgICAsIG1fc2hhZG93Q29sb3IoT3B0aW9uYWxSR0JB
Ojp0cmFuc3BhcmVudCkKICAgICAsIG1fZ2xvYmFsQWxwaGEoMSkKICAgICAsIG1fZ2xvYmFsQ29t
cG9zaXRlKENvbXBvc2l0ZVNvdXJjZU92ZXIpCiAgICAgLCBtX2dsb2JhbEJsZW5kKEJsZW5kTW9k
ZU5vcm1hbCkKQEAgLTQ3NCw3ICs0NzQsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6c2V0U2hhZG93Qmx1cihmbG9hdCBibHVyKQogCiBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzaGFkb3dDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIENvbG9yKHN0YXRlKCku
bV9zaGFkb3dDb2xvcikuc2VyaWFsaXplZCgpOworICAgIHJldHVybiBPcHRpb25hbFJHQkEoc3Rh
dGUoKS5tX3NoYWRvd0NvbG9yKS5zZXJpYWxpemVkKCk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpzZXRTaGFkb3dDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yKQpAQCAtMTA5
NSw3ICsxMDk1LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyUmVjdChm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGUKICAgICBpZiAoc2hvdWxkRHJh
d1NoYWRvd3MoKSkgewogICAgICAgICBjb250ZXh0LT5zYXZlKCk7CiAgICAgICAgIHNhdmVkID0g
dHJ1ZTsKLSAgICAgICAgY29udGV4dC0+c2V0TGVnYWN5U2hhZG93KEZsb2F0U2l6ZSgpLCAwLCBD
b2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0
LT5zZXRMZWdhY3lTaGFkb3coRmxvYXRTaXplKCksIDAsIE9wdGlvbmFsUkdCQTo6dHJhbnNwYXJl
bnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIH0KICAgICBpZiAoc3RhdGUoKS5tX2dsb2Jh
bEFscGhhICE9IDEpIHsKICAgICAgICAgaWYgKCFzYXZlZCkgewpAQCAtMTE5Myw3ICsxMTkzLDcg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVJlY3QoZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGgKIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyKQogewot
ICAgIHNldFNoYWRvdyhGbG9hdFNpemUod2lkdGgsIGhlaWdodCksIGJsdXIsIENvbG9yOjp0cmFu
c3BhcmVudCk7CisgICAgc2V0U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgYmx1ciwg
T3B0aW9uYWxSR0JBOjp0cmFuc3BhcmVudCk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwg
Y29uc3QgU3RyaW5nJiBjb2xvcikKQEAgLTEyMzQsNyArMTIzNCw3IEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxv
YXQgYmx1ciwKIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyU2hhZG93KCkK
IHsKLSAgICBzZXRTaGFkb3coRmxvYXRTaXplKCksIDAsIENvbG9yOjp0cmFuc3BhcmVudCk7Cisg
ICAgc2V0U2hhZG93KEZsb2F0U2l6ZSgpLCAwLCBPcHRpb25hbFJHQkE6OnRyYW5zcGFyZW50KTsK
IH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhjb25zdCBGbG9h
dFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgUkdCQTMyIGNvbG9yKQpAQCAtMTI2Miw3ICsxMjYy
LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFwcGx5U2hhZG93KCkKICAgICAg
ICAgZmxvYXQgaGVpZ2h0ID0gc3RhdGUoKS5tX3NoYWRvd09mZnNldC5oZWlnaHQoKTsKICAgICAg
ICAgYy0+c2V0TGVnYWN5U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCku
bV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwogICAgIH0gZWxzZQotICAgICAgICBjLT5zZXRMZWdhY3lTaGFkb3coRmxvYXRTaXplKCksIDAs
IENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGMtPnNl
dExlZ2FjeVNoYWRvdyhGbG9hdFNpemUoKSwgMCwgT3B0aW9uYWxSR0JBOjp0cmFuc3BhcmVudCwg
Q29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzaG91bGREcmF3U2hhZG93cygpIGNvbnN0CkBAIC0yMzcwLDcgKzIzNzAsNyBAQCB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRl
eHQsIGZsb2F0IHgsIGZsbwogCiAgICAgICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0Owog
ICAgICAgICAgICAgZmxvYXQgc2hhZG93UmFkaXVzOwotICAgICAgICAgICAgQ29sb3Igc2hhZG93
Q29sb3I7CisgICAgICAgICAgICBPcHRpb25hbFJHQkEgc2hhZG93Q29sb3I7CiAgICAgICAgICAg
ICBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2U7CiAgICAgICAgICAgICBjLT5nZXRTaGFkb3co
c2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNl
KTsKIApAQCAtMjM4NCw5ICsyMzg0LDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8KICAgICAg
ICAgICAgIGMtPnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hh
ZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogCiAgICAgICAgICAgICBpZiAoZmlsbCkKLSAg
ICAgICAgICAgICAgICBjLT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgICAgICAgICBjLT5zZXRGaWxsQ29sb3IoT3B0aW9uYWxSR0JBOjpi
bGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgYy0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICAgICAgICAgICAgICBjLT5zZXRTdHJva2VDb2xvcihPcHRpb25hbFJHQkE6OmJsYWNr
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgICAgICAgICAgYy0+ZHJhd0JpZGlUZXh0KGZv
bnQsIHRleHRSdW4sIGxvY2F0aW9uICsgb2Zmc2V0LCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJ
ZkZvbnROb3RSZWFkeSk7CiAgICAgICAgIH0KQEAgLTIzOTYsOSArMjM5Niw5IEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4
dCwgZmxvYXQgeCwgZmxvCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogbWFza0ltYWdlQ29udGV4
dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgICAgIGlmIChmaWxsKQotICAgICAgICAg
ICAgbWFza0ltYWdlQ29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFj
ZURldmljZVJHQik7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT5zZXRGaWxsQ29sb3Io
T3B0aW9uYWxSR0JBOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJs
YWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQt
PnNldFN0cm9rZUNvbG9yKE9wdGlvbmFsUkdCQTo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwogICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGMtPnN0
cm9rZVRoaWNrbmVzcygpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNTdHlsZS5jcHAKaW5kZXggZDM1OGEyMTc5NTg4Mzk2YmZiNzBhNWZkN2NlYjUyODAy
NGZlMzkxOS4uMjQ3NDVhZGU1Nzg1OWNjY2U3NGRiNzkzNGZhYWI0NWQ3ZGIwODZkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcApAQCAtNTksOCArNTksOCBA
QCBzdGF0aWMgQ29sb3JQYXJzZVJlc3VsdCBwYXJzZUNvbG9yKFJHQkEzMiYgcGFyc2VkQ29sb3Is
IGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbgogUkdCQTMyIGN1cnJlbnRDb2xvcihIVE1MQ2FudmFz
RWxlbWVudCogY2FudmFzKQogewogICAgIGlmICghY2FudmFzIHx8ICFjYW52YXMtPmluRG9jdW1l
bnQoKSB8fCAhY2FudmFzLT5pbmxpbmVTdHlsZSgpKQotICAgICAgICByZXR1cm4gQ29sb3I6OmJs
YWNrOwotICAgIFJHQkEzMiByZ2JhID0gQ29sb3I6OmJsYWNrOworICAgICAgICByZXR1cm4gT3B0
aW9uYWxSR0JBOjpibGFjazsKKyAgICBSR0JBMzIgcmdiYSA9IE9wdGlvbmFsUkdCQTo6YmxhY2s7
CiAgICAgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIGNhbnZhcy0+aW5saW5lU3R5bGUoKS0+
Z2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUNvbG9yKSk7CiAgICAgcmV0dXJuIHJnYmE7CiB9
CkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlTdHJva2VDb2xvcihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q01ZS0E6IHsKICAgICAgICAgLy8gRklYTUU6IERvIHRoaXMgdGhyb3VnaCBwbGF0Zm9ybS1pbmRl
cGVuZGVudCBHcmFwaGljc0NvbnRleHQgQVBJLgotICAgICAgICAvLyBXZSdsbCBuZWVkIGEgZmFu
Y2llciBDb2xvciBhYnN0cmFjdGlvbiB0byBzdXBwb3J0IENNWUtBIGNvcnJlY3RseQorICAgICAg
ICAvLyBXZSdsbCBuZWVkIGEgZmFuY2llciBPcHRpb25hbFJHQkEgYWJzdHJhY3Rpb24gdG8gc3Vw
cG9ydCBDTVlLQSBjb3JyZWN0bHkKICNpZiBVU0UoQ0cpCiAgICAgICAgIENHQ29udGV4dFNldENN
WUtTdHJva2VDb2xvcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgbV9jbXlrYS0+YywgbV9j
bXlrYS0+bSwgbV9jbXlrYS0+eSwgbV9jbXlrYS0+aywgbV9jbXlrYS0+YSk7CiAjZWxzZQpAQCAt
Mjc3LDcgKzI3Nyw3IEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCkgY29uc3QKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDTVlLQTog
ewogICAgICAgICAvLyBGSVhNRTogRG8gdGhpcyB0aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50
IEdyYXBoaWNzQ29udGV4dCBBUEkuCi0gICAgICAgIC8vIFdlJ2xsIG5lZWQgYSBmYW5jaWVyIENv
bG9yIGFic3RyYWN0aW9uIHRvIHN1cHBvcnQgQ01ZS0EgY29ycmVjdGx5CisgICAgICAgIC8vIFdl
J2xsIG5lZWQgYSBmYW5jaWVyIE9wdGlvbmFsUkdCQSBhYnN0cmFjdGlvbiB0byBzdXBwb3J0IENN
WUtBIGNvcnJlY3RseQogI2lmIFVTRShDRykKICAgICAgICAgQ0dDb250ZXh0U2V0Q01ZS0ZpbGxD
b2xvcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgbV9jbXlrYS0+YywgbV9jbXlrYS0+bSwg
bV9jbXlrYS0+eSwgbV9jbXlrYS0+aywgbV9jbXlrYS0+YSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgKaW5kZXggOWJlYjE2MjY5YTU2NzBjNGI4MzIyMDkx
MzBhOGJiM2FlYjM2ZjQzYi4uY2UyZGY2ZTkxZWQyYTBiMGRiNGUyYTNkNTJmYjAyOGJlYjZlMWVk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCkBAIC0xMzUsOCAr
MTM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBSR0JBIHx8IG1fdHlwZSA9PSBDTVlLQSk7CiAgICAgICAgIGlmIChtX3R5cGUgPT0gUkdC
QSkKLSAgICAgICAgICAgIHJldHVybiBDb2xvcihtX3JnYmEpLnNlcmlhbGl6ZWQoKTsKLSAgICAg
ICAgcmV0dXJuIENvbG9yKG1fY215a2EtPnJnYmEpLnNlcmlhbGl6ZWQoKTsKKyAgICAgICAgICAg
IHJldHVybiBPcHRpb25hbFJHQkEobV9yZ2JhKS5zZXJpYWxpemVkKCk7CisgICAgICAgIHJldHVy
biBPcHRpb25hbFJHQkEobV9jbXlrYS0+cmdiYSkuc2VyaWFsaXplZCgpOwogICAgIH0KIAogICAg
IGlubGluZSBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoQ2FudmFzU3R5bGUmJiBvdGhlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKaW5kZXgg
MzM0YzQ3ZTQ3MzZkZTI2ZTAyNmI4ZDdkZDYyMzlhOTg3MTcwM2MyMi4uNzVlYWE4OGU0ZWUyYjM1
MGJhNzVjZWIwZjdhYTVhNThhZjgzYzdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKQEAgLTYxLDEzICs2MSwxMyBAQCBwdWJsaWM6CiAg
ICAgU3RyaW5nIGZvbnROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mb250TmFtZTsgfQogICAgIHZv
aWQgc2V0Rm9udE5hbWUoU3RyaW5nIG5hbWUpIHsgbV9mb250TmFtZSA9IG5hbWU7IH0KIAotICAg
IENvbG9yIGZvcmVncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9yZWdyb3VuZENvbG9y
OyB9CisgICAgT3B0aW9uYWxSR0JBIGZvcmVncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
Zm9yZWdyb3VuZENvbG9yOyB9CiAgICAgdm9pZCBzZXRGb3JlZ3JvdW5kQ29sb3IoUkdCQTMyIGNv
bG9yKSB7IG1fZm9yZWdyb3VuZENvbG9yLnNldFJHQihjb2xvcik7IH0KICAgICAKLSAgICBDb2xv
ciBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQor
ICAgIE9wdGlvbmFsUkdCQSBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tn
cm91bmRDb2xvcjsgfQogICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKFJHQkEzMiBjb2xvcikg
eyBtX2JhY2tncm91bmRDb2xvci5zZXRSR0IoY29sb3IpOyB9CiAgICAgCi0gICAgQ29sb3IgaGln
aGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX2hpZ2hsaWdodENvbG9yOyB9CisgICAgT3B0
aW9uYWxSR0JBIGhpZ2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9oaWdobGlnaHRDb2xv
cjsgfQogICAgIHZvaWQgc2V0SGlnaGxpZ2h0Q29sb3IoUkdCQTMyIGNvbG9yKSB7IG1faGlnaGxp
Z2h0Q29sb3Iuc2V0UkdCKGNvbG9yKTsgfQogICAgIAogICAgIHZpcnR1YWwgdm9pZCBzZXRGb250
U2l6ZShpbnQsIGNvbnN0IEludFNpemUmLCBib29sIGltcG9ydGFudCkgb3ZlcnJpZGU7CkBAIC04
NCw5ICs4NCw5IEBAIHByaXZhdGU6CiAKICAgICBUZXh0VHJhY2tDdWVHZW5lcmljKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUm
IGVuZCwgY29uc3QgU3RyaW5nJik7CiAgICAgCi0gICAgQ29sb3IgbV9mb3JlZ3JvdW5kQ29sb3I7
Ci0gICAgQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7Ci0gICAgQ29sb3IgbV9oaWdobGlnaHRDb2xv
cjsKKyAgICBPcHRpb25hbFJHQkEgbV9mb3JlZ3JvdW5kQ29sb3I7CisgICAgT3B0aW9uYWxSR0JB
IG1fYmFja2dyb3VuZENvbG9yOworICAgIE9wdGlvbmFsUkdCQSBtX2hpZ2hsaWdodENvbG9yOwog
ICAgIGRvdWJsZSBtX2Jhc2VGb250U2l6ZVJlbGF0aXZlVG9WaWRlb0hlaWdodDsKICAgICBkb3Vi
bGUgbV9mb250U2l6ZU11bHRpcGxpZXI7CiAgICAgU3RyaW5nIG1fZm9udE5hbWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA1NjQ4Mjlm
YzFjZDYwZTM1YzhmZGQwMzk1ZmNhOWE5MTExNGNjMzA3Li5jMWI3OGZhYjJiODgxNjEzODQyZWRi
MjA4MDU4YThjMTIwZjdjMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKQEAgLTEwNCwyMCArMTA0LDIwIEBAIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heFRleHRTaXplID0gMTAwMDA7CiBzdGF0
aWMgY29uc3QgVUNoYXIgZWxsaXBzaXNVQ2hhcltdID0geyAweDIwMjYsIDAgfTsKIAotc3RhdGlj
IENvbG9yIHBhcnNlQ29sb3IoY29uc3QgSW5zcGVjdG9yT2JqZWN0KiBjb2xvck9iamVjdCkKK3N0
YXRpYyBPcHRpb25hbFJHQkEgcGFyc2VDb2xvcihjb25zdCBJbnNwZWN0b3JPYmplY3QqIGNvbG9y
T2JqZWN0KQogewogICAgIGlmICghY29sb3JPYmplY3QpCi0gICAgICAgIHJldHVybiBDb2xvcjo6
dHJhbnNwYXJlbnQ7CisgICAgICAgIHJldHVybiBPcHRpb25hbFJHQkE6OnRyYW5zcGFyZW50Owog
CiAgICAgaW50IHIgPSAwOwogICAgIGludCBnID0gMDsKICAgICBpbnQgYiA9IDA7CiAgICAgaWYg
KCFjb2xvck9iamVjdC0+Z2V0SW50ZWdlcigiciIsIHIpIHx8ICFjb2xvck9iamVjdC0+Z2V0SW50
ZWdlcigiZyIsIGcpIHx8ICFjb2xvck9iamVjdC0+Z2V0SW50ZWdlcigiYiIsIGIpKQotICAgICAg
ICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50OworICAgICAgICByZXR1cm4gT3B0aW9uYWxSR0JB
Ojp0cmFuc3BhcmVudDsKIAogICAgIGRvdWJsZSBhID0gMS4wOwogICAgIGlmICghY29sb3JPYmpl
Y3QtPmdldERvdWJsZSgiYSIsIGEpKQotICAgICAgICByZXR1cm4gQ29sb3IociwgZywgYik7Cisg
ICAgICAgIHJldHVybiBPcHRpb25hbFJHQkEociwgZywgYik7CiAKICAgICAvLyBDbGFtcCBhbHBo
YSB0byB0aGUgWzAuLjFdIHJhbmdlLgogICAgIGlmIChhIDwgMCkKQEAgLTEyNSwxMCArMTI1LDEw
IEBAIHN0YXRpYyBDb2xvciBwYXJzZUNvbG9yKGNvbnN0IEluc3BlY3Rvck9iamVjdCogY29sb3JP
YmplY3QpCiAgICAgZWxzZSBpZiAoYSA+IDEpCiAgICAgICAgIGEgPSAxOwogCi0gICAgcmV0dXJu
IENvbG9yKHIsIGcsIGIsIHN0YXRpY19jYXN0PGludD4oYSAqIDI1NSkpOworICAgIHJldHVybiBP
cHRpb25hbFJHQkEociwgZywgYiwgc3RhdGljX2Nhc3Q8aW50PihhICogMjU1KSk7CiB9CiAKLXN0
YXRpYyBDb2xvciBwYXJzZUNvbmZpZ0NvbG9yKGNvbnN0IFN0cmluZyYgZmllbGROYW1lLCBjb25z
dCBJbnNwZWN0b3JPYmplY3QqIGNvbmZpZ09iamVjdCkKK3N0YXRpYyBPcHRpb25hbFJHQkEgcGFy
c2VDb25maWdDb2xvcihjb25zdCBTdHJpbmcmIGZpZWxkTmFtZSwgY29uc3QgSW5zcGVjdG9yT2Jq
ZWN0KiBjb25maWdPYmplY3QpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY29sb3JP
YmplY3Q7CiAgICAgY29uZmlnT2JqZWN0LT5nZXRPYmplY3QoZmllbGROYW1lLCBjb2xvck9iamVj
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zlcmxh
eS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaAppbmRleCAw
MTE0NjRlY2ExMDFjOGRkYTkwNGU3NDE1MDRjMzVjZmU4NmQ0YTUyLi5hMGE5MjQ4NmI5NGMzNWI1
YWU3ZjM1MzllYTdkNjZiNjg0NmNkYjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JPdmVybGF5LmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgTm9kZUhpZ2hsaWdodERh
dGE7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29sb3I7CitjbGFzcyBPcHRpb25h
bFJHQkE7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBj
bGFzcyBJbnRSZWN0OwpAQCAtNjMsMTEgKzYzLDExIEBAIGNsYXNzIFBhZ2U7CiBzdHJ1Y3QgSGln
aGxpZ2h0Q29uZmlnIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBDb2xvciBjb250ZW50OwotICAgIENvbG9yIGNvbnRlbnRPdXRsaW5lOwotICAgIENvbG9yIHBh
ZGRpbmc7Ci0gICAgQ29sb3IgYm9yZGVyOwotICAgIENvbG9yIG1hcmdpbjsKKyAgICBPcHRpb25h
bFJHQkEgY29udGVudDsKKyAgICBPcHRpb25hbFJHQkEgY29udGVudE91dGxpbmU7CisgICAgT3B0
aW9uYWxSR0JBIHBhZGRpbmc7CisgICAgT3B0aW9uYWxSR0JBIGJvcmRlcjsKKyAgICBPcHRpb25h
bFJHQkEgbWFyZ2luOwogICAgIGJvb2wgc2hvd0luZm87CiAgICAgYm9vbCB1c2VQYWdlQ29vcmRp
bmF0ZXM7CiB9OwpAQCAtOTEsMTEgKzkxLDExIEBAIHN0cnVjdCBIaWdobGlnaHQgewogICAgICAg
ICB1c2VQYWdlQ29vcmRpbmF0ZXMgPSBoaWdobGlnaHRDb25maWcudXNlUGFnZUNvb3JkaW5hdGVz
OwogICAgIH0KIAotICAgIENvbG9yIGNvbnRlbnRDb2xvcjsKLSAgICBDb2xvciBjb250ZW50T3V0
bGluZUNvbG9yOwotICAgIENvbG9yIHBhZGRpbmdDb2xvcjsKLSAgICBDb2xvciBib3JkZXJDb2xv
cjsKLSAgICBDb2xvciBtYXJnaW5Db2xvcjsKKyAgICBPcHRpb25hbFJHQkEgY29udGVudENvbG9y
OworICAgIE9wdGlvbmFsUkdCQSBjb250ZW50T3V0bGluZUNvbG9yOworICAgIE9wdGlvbmFsUkdC
QSBwYWRkaW5nQ29sb3I7CisgICAgT3B0aW9uYWxSR0JBIGJvcmRlckNvbG9yOworICAgIE9wdGlv
bmFsUkdCQSBtYXJnaW5Db2xvcjsKIAogICAgIEhpZ2hsaWdodFR5cGUgdHlwZSB7SGlnaGxpZ2h0
VHlwZTo6Tm9kZX07CiAgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGVhOTI1NWM4MjBmMjNkNGE5NGNkNWRjYzJhYjBl
ZmM5NmMxNTYyZTEuLjljMDg1YzAyMmQxNDQwMGY2ZmEwMzlmNTIwNWY3MjhlZTZlMjhkNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAg
UmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gRW1wdHlDaHJvbWVDbGllbnQ6OmNyZWF0ZVNlYXJjaFBv
cHVwTWVudShQb3B1cE1lbnVDbGllbnQKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQotc3RkOjp1bmlxdWVfcHRyPENvbG9yQ2hvb3Nlcj4gRW1wdHlDaHJvbWVDbGllbnQ6OmNyZWF0
ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqLCBjb25zdCBDb2xvciYpCitzdGQ6OnVu
aXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9v
c2VyKENvbG9yQ2hvb3NlckNsaWVudCosIGNvbnN0IE9wdGlvbmFsUkdCQSYpCiB7CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggOGM1
N2Q2ZTRkYWU2YmU2NDA2MTc5ZmFlYWY0MjRmYzE1ZGI4NDVlZC4uZjIzMmZlODgzYzViMWJjMmEx
ZWFhY2U0YmE5MDZhYjRhZWJmOTJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aApAQCAtMTU4LDcgKzE1OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGludDY0X3QpIG92ZXJy
aWRlIHsgfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgdmlydHVhbCBzdGQ6
OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9vc2Vy
Q2xpZW50KiwgY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVl
X3B0cjxDb2xvckNob29zZXI+IGNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQq
LCBjb25zdCBPcHRpb25hbFJHQkEmKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2
b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYzlkZmYy
MmI5N2Y0ZmJjM2ZhMDY0YTk1M2ViMDU3ZWMwYTgzOWQwZS4uNzA2YjI2MGJiMzE5MmZlNDUxZTcw
YTM5NWQwODM4MjAwOTBkMDAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogICAgIGNsYXNzIENhY2hlZEZyYW1lOwogICAgIGNs
YXNzIENhY2hlZFJlc291cmNlUmVxdWVzdDsKLSAgICBjbGFzcyBDb2xvcjsKKyAgICBjbGFzcyBP
cHRpb25hbFJHQkE7CiAgICAgY2xhc3MgRE9NV2luZG93RXh0ZW5zaW9uOwogICAgIGNsYXNzIERP
TVdyYXBwZXJXb3JsZDsKICAgICBjbGFzcyBEb2N1bWVudExvYWRlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKaW5kZXgg
NmExZTliNzI5NDZkNzhkY2M2YjgwNmQxNzRhNGNkZTE4NDhkZDA5MS4uZmZlNTU0MzViNDYwNmNm
ZDg0ZDM2ODdkZGZmYjdkNDkzMzhkYmNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKQEAgLTIyNiwxNSArMjI2LDE1
IEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNXaW5kb3dD
U1MoKSBjb25zdAogICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKICAg
ICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY29sb3IgPSBhZG9wdENGKE1BQ2FwdGlvbkFwcGVhcmFu
Y2VDb3B5V2luZG93Q29sb3Ioa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZp
b3IpKTsKIAotICAgIENvbG9yIHdpbmRvd0NvbG9yKGNvbG9yLmdldCgpKTsKKyAgICBPcHRpb25h
bFJHQkEgd2luZG93Q29sb3IoY29sb3IuZ2V0KCkpOwogICAgIGlmICghd2luZG93Q29sb3IuaXNW
YWxpZCgpKQotICAgICAgICB3aW5kb3dDb2xvciA9IENvbG9yOjp0cmFuc3BhcmVudDsKKyAgICAg
ICAgd2luZG93Q29sb3IgPSBPcHRpb25hbFJHQkE6OnRyYW5zcGFyZW50OwogCiAgICAgYm9vbCBp
bXBvcnRhbnQgPSBiZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFs
dWU7CiAgICAgQ0dGbG9hdCBvcGFjaXR5ID0gTUFDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd09w
YWNpdHkoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpOwogICAgIGlm
ICghaW1wb3J0YW50KQogICAgICAgICBpbXBvcnRhbnQgPSBiZWhhdmlvciA9PSBrTUFDYXB0aW9u
QXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWU7Ci0gICAgU3RyaW5nIHdpbmRvd1N0eWxlID0gY29s
b3JQcm9wZXJ0eUNTUyhDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ29sb3Iod2luZG93Q29s
b3IucmVkKCksIHdpbmRvd0NvbG9yLmdyZWVuKCksIHdpbmRvd0NvbG9yLmJsdWUoKSwgc3RhdGlj
X2Nhc3Q8aW50PihvcGFjaXR5ICogMjU1KSksIGltcG9ydGFudCk7CisgICAgU3RyaW5nIHdpbmRv
d1N0eWxlID0gY29sb3JQcm9wZXJ0eUNTUyhDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgT3B0
aW9uYWxSR0JBKHdpbmRvd0NvbG9yLnJlZCgpLCB3aW5kb3dDb2xvci5ncmVlbigpLCB3aW5kb3dD
b2xvci5ibHVlKCksIHN0YXRpY19jYXN0PGludD4ob3BhY2l0eSAqIDI1NSkpLCBpbXBvcnRhbnQp
OwogCiAgICAgaWYgKCFvcGFjaXR5KQogICAgICAgICByZXR1cm4gd2luZG93U3R5bGU7CkBAIC0y
NDYsMTIgKzI0NiwxMiBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNh
cHRpb25zQmFja2dyb3VuZENTUygpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBkZWZhdWx0IHZhbHVl
IG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIG9uZSBzcGVjaWZpZWQgaW4gbWVkaWFDb250cm9scy5j
c3MgZm9yIC13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1wYXN0LW5vZGVzCiAgICAgLy8gYW5kIHdl
YmtpdC1tZWRpYS10ZXh0LXRyYWNrLWZ1dHVyZS1ub2Rlcy4KLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQ29sb3IsIGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IsIChDb2xvcigwLCAw
LCAwLCAwLjggKiAyNTUpKSk7CisgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE9w
dGlvbmFsUkdCQSwgZGVmYXVsdEJhY2tncm91bmRDb2xvciwgKE9wdGlvbmFsUkdCQSgwLCAwLCAw
LCAwLjggKiAyNTUpKSk7CiAKICAgICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZp
b3I7CiAKICAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY29sb3IgPSBhZG9wdENGKE1BQ2FwdGlv
bkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWlu
VXNlciwgJmJlaGF2aW9yKSk7Ci0gICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKGNvbG9yLmdldCgp
KTsKKyAgICBPcHRpb25hbFJHQkEgYmFja2dyb3VuZENvbG9yKGNvbG9yLmdldCgpKTsKICAgICBp
ZiAoIWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIGJhY2tncm91bmRDb2xvciA9
IGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3I7CiAKQEAgLTI1OSwyOSArMjU5LDI5IEBAIFN0cmluZyBD
YXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNCYWNrZ3JvdW5kQ1NTKCkgY29u
c3QKICAgICBDR0Zsb2F0IG9wYWNpdHkgPSBNQUNhcHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3Vu
ZE9wYWNpdHkoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpOwogICAg
IGlmICghaW1wb3J0YW50KQogICAgICAgICBpbXBvcnRhbnQgPSBiZWhhdmlvciA9PSBrTUFDYXB0
aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWU7Ci0gICAgcmV0dXJuIGNvbG9yUHJvcGVydHlD
U1MoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIENvbG9yKGJhY2tncm91bmRDb2xvci5yZWQo
KSwgYmFja2dyb3VuZENvbG9yLmdyZWVuKCksIGJhY2tncm91bmRDb2xvci5ibHVlKCksIHN0YXRp
Y19jYXN0PGludD4ob3BhY2l0eSAqIDI1NSkpLCBpbXBvcnRhbnQpOworICAgIHJldHVybiBjb2xv
clByb3BlcnR5Q1NTKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBPcHRpb25hbFJHQkEoYmFj
a2dyb3VuZENvbG9yLnJlZCgpLCBiYWNrZ3JvdW5kQ29sb3IuZ3JlZW4oKSwgYmFja2dyb3VuZENv
bG9yLmJsdWUoKSwgc3RhdGljX2Nhc3Q8aW50PihvcGFjaXR5ICogMjU1KSksIGltcG9ydGFudCk7
CiB9CiAKLUNvbG9yIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc1RleHRD
b2xvcihib29sJiBpbXBvcnRhbnQpIGNvbnN0CitPcHRpb25hbFJHQkEgQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zVGV4dENvbG9yKGJvb2wmIGltcG9ydGFudCkgY29uc3QK
IHsKICAgICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CiAgICAgUmV0YWlu
UHRyPENHQ29sb3JSZWY+IGNvbG9yID0gYWRvcHRDRihNQUNhcHRpb25BcHBlYXJhbmNlQ29weUZv
cmVncm91bmRDb2xvcihrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcikp
OwotICAgIENvbG9yIHRleHRDb2xvcihjb2xvci5nZXQoKSk7CisgICAgT3B0aW9uYWxSR0JBIHRl
eHRDb2xvcihjb2xvci5nZXQoKSk7CiAgICAgaWYgKCF0ZXh0Q29sb3IuaXNWYWxpZCgpKQogICAg
ICAgICAvLyBUaGlzIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgb25lIHNw
ZWNpZmllZCBpbiBtZWRpYUNvbnRyb2xzLmNzcyBmb3IgLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNr
LWNvbnRhaW5lci4KLSAgICAgICAgdGV4dENvbG9yID0gQ29sb3I6OndoaXRlOworICAgICAgICB0
ZXh0Q29sb3IgPSBPcHRpb25hbFJHQkE6OndoaXRlOwogICAgIAogICAgIGltcG9ydGFudCA9IGJl
aGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1ZTsKICAgICBDR0Zs
b2F0IG9wYWNpdHkgPSBNQUNhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHkoa01B
Q2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpOwogICAgIGlmICghaW1wb3J0
YW50KQogICAgICAgICBpbXBvcnRhbnQgPSBiZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5j
ZUJlaGF2aW9yVXNlVmFsdWU7Ci0gICAgcmV0dXJuIENvbG9yKHRleHRDb2xvci5yZWQoKSwgdGV4
dENvbG9yLmdyZWVuKCksIHRleHRDb2xvci5ibHVlKCksIHN0YXRpY19jYXN0PGludD4ob3BhY2l0
eSAqIDI1NSkpOworICAgIHJldHVybiBPcHRpb25hbFJHQkEodGV4dENvbG9yLnJlZCgpLCB0ZXh0
Q29sb3IuZ3JlZW4oKSwgdGV4dENvbG9yLmJsdWUoKSwgc3RhdGljX2Nhc3Q8aW50PihvcGFjaXR5
ICogMjU1KSk7CiB9CiAgICAgCiBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6
OmNhcHRpb25zVGV4dENvbG9yQ1NTKCkgY29uc3QKIHsKICAgICBib29sIGltcG9ydGFudDsKLSAg
ICBDb2xvciB0ZXh0Q29sb3IgPSBjYXB0aW9uc1RleHRDb2xvcihpbXBvcnRhbnQpOworICAgIE9w
dGlvbmFsUkdCQSB0ZXh0Q29sb3IgPSBjYXB0aW9uc1RleHRDb2xvcihpbXBvcnRhbnQpOwogCiAg
ICAgaWYgKCF0ZXh0Q29sb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKQEAgLTMwNiwxMCArMzA2LDEwIEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRjo6d2luZG93Um91bmRlZENvcm5lclJhZGl1c0NTUygpIGNvbnN0CiAgICAgcmV0dXJuIGJ1
aWxkZXIudG9TdHJpbmcoKTsKIH0KICAgICAKLUNvbG9yIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
ZWRpYUFGOjpjYXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcihjb25zdCBDb2xvciYgdGV4dENv
bG9yKSBjb25zdAorT3B0aW9uYWxSR0JBIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpj
YXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIHRleHRDb2xv
cikgY29uc3QKIHsKLSAgICBpbnQgZGlzdGFuY2VGcm9tV2hpdGUgPSBkaWZmZXJlbmNlU3F1YXJl
ZCh0ZXh0Q29sb3IsIENvbG9yOjp3aGl0ZSk7Ci0gICAgaW50IGRpc3RhbmNlRnJvbUJsYWNrID0g
ZGlmZmVyZW5jZVNxdWFyZWQodGV4dENvbG9yLCBDb2xvcjo6YmxhY2spOworICAgIGludCBkaXN0
YW5jZUZyb21XaGl0ZSA9IGRpZmZlcmVuY2VTcXVhcmVkKHRleHRDb2xvciwgT3B0aW9uYWxSR0JB
Ojp3aGl0ZSk7CisgICAgaW50IGRpc3RhbmNlRnJvbUJsYWNrID0gZGlmZmVyZW5jZVNxdWFyZWQo
dGV4dENvbG9yLCBPcHRpb25hbFJHQkE6OmJsYWNrKTsKICAgICAKICAgICBpZiAoZGlzdGFuY2VG
cm9tV2hpdGUgPCBkaXN0YW5jZUZyb21CbGFjaykKICAgICAgICAgcmV0dXJuIHRleHRDb2xvci5k
YXJrKCk7CkBAIC0zMTcsNyArMzE3LDcgQEAgQ29sb3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUY6OmNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKGNvbnN0IENvbG9yJgogICAgIHJl
dHVybiB0ZXh0Q29sb3IubGlnaHQoKTsKIH0KIAotU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGOjpjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5SUQgaWQs
IGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IENvbG9yJiB0ZXh0Q29sb3IsIGJvb2wgaW1wb3J0
YW50KSBjb25zdAorU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjc3NQcm9w
ZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5SUQgaWQsIGNvbnN0IFN0cmluZyYgdmFs
dWUsIGNvbnN0IE9wdGlvbmFsUkdCQSYgdGV4dENvbG9yLCBib29sIGltcG9ydGFudCkgY29uc3QK
IHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgCkBAIC0zMzMsNyArMzMzLDcgQEAg
U3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjc3NQcm9wZXJ0eVdpdGhUZXh0
RWRnZUNvbG9yKENTU1Byb3BlcnR5SUQKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwog
fQogCi1TdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNvbG9yUHJvcGVydHlD
U1MoQ1NTUHJvcGVydHlJRCBpZCwgY29uc3QgQ29sb3ImIGNvbG9yLCBib29sIGltcG9ydGFudCkg
Y29uc3QKK1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y29sb3JQcm9wZXJ0
eUNTUyhDU1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yLCBib29sIGlt
cG9ydGFudCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgCkBAIC0z
NTUsNyArMzU1LDcgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0
aW9uc1RleHRFZGdlQ1NTKCkgY29uc3QKICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgU3RyaW5nLCBlZGdlU3R5bGVVbmlmb3JtLCAoIiAuMDNlbSAiLCBTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKICAgICBib29sIHVudXNlZDsKLSAgICBDb2xvciBjb2xv
ciA9IGNhcHRpb25zVGV4dENvbG9yKHVudXNlZCk7CisgICAgT3B0aW9uYWxSR0JBIGNvbG9yID0g
Y2FwdGlvbnNUZXh0Q29sb3IodW51c2VkKTsKICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKICAg
ICAgICAgY29sb3Iuc2V0TmFtZWRDb2xvcigiYmxhY2siKTsKICAgICBjb2xvciA9IGNhcHRpb25z
RWRnZUNvbG9yRm9yVGV4dENvbG9yKGNvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuaAppbmRleCBjMzM0Y2IxMzBiY2NmZjg5
MmY3YzM2M2E4YWUyNjJmMjVlMTJmZjJmLi4zZDM0ZjgwOWFjMDg3MTJkZTM0MTIxZjQ5YTA4Nzlm
Y2I3NGE0MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNZWRpYUFGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWVkaWFBRi5oCkBAIC03OSwxMyArNzksMTMgQEAgcHJpdmF0ZToKICAgICBTdHJp
bmcgY2FwdGlvbnNXaW5kb3dDU1MoKSBjb25zdDsKICAgICBTdHJpbmcgY2FwdGlvbnNCYWNrZ3Jv
dW5kQ1NTKCkgY29uc3Q7CiAgICAgU3RyaW5nIGNhcHRpb25zVGV4dENvbG9yQ1NTKCkgY29uc3Q7
Ci0gICAgQ29sb3IgY2FwdGlvbnNUZXh0Q29sb3IoYm9vbCYpIGNvbnN0OworICAgIE9wdGlvbmFs
UkdCQSBjYXB0aW9uc1RleHRDb2xvcihib29sJikgY29uc3Q7CiAgICAgU3RyaW5nIGNhcHRpb25z
RGVmYXVsdEZvbnRDU1MoKSBjb25zdDsKLSAgICBDb2xvciBjYXB0aW9uc0VkZ2VDb2xvckZvclRl
eHRDb2xvcihjb25zdCBDb2xvciYpIGNvbnN0OworICAgIE9wdGlvbmFsUkdCQSBjYXB0aW9uc0Vk
Z2VDb2xvckZvclRleHRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmKSBjb25zdDsKICAgICBTdHJp
bmcgd2luZG93Um91bmRlZENvcm5lclJhZGl1c0NTUygpIGNvbnN0OwogICAgIFN0cmluZyBjYXB0
aW9uc1RleHRFZGdlQ1NTKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGNzc1Byb3BlcnR5V2l0aFRleHRF
ZGdlQ29sb3IoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgQ29sb3ImLCBib29s
KSBjb25zdDsKLSAgICBTdHJpbmcgY29sb3JQcm9wZXJ0eUNTUyhDU1NQcm9wZXJ0eUlELCBjb25z
dCBDb2xvciYsIGJvb2wpIGNvbnN0OworICAgIFN0cmluZyBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRn
ZUNvbG9yKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IE9wdGlvbmFsUkdCQSYs
IGJvb2wpIGNvbnN0OworICAgIFN0cmluZyBjb2xvclByb3BlcnR5Q1NTKENTU1Byb3BlcnR5SUQs
IGNvbnN0IE9wdGlvbmFsUkdCQSYsIGJvb2wpIGNvbnN0OwogICAgIFRpbWVyIG1fdXBkYXRlU3R5
bGVTaGVldFRpbWVyOwogCiAgICAgYm9vbCBtX2xpc3RlbmluZ0ZvclByZWZlcmVuY2VDaGFuZ2Vz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IGQyYmZjNjUzY2JmZWMxMzAxNTQ2NDIwMDY3ZWFh
NDA4ODA5NWFlYzUuLmMzYWIyZWY3MDkyZjhkYzMwZDE2OGU5MjNkNzBhZDhkY2NlODhkNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTQzMiw3ICs0MzIsNyBAQCB2b2lkIENocm9tZTo6ZGlz
YWJsZVN1ZGRlblRlcm1pbmF0aW9uKCkKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQotc3RkOjp1bmlxdWVfcHRyPENvbG9yQ2hvb3Nlcj4gQ2hyb21lOjpjcmVhdGVDb2xvckNob29z
ZXIoQ29sb3JDaG9vc2VyQ2xpZW50KiBjbGllbnQsIGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3Ip
CitzdGQ6OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBDaHJvbWU6OmNyZWF0ZUNvbG9yQ2hvb3Nl
cihDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCwgY29uc3QgT3B0aW9uYWxSR0JBJiBpbml0aWFs
Q29sb3IpCiB7CiAgICAgbm90aWZ5UG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKCk7CiAgICAgcmV0dXJu
IG1fY2xpZW50LmNyZWF0ZUNvbG9yQ2hvb3NlcihjbGllbnQsIGluaXRpYWxDb2xvcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWUuaAppbmRleCBjMGJkODU4ODA3ODc4OGEwODFmMGVkODVlY2ZiOTQwYzliMDYyNzQ3
Li4xZTViNDFmYjg5MzcwYTU2NDg1NjliOGMxOWJlMDliNjVkZWUxNTc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmgKQEAgLTE1Niw3ICsxNTYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkaXNhYmxlU3VkZGVuVGVybWluYXRpb24oKTsKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxDb2xvckNob29zZXI+IGNyZWF0ZUNvbG9yQ2hvb3Nl
cihDb2xvckNob29zZXJDbGllbnQqLCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9yKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9v
c2VyQ2xpZW50KiwgY29uc3QgT3B0aW9uYWxSR0JBJiBpbml0aWFsQ29sb3IpOwogI2VuZGlmCiAK
ICAgICB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IGVlMGZiNDhhZjhjODM4ZWY5NjBlYmUy
MmU3YzdhZTk3Mzc5Y2ZmMGEuLmM0NWZiOWZhZmRiMGVjMGQzNzg0OGE1YTRiZTY5MDMzOTQwOTRk
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMjAwLDkgKzIwMCw5IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwcmludChGcmFtZSopID0gMDsKIAotICAgIHZpcnR1
YWwgQ29sb3IgdW5kZXJsYXlDb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7IH0KKyAgICB2
aXJ0dWFsIE9wdGlvbmFsUkdCQSB1bmRlcmxheUNvbG9yKCkgY29uc3QgeyByZXR1cm4gT3B0aW9u
YWxSR0JBKCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29s
b3JEaWRDaGFuZ2UoQ29sb3IpIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWdlRXh0ZW5k
ZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoT3B0aW9uYWxSR0JBKSBjb25zdCB7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEoRnJhbWUqLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSwgRGF0YWJhc2VEZXRhaWxzKSA9IDA7CiAKQEAgLTI3Miw3ICsyNzIsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIHZp
cnR1YWwgc3RkOjp1bmlxdWVfcHRyPENvbG9yQ2hvb3Nlcj4gY3JlYXRlQ29sb3JDaG9vc2VyKENv
bG9yQ2hvb3NlckNsaWVudCosIGNvbnN0IENvbG9yJikgPSAwOworICAgIHZpcnR1YWwgc3RkOjp1
bmlxdWVfcHRyPENvbG9yQ2hvb3Nlcj4gY3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNs
aWVudCosIGNvbnN0IE9wdGlvbmFsUkdCQSYpID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2
b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IGNhZTQzZGFkNmE3
NDA4MDQwNzRlZWIzN2JhOGM0OTk3ZjRjMGQ0Y2MuLmIxZWE5MzBmNWQ4N2I2MTIzMzA3MDdjZTQ5
YWYxMGM4NWMwZjZjY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdl
T3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMu
Y3BwCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBQYWdlT3ZlcmxheSYgb3ZlcmxheSgp
IHsgcmV0dXJuICptX292ZXJsYXk7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlZ2lvbk92ZXJsYXko
TWFpbkZyYW1lJiwgQ29sb3IpOworICAgIFJlZ2lvbk92ZXJsYXkoTWFpbkZyYW1lJiwgT3B0aW9u
YWxSR0JBKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFnZU92ZXJsYXlEZXN0cm95
ZWQoUGFnZU92ZXJsYXkmKSBmaW5hbDsKQEAgLTY4LDcgKzY4LDcgQEAgcHJvdGVjdGVkOgogICAg
IE1haW5GcmFtZSYgbV9mcmFtZTsKICAgICBSZWZQdHI8UGFnZU92ZXJsYXk+IG1fb3ZlcmxheTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVnaW9uPiBtX3JlZ2lvbjsKLSAgICBDb2xvciBtX2NvbG9y
OworICAgIE9wdGlvbmFsUkdCQSBtX2NvbG9yOwogfTsKIAogCkBAIC04MSw3ICs4MSw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheShN
YWluRnJhbWUmIGZyYW1lKQotICAgICAgICA6IFJlZ2lvbk92ZXJsYXkoZnJhbWUsIENvbG9yKDAu
NWYsIDAuMGYsIDAuMGYsIDAuNGYpKQorICAgICAgICA6IFJlZ2lvbk92ZXJsYXkoZnJhbWUsIE9w
dGlvbmFsUkdCQSgwLjVmLCAwLjBmLCAwLjBmLCAwLjRmKSkKICAgICB7CiAgICAgfQogCkBAIC0x
MjAsNyArMTIwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE5vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uT3ZlcmxheShNYWluRnJhbWUmIGZyYW1lKQotICAgICAgICA6IFJlZ2lv
bk92ZXJsYXkoZnJhbWUsIENvbG9yKDEuMGYsIDAuNWYsIDAuMGYsIDAuNGYpKQorICAgICAgICA6
IFJlZ2lvbk92ZXJsYXkoZnJhbWUsIE9wdGlvbmFsUkdCQSgxLjBmLCAwLjVmLCAwLjBmLCAwLjRm
KSkKICAgICB7CiAgICAgfQogCkBAIC0xNTMsNyArMTUzLDcgQEAgUGFzc1JlZlB0cjxSZWdpb25P
dmVybGF5PiBSZWdpb25PdmVybGF5OjpjcmVhdGUoTWFpbkZyYW1lJiBmcmFtZSwgRGVidWdQYWdl
T3ZlcmwKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVnaW9uT3ZlcmxheTo6UmVnaW9uT3Zl
cmxheShNYWluRnJhbWUmIGZyYW1lLCBDb2xvciByZWdpb25Db2xvcikKK1JlZ2lvbk92ZXJsYXk6
OlJlZ2lvbk92ZXJsYXkoTWFpbkZyYW1lJiBmcmFtZSwgT3B0aW9uYWxSR0JBIHJlZ2lvbkNvbG9y
KQogICAgIDogbV9mcmFtZShmcmFtZSkKICAgICAsIG1fb3ZlcmxheShQYWdlT3ZlcmxheTo6Y3Jl
YXRlKCp0aGlzLCBQYWdlT3ZlcmxheTo6T3ZlcmxheVR5cGU6OkRvY3VtZW50KSkKICAgICAsIG1f
Y29sb3IocmVnaW9uQ29sb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmlu
ZGV4IDhiOWU3M2FhOGNmY2Q1ODY0YzYzMmU1ZjI0ZGJiMmRmYWQ5MWI5OWUuLjk4NmQyNDJjYzA3
ZTZkNTIzZTNmYWUwYTZlYWQ1NTIxNTE1NzJkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCkBAIC00NjksNyArNDY5LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29u
Y2x1ZGVFZGl0RHJhZyhEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5zQ29sb3IoKSkgewotICAgICAgICBDb2xvciBjb2xv
ciA9IGRyYWdEYXRhLmFzQ29sb3IoKTsKKyAgICAgICAgT3B0aW9uYWxSR0JBIGNvbG9yID0gZHJh
Z0RhdGEuYXNDb2xvcigpOwogICAgICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgUmVmUHRyPFJhbmdlPiBpbm5lclJhbmdlID0gaW5u
ZXJGcmFtZS0+c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKaW5kZXggZGI2NzAxMTBiYmI4NjFlM2ExYmQzZDFkZTdiMzM0MWMwOTg5NDNhMS4uMTk1NTY4
MjZhMDc5YjFmMmMxOTU4N2YwN2E5MjExYjJlZWMwZWM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
QEAgLTg3Myw3ICs4NzMsNyBAQCBSZWZQdHI8UmFuZ2U+IEZyYW1lOjpyYW5nZUZvclBvaW50KGNv
bnN0IEludFBvaW50JiBmcmFtZVBvaW50KQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lk
IEZyYW1lOjpjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgQ29s
b3ImIGJhY2tncm91bmRDb2xvciwgYm9vbCB0cmFuc3BhcmVudCwKK3ZvaWQgRnJhbWU6OmNyZWF0
ZVZpZXcoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBPcHRpb25hbFJHQkEmIGJh
Y2tncm91bmRDb2xvciwgYm9vbCB0cmFuc3BhcmVudCwKICAgICBjb25zdCBJbnRTaXplJiBmaXhl
ZExheW91dFNpemUsIGNvbnN0IEludFJlY3QmIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LAogICAg
IGJvb2wgdXNlRml4ZWRMYXlvdXQsIFNjcm9sbGJhck1vZGUgaG9yaXpvbnRhbFNjcm9sbGJhck1v
ZGUsIGJvb2wgaG9yaXpvbnRhbExvY2ssCiAgICAgU2Nyb2xsYmFyTW9kZSB2ZXJ0aWNhbFNjcm9s
bGJhck1vZGUsIGJvb2wgdmVydGljYWxMb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDY3MTIzNmZi
YzU2NzE0Njk1ZjQ4NmYzOWE5ZWZjMjZhYjkyOWE2ZGEuLjM2ZDUwZjUwZGM4MDVlOWU5NzE3MjE4
OTQ5ZWMxYTU1ODhlMzRiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTY1LDcgKzY1LDcgQEAgY2xh
c3MgUmVndWxhckV4cHJlc3Npb247CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBB
bmltYXRpb25Db250cm9sbGVyOwotICAgIGNsYXNzIENvbG9yOworICAgIGNsYXNzIE9wdGlvbmFs
UkdCQTsKICAgICBjbGFzcyBEb2N1bWVudDsKICAgICBjbGFzcyBFZGl0b3I7CiAgICAgY2xhc3Mg
RWxlbWVudDsKQEAgLTEyMyw3ICsxMjMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdFdpdGhTaW1wbGVIVE1MRG9jdW1lbnQoY29uc3QgU3Ry
aW5nJiBzdHlsZSwgY29uc3QgVVJMJik7CiAjZW5kaWYKICAgICAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRWaWV3KFJlZlB0cjxGcmFtZVZpZXc+JiYpOwotICAgICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNyZWF0ZVZpZXcoY29uc3QgSW50U2l6ZSYsIGNvbnN0IENvbG9yJiwgYm9vbCwKKyAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmLCBjb25z
dCBPcHRpb25hbFJHQkEmLCBib29sLAogICAgICAgICAgICAgY29uc3QgSW50U2l6ZSYgZml4ZWRM
YXlvdXRTaXplID0gSW50U2l6ZSgpLCBjb25zdCBJbnRSZWN0JiBmaXhlZFZpc2libGVDb250ZW50
UmVjdCA9IEludFJlY3QoKSwKICAgICAgICAgICAgIGJvb2wgdXNlRml4ZWRMYXlvdXQgPSBmYWxz
ZSwgU2Nyb2xsYmFyTW9kZSA9IFNjcm9sbGJhckF1dG8sIGJvb2wgaG9yaXpvbnRhbExvY2sgPSBm
YWxzZSwKICAgICAgICAgICAgIFNjcm9sbGJhck1vZGUgPSBTY3JvbGxiYXJBdXRvLCBib29sIHZl
cnRpY2FsTG9jayA9IGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGlu
Zy5jcHAKaW5kZXggNmJmY2UxMmI4YzcyNGRjMGVlNzc1YjdkZmJhMDkwNTg2YzIxZjQ5Yi4uNjgw
MzllMDVlMWE0NTNhMTg5NTc0MWNkOGVlYTI3NDU4M2Q4ZDIyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgc3RydWN0IFNjb3Bl
ZEZyYW1lUGFpbnRpbmdTdGF0ZSB7CiAgICAgY29uc3QgRnJhbWUmIGZyYW1lOwogICAgIGNvbnN0
IE5vZGUqIG5vZGU7CiAgICAgY29uc3QgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yOwotICAg
IGNvbnN0IENvbG9yIGJhY2tncm91bmRDb2xvcjsKKyAgICBjb25zdCBPcHRpb25hbFJHQkEgYmFj
a2dyb3VuZENvbG9yOwogfTsKIAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hv
dEZyYW1lUmVjdChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgU25hcHNo
b3RPcHRpb25zIG9wdGlvbnMpCkBAIC0xMzIsNyArMTMyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBzbmFwc2hvdE5vZGUoRnJhbWUmIGZyYW1lLCBOb2RlJiBub2RlKQogCiAgICAg
U2NvcGVkRnJhbWVQYWludGluZ1N0YXRlIHN0YXRlKGZyYW1lLCAmbm9kZSk7CiAKLSAgICBmcmFt
ZS52aWV3KCktPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAg
ICBmcmFtZS52aWV3KCktPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoT3B0aW9uYWxSR0JBOjp0cmFu
c3BhcmVudCk7CiAgICAgZnJhbWUudmlldygpLT5zZXROb2RlVG9EcmF3KCZub2RlKTsKIAogICAg
IExheW91dFJlY3QgdG9wTGV2ZWxSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4
IGFjZjEzODA5YTU5OTYzNjczYjUzZjI2MDA4MDZlZTQwMzdjMzk1NjAuLjhlZjg3MmYzN2FmODk0
ZGNlYTQ3YzZjMTM5ZDY3NGQ3YzAzZTdhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
QEAgLTE2OSw3ICsxNjksNyBAQCBGcmFtZVZpZXc6OkZyYW1lVmlldyhGcmFtZSYgZnJhbWUpCiAg
ICAgLCBtX3Bvc3RMYXlvdXRUYXNrc1RpbWVyKCp0aGlzLCAmRnJhbWVWaWV3OjpwZXJmb3JtUG9z
dExheW91dFRhc2tzKQogICAgICwgbV91cGRhdGVFbWJlZGRlZE9iamVjdHNUaW1lcigqdGhpcywg
JkZyYW1lVmlldzo6dXBkYXRlRW1iZWRkZWRPYmplY3RzVGltZXJGaXJlZCkKICAgICAsIG1faXNU
cmFuc3BhcmVudChmYWxzZSkKLSAgICAsIG1fYmFzZUJhY2tncm91bmRDb2xvcihDb2xvcjo6d2hp
dGUpCisgICAgLCBtX2Jhc2VCYWNrZ3JvdW5kQ29sb3IoT3B0aW9uYWxSR0JBOjp3aGl0ZSkKICAg
ICAsIG1fbWVkaWFUeXBlKCJzY3JlZW4iKQogICAgICwgbV9vdmVyZmxvd1N0YXR1c0RpcnR5KHRy
dWUpCiAgICAgLCBtX3ZpZXdwb3J0UmVuZGVyZXIobnVsbHB0cikKQEAgLTM4Myw3ICszODMsNyBA
QCB2b2lkIEZyYW1lVmlldzo6cmVjYWxjdWxhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoKQogCiAg
ICAgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIGNvbXB1dGVkT3ZlcmxheVN0eWxlID0gU2Nyb2xsYmFy
T3ZlcmxheVN0eWxlRGVmYXVsdDsKIAotICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IGRvY3Vt
ZW50QmFja2dyb3VuZENvbG9yKCk7CisgICAgT3B0aW9uYWxSR0JBIGJhY2tncm91bmRDb2xvciA9
IGRvY3VtZW50QmFja2dyb3VuZENvbG9yKCk7CiAgICAgaWYgKGJhY2tncm91bmRDb2xvci5pc1Zh
bGlkKCkpIHsKICAgICAgICAgLy8gUmVkdWNlIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZyb20gUkdC
IHRvIGEgbGlnaHRuZXNzIHZhbHVlCiAgICAgICAgIC8vIGFuZCBkZXRlcm1pbmUgd2hpY2ggc2Ny
b2xsYmFyIHN0eWxlIHRvIHVzZSBiYXNlZCBvbiBhIGxpZ2h0bmVzcwpAQCAtMjc0MywxNyArMjc0
MywxNyBAQCBib29sIEZyYW1lVmlldzo6aGFzT3BhcXVlQmFja2dyb3VuZCgpIGNvbnN0CiAgICAg
cmV0dXJuICFtX2lzVHJhbnNwYXJlbnQgJiYgIW1fYmFzZUJhY2tncm91bmRDb2xvci5oYXNBbHBo
YSgpOwogfQogCi1Db2xvciBGcmFtZVZpZXc6OmJhc2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAor
T3B0aW9uYWxSR0JBIEZyYW1lVmlldzo6YmFzZUJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fYmFzZUJhY2tncm91bmRDb2xvcjsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnNl
dEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikKK3ZvaWQg
RnJhbWVWaWV3OjpzZXRCYXNlQmFja2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgYmFj
a2dyb3VuZENvbG9yKQogewogICAgIGJvb2wgaGFkQWxwaGEgPSBtX2Jhc2VCYWNrZ3JvdW5kQ29s
b3IuaGFzQWxwaGEoKTsKICAgICAKICAgICBpZiAoIWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkp
Ci0gICAgICAgIG1fYmFzZUJhY2tncm91bmRDb2xvciA9IENvbG9yOjp3aGl0ZTsKKyAgICAgICAg
bV9iYXNlQmFja2dyb3VuZENvbG9yID0gT3B0aW9uYWxSR0JBOjp3aGl0ZTsKICAgICBlbHNlCiAg
ICAgICAgIG1fYmFzZUJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvcjsKIApAQCAtMjc2
Niw3ICsyNzY2LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29u
c3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikKICAgICAgICAgcmVuZGVyVmlldygpLT5jb21wb3Np
dG9yKCkucm9vdEJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgRnJh
bWVWaWV3Ojp1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoY29uc3QgQ29sb3ImIGJhY2tncm91
bmRDb2xvciwgYm9vbCB0cmFuc3BhcmVudCkKK3ZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVCYWNrZ3Jv
dW5kUmVjdXJzaXZlbHkoY29uc3QgT3B0aW9uYWxSR0JBJiBiYWNrZ3JvdW5kQ29sb3IsIGJvb2wg
dHJhbnNwYXJlbnQpCiB7CiAgICAgZm9yIChhdXRvKiBmcmFtZSA9IG1fZnJhbWUucHRyKCk7IGZy
YW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KG1fZnJhbWUucHRyKCkpKSB7
CiAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpKSB7CkBAIC0yODY1
LDcgKzI4NjUsNyBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlVGlsZXNGb3JFeHRlbmRlZEJhY2tn
cm91bmRNb2RlKEV4dGVuZGVkQmFja2dyb3VuZE1vZGUgbW9kZQogICAgIGlmIChleGlzdGluZ01v
ZGUgPT0gbW9kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVuZGVyVmlldy0+Y29tcG9zaXRv
cigpLnNldFJvb3RFeHRlbmRlZEJhY2tncm91bmRDb2xvcihtb2RlID09IEV4dGVuZGVkQmFja2dy
b3VuZE1vZGVBbGwgPyBDb2xvcigpIDogZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSk7CisgICAg
cmVuZGVyVmlldy0+Y29tcG9zaXRvcigpLnNldFJvb3RFeHRlbmRlZEJhY2tncm91bmRDb2xvciht
b2RlID09IEV4dGVuZGVkQmFja2dyb3VuZE1vZGVBbGwgPyBPcHRpb25hbFJHQkEoKSA6IGRvY3Vt
ZW50QmFja2dyb3VuZENvbG9yKCkpOwogICAgIGJhY2tpbmctPnNldFRpbGVkQmFja2luZ0hhc01h
cmdpbnMobW9kZSAmIEV4dGVuZGVkQmFja2dyb3VuZE1vZGVIb3Jpem9udGFsLCBtb2RlICYgRXh0
ZW5kZWRCYWNrZ3JvdW5kTW9kZVZlcnRpY2FsKTsKIH0KIApAQCAtMzY3OCwyMiArMzY3OCwyMiBA
QCB2b2lkIEZyYW1lVmlldzo6cGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBTY3JvbGxiYXIqIGJhciwgY29uc3QgSQogICAgIFNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsYmFy
KGNvbnRleHQsIGJhciwgcmVjdCk7CiB9CiAKLUNvbG9yIEZyYW1lVmlldzo6ZG9jdW1lbnRCYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIEZyYW1lVmlldzo6ZG9jdW1lbnRCYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdAogewogICAgIC8vIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTk1NDA+IFdlIGJsZW5kIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mCiAg
ICAgLy8gdGhlIGRvY3VtZW50IGFuZCB0aGUgYm9keSBhZ2FpbnN0IHRoZSBiYXNlIGJhY2tncm91
bmQgY29sb3Igb2YgdGhlIGZyYW1lIHZpZXcuCiAgICAgLy8gQmFja2dyb3VuZCBpbWFnZXMgYXJl
IHVuZm9ydHVuYXRlbHkgaW1wcmFjdGljYWwgdG8gaW5jbHVkZS4KIAotICAgIC8vIFJldHVybiBp
bnZhbGlkIENvbG9yIG9iamVjdHMgd2hlbmV2ZXIgdGhlcmUgaXMgaW5zdWZmaWNpZW50IGluZm9y
bWF0aW9uLgorICAgIC8vIFJldHVybiBpbnZhbGlkIE9wdGlvbmFsUkdCQSBvYmplY3RzIHdoZW5l
dmVyIHRoZXJlIGlzIGluc3VmZmljaWVudCBpbmZvcm1hdGlvbi4KICAgICBpZiAoIWZyYW1lKCku
ZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7CisgICAgICAgIHJldHVybiBPcHRp
b25hbFJHQkEoKTsKIAogICAgIGF1dG8qIGh0bWxFbGVtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgp
LT5kb2N1bWVudEVsZW1lbnQoKTsKICAgICBhdXRvKiBib2R5RWxlbWVudCA9IGZyYW1lKCkuZG9j
dW1lbnQoKS0+Ym9keU9yRnJhbWVzZXQoKTsKIAogICAgIC8vIFN0YXJ0IHdpdGggaW52YWxpZCBj
b2xvcnMuCi0gICAgQ29sb3IgaHRtbEJhY2tncm91bmRDb2xvcjsKLSAgICBDb2xvciBib2R5QmFj
a2dyb3VuZENvbG9yOworICAgIE9wdGlvbmFsUkdCQSBodG1sQmFja2dyb3VuZENvbG9yOworICAg
IE9wdGlvbmFsUkdCQSBib2R5QmFja2dyb3VuZENvbG9yOwogICAgIGlmIChodG1sRWxlbWVudCAm
JiBodG1sRWxlbWVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgaHRtbEJhY2tncm91bmRDb2xvciA9
IGh0bWxFbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgaWYgKGJvZHlFbGVtZW50ICYmIGJvZHlF
bGVtZW50LT5yZW5kZXJlcigpKQpAQCAtMzcwMSw3ICszNzAxLDcgQEAgQ29sb3IgRnJhbWVWaWV3
Ojpkb2N1bWVudEJhY2tncm91bmRDb2xvcigpIGNvbnN0CiAKICAgICBpZiAoIWJvZHlCYWNrZ3Jv
dW5kQ29sb3IuaXNWYWxpZCgpKSB7CiAgICAgICAgIGlmICghaHRtbEJhY2tncm91bmRDb2xvci5p
c1ZhbGlkKCkpCi0gICAgICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAgICAgICAgIHJldHVy
biBPcHRpb25hbFJHQkEoKTsKICAgICAgICAgcmV0dXJuIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKS5i
bGVuZChodG1sQmFja2dyb3VuZENvbG9yKTsKICAgICB9CiAKQEAgLTM5NDMsNyArMzk0Myw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgZGlydHlSZWN0CiAgICAgICAgIGZpbGxXaXRoUmVkID0gdHJ1ZTsKICAg
ICAKICAgICBpZiAoZmlsbFdpdGhSZWQpCi0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRpcnR5
UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBj
b250ZXh0LT5maWxsUmVjdChkaXJ0eVJlY3QsIE9wdGlvbmFsUkdCQSgweEZGLCAwLCAwKSwgQ29s
b3JTcGFjZURldmljZVJHQik7CiAjZW5kaWYKIAogICAgIGlmIChtX2xheW91dFBoYXNlID09IElu
Vmlld1NpemVBZGp1c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBiYzRlYjY5NGM0ODEx
YWU3YTI0MTRiNWZhOWQzMDcxZjA1MjA4ZTA5Li41MzNlNzg5NzE5OTEzNjlhYWZmZTZkN2ZkMmE2
MjViYmViYmMzY2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTIwMiw5ICsyMDIsOSBA
QCBwdWJsaWM6CiAgICAgLy8gVHJ1ZSBpZiB0aGUgRnJhbWVWaWV3IGlzIG5vdCB0cmFuc3BhcmVu
dCwgYW5kIHRoZSBiYXNlIGJhY2tncm91bmQgY29sb3IgaXMgb3BhcXVlLgogICAgIGJvb2wgaGFz
T3BhcXVlQmFja2dyb3VuZCgpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IgYmFz
ZUJhY2tncm91bmRDb2xvcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QmFz
ZUJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOwotICAgIHZvaWQgdXBkYXRlQmFja2dyb3Vu
ZFJlY3Vyc2l2ZWx5KGNvbnN0IENvbG9yJiwgYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgT3B0
aW9uYWxSR0JBIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJik7CisgICAg
dm9pZCB1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoY29uc3QgT3B0aW9uYWxSR0JBJiwgYm9v
bCk7CiAKICAgICBlbnVtIEV4dGVuZGVkQmFja2dyb3VuZE1vZGVGbGFncyB7CiAgICAgICAgIEV4
dGVuZGVkQmFja2dyb3VuZE1vZGVOb25lICAgICAgICAgID0gMCwKQEAgLTM2MCw3ICszNjAsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJ
bnRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBkb2N1bWVudEJh
Y2tncm91bmRDb2xvcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsUkdCQSBk
b2N1bWVudEJhY2tncm91bmRDb2xvcigpIGNvbnN0OwogCiAgICAgYm9vbCBpc0luQ2hpbGRGcmFt
ZVdpdGhGcmFtZUZsYXR0ZW5pbmcoKSBjb25zdDsKIApAQCAtNzA5LDcgKzcwOSw3IEBAIHByaXZh
dGU6CiAKICAgICBib29sIG1fZmlyc3RMYXlvdXQ7CiAgICAgYm9vbCBtX2lzVHJhbnNwYXJlbnQ7
Ci0gICAgQ29sb3IgbV9iYXNlQmFja2dyb3VuZENvbG9yOworICAgIE9wdGlvbmFsUkdCQSBtX2Jh
c2VCYWNrZ3JvdW5kQ29sb3I7CiAgICAgSW50U2l6ZSBtX2xhc3RWaWV3cG9ydFNpemU7CiAgICAg
ZmxvYXQgbV9sYXN0Wm9vbUZhY3RvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOWQyZDI2NjJm
ZTgyODAwOGI1ODIzYzcwZGI5ZGNjYjUxOTM2ZjFjZC4uMDYxNGNiYzA3MTEwZGZmZWEzMGQxNWFh
YWM4NTYwOTNhNGEwNGUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMzk1LDE1ICsxMzk1LDE1
IEBAIHZvaWQgUGFnZTo6cmVtb3ZlTGF5b3V0TWlsZXN0b25lcyhMYXlvdXRNaWxlc3RvbmVzIG1p
bGVzdG9uZXMpCiAgICAgbV9yZXF1ZXN0ZWRMYXlvdXRNaWxlc3RvbmVzICY9IH5taWxlc3RvbmVz
OwogfQogCi1Db2xvciBQYWdlOjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAor
T3B0aW9uYWxSR0JBIFBhZ2U6OnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7
CiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtYWluRnJhbWUoKS52aWV3KCk7CiAgICAgaWYg
KCFmcmFtZVZpZXcpCi0gICAgICAgIHJldHVybiBDb2xvcigpOworICAgICAgICByZXR1cm4gT3B0
aW9uYWxSR0JBKCk7CiAKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LT5y
ZW5kZXJWaWV3KCk7CiAgICAgaWYgKCFyZW5kZXJWaWV3KQotICAgICAgICByZXR1cm4gQ29sb3Io
KTsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsUkdCQSgpOwogCiAgICAgcmV0dXJuIHJlbmRlclZp
ZXctPmNvbXBvc2l0b3IoKS5yb290RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKaW5kZXggMjMyZDQ2YzdmYmU5ZWQ4N2M3YjE5NWMxZDRjNmYxYmU5OWQ3NjZjNC4uN2E4
NWM2Yjg1N2E3ZWQxOTBmOTA3N2QzYTNlYWM5ZDc2YTAwNDZhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAg
LTcxLDcgKzcxLDcgQEAgY2xhc3MgQmFja0ZvcndhcmRDbGllbnQ7CiBjbGFzcyBDaHJvbWU7CiBj
bGFzcyBDaHJvbWVDbGllbnQ7CiBjbGFzcyBDbGllbnRSZWN0TGlzdDsKLWNsYXNzIENvbG9yOwor
Y2xhc3MgT3B0aW9uYWxSR0JBOwogY2xhc3MgQ29udGV4dE1lbnVDbGllbnQ7CiBjbGFzcyBDb250
ZXh0TWVudUNvbnRyb2xsZXI7CiBjbGFzcyBEYXRhYmFzZVByb3ZpZGVyOwpAQCAtMzY3LDcgKzM2
Nyw3IEBAIHB1YmxpYzoKICAgICBpbnQgaGVhZGVySGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9o
ZWFkZXJIZWlnaHQ7IH0KICAgICBpbnQgZm9vdGVySGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9m
b290ZXJIZWlnaHQ7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yIHBhZ2VFeHRlbmRlZEJh
Y2tncm91bmRDb2xvcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsUkdCQSBw
YWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKIAogICAgIGJvb2wgaXNDb3VudGlu
Z1JlbGV2YW50UmVwYWludGVkT2JqZWN0cygpIGNvbnN0OwogICAgIHZvaWQgc2V0SXNDb3VudGlu
Z1JlbGV2YW50UmVwYWludGVkT2JqZWN0cyhib29sIGlzQ291bnRpbmcpIHsgbV9pc0NvdW50aW5n
UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzID0gaXNDb3VudGluZzsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VPdmVybGF5LmNwcAppbmRleCBhOWI5MWNkMTQxOTVkYzYwYWQ4NjI5YjY2ZjMzYzE1ZWE1Nzg2
M2I1Li4zNWE3NWNmYTZlYzg3NmQ2NDdlMDczYzBhZTg1NjE0NjE4NDdlNWEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VPdmVybGF5LmNwcApAQCAtNjAsNyArNjAsNyBAQCBQYWdlT3ZlcmxheTo6UGFn
ZU92ZXJsYXkoQ2xpZW50JiBjbGllbnQsIE92ZXJsYXlUeXBlIG92ZXJsYXlUeXBlKQogICAgICwg
bV9mYWRlQW5pbWF0aW9uVHlwZShOb0FuaW1hdGlvbikKICAgICAsIG1fZnJhY3Rpb25GYWRlZElu
KDEpCiAgICAgLCBtX292ZXJsYXlUeXBlKG92ZXJsYXlUeXBlKQotICAgICwgbV9iYWNrZ3JvdW5k
Q29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KQorICAgICwgbV9iYWNrZ3JvdW5kQ29sb3IoT3B0aW9u
YWxSR0JBOjp0cmFuc3BhcmVudCkKICAgICAsIG1fcGFnZU92ZXJsYXlJRChnZW5lcmF0ZVBhZ2VP
dmVybGF5SUQoKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAppbmRleCBi
MjQxZmU1MmJkNWExOGNkOWU4YzdkOGIyMTkyM2I1MDE1NjUzYWM2Li5iZTk5NzVkMzJjZDZhMjY5
MDhlODNjZWZmODBjMDkwMDJiNWQwOTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1ByaW50Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQu
Y3BwCkBAIC0zMzMsNyArMzMzLDcgQEAgdm9pZCBQcmludENvbnRleHQ6OnNwb29sQWxsUGFnZXNX
aXRoQm91bmRhcmllcyhGcmFtZSogZnJhbWUsIEdyYXBoaWNzQ29udGV4dCYgZ3IKICAgICBpbnQg
dG90YWxIZWlnaHQgPSBwYWdlUmVjdHMuc2l6ZSgpICogKHBhZ2VTaXplSW5QaXhlbHMuaGVpZ2h0
KCkgKyAxKSAtIDE7CiAKICAgICAvLyBGaWxsIHRoZSB3aG9sZSBiYWNrZ3JvdW5kIGJ5IHdoaXRl
LgotICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3IoMjU1LCAyNTUsIDI1NSks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3Io
T3B0aW9uYWxSR0JBKDI1NSwgMjU1LCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBn
cmFwaGljc0NvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDAsIDAsIHBhZ2VXaWR0aCwgdG90YWxI
ZWlnaHQpKTsKIAogICAgIGdyYXBoaWNzQ29udGV4dC5zYXZlKCk7CkBAIC0zNDUsOCArMzQ1LDgg
QEAgdm9pZCBQcmludENvbnRleHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmllcyhGcmFtZSog
ZnJhbWUsIEdyYXBoaWNzQ29udGV4dCYgZ3IKICAgICAgICAgLy8gRHJhdyBhIGxpbmUgZm9yIGEg
cGFnZSBib3VuZGFyeSBpZiB0aGlzIGlzbid0IHRoZSBmaXJzdCBwYWdlLgogICAgICAgICBpZiAo
cGFnZUluZGV4ID4gMCkgewogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNhdmUoKTsKLSAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAwLCAyNTUp
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRG
aWxsQ29sb3IoQ29sb3IoMCwgMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
ICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlQ29sb3IoT3B0aW9uYWxSR0JBKDAsIDAsIDI1
NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNl
dEZpbGxDb2xvcihPcHRpb25hbFJHQkEoMCwgMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7
CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd0xpbmUoSW50UG9pbnQoMCwgY3VycmVu
dEhlaWdodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9pbnQo
cGFnZVdpZHRoLCBjdXJyZW50SGVpZ2h0KSk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQu
cmVzdG9yZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NT
UHJvcGVydHlBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NT
UHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDkxODU2MWJiYTBkNWQxYzBjZmQ2ZGQyOGRiMjgy
NmEyZTRlNGNlOTMuLjNjZDNlNjY0Y2I4NDY0YTQ2NWFhMmNlNjU5ZDgyNzE2Y2EyMmZlODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFu
aW1hdGlvbi5jcHAKQEAgLTczLDcgKzczLDcgQEAgc3RhdGljIGlubGluZSBmbG9hdCBibGVuZEZ1
bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGZsb2F0IGZyb20sIGZsb2F0IHRvLCBkb3VibGUKICAg
ICByZXR1cm4gbmFycm93UHJlY2lzaW9uVG9GbG9hdChmcm9tICsgKHRvIC0gZnJvbSkgKiBwcm9n
cmVzcyk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgQ29sb3IgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlv
bkJhc2UqLCBjb25zdCBDb2xvciYgZnJvbSwgY29uc3QgQ29sb3ImIHRvLCBkb3VibGUgcHJvZ3Jl
c3MpCitzdGF0aWMgaW5saW5lIE9wdGlvbmFsUkdCQSBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9u
QmFzZSosIGNvbnN0IE9wdGlvbmFsUkdCQSYgZnJvbSwgY29uc3QgT3B0aW9uYWxSR0JBJiB0bywg
ZG91YmxlIHByb2dyZXNzKQogewogICAgIHJldHVybiBibGVuZChmcm9tLCB0bywgcHJvZ3Jlc3Mp
OwogfQpAQCAtNTEzLDIyICs1MTMsMjIgQEAgcHVibGljOgogICAgIH0KIH07CiAKLWNsYXNzIFBy
b3BlcnR5V3JhcHBlckNvbG9yIDogcHVibGljIFByb3BlcnR5V3JhcHBlckdldHRlcjxDb2xvcj4g
eworY2xhc3MgUHJvcGVydHlXcmFwcGVyQ29sb3IgOiBwdWJsaWMgUHJvcGVydHlXcmFwcGVyR2V0
dGVyPE9wdGlvbmFsUkdCQT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIFByb3BlcnR5V3JhcHBlckNvbG9yKENTU1Byb3BlcnR5SUQgcHJvcCwgQ29sb3IgKFJl
bmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlciko
Y29uc3QgQ29sb3ImKSkKLSAgICAgICAgOiBQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8Q29sb3I+KHBy
b3AsIGdldHRlcikKKyAgICBQcm9wZXJ0eVdyYXBwZXJDb2xvcihDU1NQcm9wZXJ0eUlEIHByb3As
IE9wdGlvbmFsUkdCQSAoUmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRl
clN0eWxlOjoqc2V0dGVyKShjb25zdCBPcHRpb25hbFJHQkEmKSkKKyAgICAgICAgOiBQcm9wZXJ0
eVdyYXBwZXJHZXR0ZXI8T3B0aW9uYWxSR0JBPihwcm9wLCBnZXR0ZXIpCiAgICAgICAgICwgbV9z
ZXR0ZXIoc2V0dGVyKQogICAgIHsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYmxlbmQoY29u
c3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgUmVuZGVyU3R5bGUqIGRzdCwgY29uc3QgUmVuZGVyU3R5
bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CiAgICAg
ewotICAgICAgICAoZHN0LT4qbV9zZXR0ZXIpKGJsZW5kRnVuYyhhbmltLCAoYS0+KlByb3BlcnR5
V3JhcHBlckdldHRlcjxDb2xvcj46Om1fZ2V0dGVyKSgpLCAoYi0+KlByb3BlcnR5V3JhcHBlckdl
dHRlcjxDb2xvcj46Om1fZ2V0dGVyKSgpLCBwcm9ncmVzcykpOworICAgICAgICAoZHN0LT4qbV9z
ZXR0ZXIpKGJsZW5kRnVuYyhhbmltLCAoYS0+KlByb3BlcnR5V3JhcHBlckdldHRlcjxPcHRpb25h
bFJHQkE+OjptX2dldHRlcikoKSwgKGItPipQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8T3B0aW9uYWxS
R0JBPjo6bV9nZXR0ZXIpKCksIHByb2dyZXNzKSk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAg
dm9pZCAoUmVuZGVyU3R5bGU6OiptX3NldHRlcikoY29uc3QgQ29sb3ImKTsKKyAgICB2b2lkIChS
ZW5kZXJTdHlsZTo6Km1fc2V0dGVyKShjb25zdCBPcHRpb25hbFJHQkEmKTsKIH07CiAKIApAQCAt
NjExLDExICs2MTEsMTEgQEAgc3RhdGljIGlubGluZSBzaXplX3Qgc2hhZG93TGlzdExlbmd0aChj
b25zdCBTaGFkb3dEYXRhKiBzaGFkb3cpCiAKIHN0YXRpYyBpbmxpbmUgY29uc3QgU2hhZG93RGF0
YSogc2hhZG93Rm9yQmxlbmRpbmcoY29uc3QgU2hhZG93RGF0YSogc3JjU2hhZG93LCBjb25zdCBT
aGFkb3dEYXRhKiBvdGhlclNoYWRvdykKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoU2hhZG93RGF0YSwgZGVmYXVsdFNoYWRvd0RhdGEsIChJbnRQb2ludCgpLCAwLCAwLCBO
b3JtYWwsIGZhbHNlLCBDb2xvcjo6dHJhbnNwYXJlbnQpKTsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoU2hhZG93RGF0YSwgZGVmYXVsdEluc2V0U2hhZG93RGF0YSwgKEludFBv
aW50KCksIDAsIDAsIEluc2V0LCBmYWxzZSwgQ29sb3I6OnRyYW5zcGFyZW50KSk7CisgICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFNoYWRvd0RhdGEsIGRlZmF1bHRTaGFkb3dEYXRh
LCAoSW50UG9pbnQoKSwgMCwgMCwgTm9ybWFsLCBmYWxzZSwgT3B0aW9uYWxSR0JBOjp0cmFuc3Bh
cmVudCkpOworICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTaGFkb3dEYXRhLCBk
ZWZhdWx0SW5zZXRTaGFkb3dEYXRhLCAoSW50UG9pbnQoKSwgMCwgMCwgSW5zZXQsIGZhbHNlLCBP
cHRpb25hbFJHQkE6OnRyYW5zcGFyZW50KSk7CiAKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoU2hhZG93RGF0YSwgZGVmYXVsdFdlYktpdEJveFNoYWRvd0RhdGEsIChJbnRQb2lu
dCgpLCAwLCAwLCBOb3JtYWwsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudCkpOwotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTaGFkb3dEYXRhLCBkZWZhdWx0SW5zZXRXZWJLaXRC
b3hTaGFkb3dEYXRhLCAoSW50UG9pbnQoKSwgMCwgMCwgSW5zZXQsIHRydWUsIENvbG9yOjp0cmFu
c3BhcmVudCkpOworICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTaGFkb3dEYXRh
LCBkZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YSwgKEludFBvaW50KCksIDAsIDAsIE5vcm1hbCwg
dHJ1ZSwgT3B0aW9uYWxSR0JBOjp0cmFuc3BhcmVudCkpOworICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChTaGFkb3dEYXRhLCBkZWZhdWx0SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRh
LCAoSW50UG9pbnQoKSwgMCwgMCwgSW5zZXQsIHRydWUsIE9wdGlvbmFsUkdCQTo6dHJhbnNwYXJl
bnQpKTsKIAogICAgIGlmIChzcmNTaGFkb3cpCiAgICAgICAgIHJldHVybiBzcmNTaGFkb3c7CkBA
IC03NDUsNyArNzQ1LDcgQEAgcHJpdmF0ZToKIGNsYXNzIFByb3BlcnR5V3JhcHBlck1heWJlSW52
YWxpZENvbG9yIDogcHVibGljIEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFByb3BlcnR5V3JhcHBlck1heWJl
SW52YWxpZENvbG9yKENTU1Byb3BlcnR5SUQgcHJvcCwgQ29sb3IgKFJlbmRlclN0eWxlOjoqZ2V0
dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoY29uc3QgQ29sb3ImKSkK
KyAgICBQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcihDU1NQcm9wZXJ0eUlEIHByb3As
IE9wdGlvbmFsUkdCQSAoUmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRl
clN0eWxlOjoqc2V0dGVyKShjb25zdCBPcHRpb25hbFJHQkEmKSkKICAgICAgICAgOiBBbmltYXRp
b25Qcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3ApCiAgICAgICAgICwgbV9nZXR0ZXIoZ2V0dGVyKQog
ICAgICAgICAsIG1fc2V0dGVyKHNldHRlcikKQEAgLTc1NCw4ICs3NTQsOCBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5k
ZXJTdHlsZSogYikgY29uc3QKICAgICB7Ci0gICAgICAgIENvbG9yIGZyb21Db2xvciA9IChhLT4q
bV9nZXR0ZXIpKCk7Ci0gICAgICAgIENvbG9yIHRvQ29sb3IgPSAoYi0+Km1fZ2V0dGVyKSgpOwor
ICAgICAgICBPcHRpb25hbFJHQkEgZnJvbUNvbG9yID0gKGEtPiptX2dldHRlcikoKTsKKyAgICAg
ICAgT3B0aW9uYWxSR0JBIHRvQ29sb3IgPSAoYi0+Km1fZ2V0dGVyKSgpOwogCiAgICAgICAgIGlm
ICghZnJvbUNvbG9yLmlzVmFsaWQoKSAmJiAhdG9Db2xvci5pc1ZhbGlkKCkpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTc3MCw4ICs3NzAsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgUmVuZGVyU3R5bGUqIGRzdCwg
Y29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiLCBkb3VibGUgcHJvZ3Jl
c3MpIGNvbnN0CiAgICAgewotICAgICAgICBDb2xvciBmcm9tQ29sb3IgPSAoYS0+Km1fZ2V0dGVy
KSgpOwotICAgICAgICBDb2xvciB0b0NvbG9yID0gKGItPiptX2dldHRlcikoKTsKKyAgICAgICAg
T3B0aW9uYWxSR0JBIGZyb21Db2xvciA9IChhLT4qbV9nZXR0ZXIpKCk7CisgICAgICAgIE9wdGlv
bmFsUkdCQSB0b0NvbG9yID0gKGItPiptX2dldHRlcikoKTsKIAogICAgICAgICBpZiAoIWZyb21D
b2xvci5pc1ZhbGlkKCkgJiYgIXRvQ29sb3IuaXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNzg0LDggKzc4NCw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgQ29s
b3IgKFJlbmRlclN0eWxlOjoqbV9nZXR0ZXIpKCkgY29uc3Q7Ci0gICAgdm9pZCAoUmVuZGVyU3R5
bGU6OiptX3NldHRlcikoY29uc3QgQ29sb3ImKTsKKyAgICBPcHRpb25hbFJHQkEgKFJlbmRlclN0
eWxlOjoqbV9nZXR0ZXIpKCkgY29uc3Q7CisgICAgdm9pZCAoUmVuZGVyU3R5bGU6OiptX3NldHRl
cikoY29uc3QgT3B0aW9uYWxSR0JBJik7CiB9OwogCiAKQEAgLTc5MywxNSArNzkzLDE1IEBAIGVu
dW0gTWF5YmVJbnZhbGlkQ29sb3JUYWcgeyBNYXliZUludmFsaWRDb2xvciB9OwogY2xhc3MgUHJv
cGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IgOiBwdWJsaWMgQW5pbWF0aW9uUHJvcGVy
dHlXcmFwcGVyQmFzZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgUHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IoQ1NTUHJvcGVydHlJRCBwcm9w
LCBDb2xvciAoUmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxl
Ojoqc2V0dGVyKShjb25zdCBDb2xvciYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENvbG9yIChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRHZXR0ZXIpKCkgY29uc3QsIHZv
aWQgKFJlbmRlclN0eWxlOjoqdmlzaXRlZFNldHRlcikoY29uc3QgQ29sb3ImKSkKKyAgICBQcm9w
ZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvcihDU1NQcm9wZXJ0eUlEIHByb3AsIE9wdGlv
bmFsUkdCQSAoUmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxl
Ojoqc2V0dGVyKShjb25zdCBPcHRpb25hbFJHQkEmKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBPcHRpb25hbFJHQkEgKFJlbmRlclN0eWxlOjoqdmlzaXRlZEdldHRl
cikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkU2V0dGVyKShjb25zdCBPcHRp
b25hbFJHQkEmKSkKICAgICAgICAgOiBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3Ap
CiAgICAgICAgICwgbV93cmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyQ29s
b3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkKICAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKHN0
ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIs
IHZpc2l0ZWRTZXR0ZXIpKQogICAgIHsKICAgICB9Ci0gICAgUHJvcGVydHlXcmFwcGVyVmlzaXRl
ZEFmZmVjdGVkQ29sb3IoQ1NTUHJvcGVydHlJRCBwcm9wLCBNYXliZUludmFsaWRDb2xvclRhZywg
Q29sb3IgKFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6
KnNldHRlcikoY29uc3QgQ29sb3ImKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb2xvciAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkR2V0dGVyKSgpIGNvbnN0LCB2b2lk
IChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRTZXR0ZXIpKGNvbnN0IENvbG9yJikpCisgICAgUHJvcGVy
dHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IoQ1NTUHJvcGVydHlJRCBwcm9wLCBNYXliZUlu
dmFsaWRDb2xvclRhZywgT3B0aW9uYWxSR0JBIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25z
dCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKGNvbnN0IE9wdGlvbmFsUkdCQSYpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsUkdCQSAoUmVuZGVy
U3R5bGU6Oip2aXNpdGVkR2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnZpc2l0
ZWRTZXR0ZXIpKGNvbnN0IE9wdGlvbmFsUkdCQSYpKQogICAgICAgICA6IEFuaW1hdGlvblByb3Bl
cnR5V3JhcHBlckJhc2UocHJvcCkKICAgICAgICAgLCBtX3dyYXBwZXIoc3RkOjptYWtlX3VuaXF1
ZTxQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcj4ocHJvcCwgZ2V0dGVyLCBzZXR0ZXIp
KQogICAgICAgICAsIG1fdmlzaXRlZFdyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdy
YXBwZXJNYXliZUludmFsaWRDb2xvcj4ocHJvcCwgdmlzaXRlZEdldHRlciwgdmlzaXRlZFNldHRl
cikpCkBAIC0xMDU1LDcgKzEwNTUsNyBAQCBwdWJsaWM6CiBjbGFzcyBQcm9wZXJ0eVdyYXBwZXJT
VkdQYWludCA6IHB1YmxpYyBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQcm9wZXJ0eVdyYXBwZXJTVkdQYWlu
dChDU1NQcm9wZXJ0eUlEIHByb3AsIGNvbnN0IFNWR1BhaW50OjpTVkdQYWludFR5cGUmIChSZW5k
ZXJTdHlsZTo6KnBhaW50VHlwZUdldHRlcikoKSBjb25zdCwgQ29sb3IgKFJlbmRlclN0eWxlOjoq
Z2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoY29uc3QgQ29sb3Im
KSkKKyAgICBQcm9wZXJ0eVdyYXBwZXJTVkdQYWludChDU1NQcm9wZXJ0eUlEIHByb3AsIGNvbnN0
IFNWR1BhaW50OjpTVkdQYWludFR5cGUmIChSZW5kZXJTdHlsZTo6KnBhaW50VHlwZUdldHRlciko
KSBjb25zdCwgT3B0aW9uYWxSR0JBIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9p
ZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKGNvbnN0IE9wdGlvbmFsUkdCQSYpKQogICAgICAgICA6
IEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UocHJvcCkKICAgICAgICAgLCBtX3BhaW50VHlw
ZUdldHRlcihwYWludFR5cGVHZXR0ZXIpCiAgICAgICAgICwgbV9nZXR0ZXIoZ2V0dGVyKQpAQCAt
MTA2OCwyMCArMTA2OCwyMCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICgoYS0+Km1fcGFpbnRUeXBl
R2V0dGVyKSgpICE9IChiLT4qbV9wYWludFR5cGVHZXR0ZXIpKCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgLy8gV2Ugb25seSBzdXBwb3J0IGFuaW1hdGlvbnMgYmV0d2Vl
biBTVkdQYWludHMgdGhhdCBhcmUgcHVyZSBDb2xvciB2YWx1ZXMuCisgICAgICAgIC8vIFdlIG9u
bHkgc3VwcG9ydCBhbmltYXRpb25zIGJldHdlZW4gU1ZHUGFpbnRzIHRoYXQgYXJlIHB1cmUgT3B0
aW9uYWxSR0JBIHZhbHVlcy4KICAgICAgICAgLy8gRm9yIGV2ZXJ5dGhpbmcgZWxzZSB3ZSBtdXN0
IHJldHVybiB0cnVlIGZvciB0aGlzIG1ldGhvZCwgb3RoZXJ3aXNlCiAgICAgICAgIC8vIHdlIHdp
bGwgdHJ5IHRvIGFuaW1hdGUgYmV0d2VlbiB2YWx1ZXMgZm9yZXZlci4KICAgICAgICAgaWYgKChh
LT4qbV9wYWludFR5cGVHZXR0ZXIpKCkgPT0gU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfUkdCQ09M
T1IpIHsKLSAgICAgICAgICAgIENvbG9yIGZyb21Db2xvciA9IChhLT4qbV9nZXR0ZXIpKCk7Ci0g
ICAgICAgICAgICBDb2xvciB0b0NvbG9yID0gKGItPiptX2dldHRlcikoKTsKKyAgICAgICAgICAg
IE9wdGlvbmFsUkdCQSBmcm9tQ29sb3IgPSAoYS0+Km1fZ2V0dGVyKSgpOworICAgICAgICAgICAg
T3B0aW9uYWxSR0JBIHRvQ29sb3IgPSAoYi0+Km1fZ2V0dGVyKSgpOwogCiAgICAgICAgICAgICBp
ZiAoIWZyb21Db2xvci5pc1ZhbGlkKCkgJiYgIXRvQ29sb3IuaXNWYWxpZCgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgICAgICBpZiAoIWZyb21Db2xvci5pc1ZhbGlk
KCkpCi0gICAgICAgICAgICAgICAgZnJvbUNvbG9yID0gQ29sb3IoKTsKKyAgICAgICAgICAgICAg
ICBmcm9tQ29sb3IgPSBPcHRpb25hbFJHQkEoKTsKICAgICAgICAgICAgIGlmICghdG9Db2xvci5p
c1ZhbGlkKCkpCi0gICAgICAgICAgICAgICAgdG9Db2xvciA9IENvbG9yKCk7CisgICAgICAgICAg
ICAgICAgdG9Db2xvciA9IE9wdGlvbmFsUkdCQSgpOwogCiAgICAgICAgICAgICByZXR1cm4gZnJv
bUNvbG9yID09IHRvQ29sb3I7CiAgICAgICAgIH0KQEAgLTEwOTQsMjMgKzEwOTQsMjMgQEAgcHVi
bGljOgogICAgICAgICAgICAgfHwgKGItPiptX3BhaW50VHlwZUdldHRlcikoKSAhPSBTVkdQYWlu
dDo6U1ZHX1BBSU5UVFlQRV9SR0JDT0xPUikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBDb2xvciBmcm9tQ29sb3IgPSAoYS0+Km1fZ2V0dGVyKSgpOwotICAgICAgICBDb2xvciB0b0Nv
bG9yID0gKGItPiptX2dldHRlcikoKTsKKyAgICAgICAgT3B0aW9uYWxSR0JBIGZyb21Db2xvciA9
IChhLT4qbV9nZXR0ZXIpKCk7CisgICAgICAgIE9wdGlvbmFsUkdCQSB0b0NvbG9yID0gKGItPipt
X2dldHRlcikoKTsKIAogICAgICAgICBpZiAoIWZyb21Db2xvci5pc1ZhbGlkKCkgJiYgIXRvQ29s
b3IuaXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghZnJvbUNv
bG9yLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIGZyb21Db2xvciA9IENvbG9yKCk7CisgICAgICAg
ICAgICBmcm9tQ29sb3IgPSBPcHRpb25hbFJHQkEoKTsKICAgICAgICAgaWYgKCF0b0NvbG9yLmlz
VmFsaWQoKSkKLSAgICAgICAgICAgIHRvQ29sb3IgPSBDb2xvcigpOworICAgICAgICAgICAgdG9D
b2xvciA9IE9wdGlvbmFsUkdCQSgpOwogICAgICAgICAoZHN0LT4qbV9zZXR0ZXIpKGJsZW5kRnVu
YyhhbmltLCBmcm9tQ29sb3IsIHRvQ29sb3IsIHByb2dyZXNzKSk7CiAgICAgfQogCiBwcml2YXRl
OgogICAgIGNvbnN0IFNWR1BhaW50OjpTVkdQYWludFR5cGUmIChSZW5kZXJTdHlsZTo6Km1fcGFp
bnRUeXBlR2V0dGVyKSgpIGNvbnN0OwotICAgIENvbG9yIChSZW5kZXJTdHlsZTo6Km1fZ2V0dGVy
KSgpIGNvbnN0OwotICAgIHZvaWQgKFJlbmRlclN0eWxlOjoqbV9zZXR0ZXIpKGNvbnN0IENvbG9y
Jik7CisgICAgT3B0aW9uYWxSR0JBIChSZW5kZXJTdHlsZTo6Km1fZ2V0dGVyKSgpIGNvbnN0Owor
ICAgIHZvaWQgKFJlbmRlclN0eWxlOjoqbV9zZXR0ZXIpKGNvbnN0IE9wdGlvbmFsUkdCQSYpOwog
fTsKIAogY2xhc3MgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbG9yQ2hvb3Nlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ29sb3JDaG9vc2VyLmgKaW5kZXggYjdjZjVkZWUzMWQwMTE5ZTNiNzQ4MzYxZGFh
ZTJhNWU2NzY0YzhlNy4uOTU3MzU3N2JhYjljOTI4Y2JjMzBiN2FlMmE4NzVlOWViNThhN2RlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29sb3JDaG9vc2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29sb3JDaG9vc2VyLmgKQEAgLTM0LDE0ICszNCwxNCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbG9yOworY2xhc3MgT3B0aW9uYWxS
R0JBOwogCiBjbGFzcyBDb2xvckNob29zZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNvbG9y
Q2hvb3NlcigpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlYXR0YWNoQ29sb3JDaG9vc2VyKGNv
bnN0IENvbG9yJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkQ29sb3IoY29uc3Qg
Q29sb3ImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVhdHRhY2hDb2xvckNob29zZXIoY29uc3Qg
T3B0aW9uYWxSR0JBJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkQ29sb3IoY29u
c3QgT3B0aW9uYWxSR0JBJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZENob29zZXIoKSB7IH0K
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbG9yQ2hvb3NlckNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29sb3JDaG9vc2VyQ2xpZW50LmgKaW5k
ZXggYmRlNWU3ODIzMTdiODk5ZTNiOTA3NmI3M2RhMjNmNjViMjU2YWIwYy4uYzE0NjVhY2QyN2Qx
MTdlYjFjMDI2YmMyYzZhZDY1NGJkYmIxYTc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ29sb3JDaG9vc2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ29sb3JDaG9vc2VyQ2xpZW50LmgKQEAgLTM4LDE4ICszOCwxOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIENvbG9yOworY2xhc3MgT3B0aW9uYWxSR0JBOwogCiBjbGFzcyBD
b2xvckNob29zZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNvbG9yQ2hvb3NlckNs
aWVudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENob29zZUNvbG9yKGNvbnN0IENvbG9y
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VDb2xvcihjb25zdCBPcHRpb25hbFJH
QkEmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZENob29zZXIoKSA9IDA7CiAgICAgdmly
dHVhbCBJbnRSZWN0IGVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCkgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgQ29sb3IgY3VycmVudENvbG9yKCkgPSAwOworICAgIHZpcnR1YWwgT3B0aW9u
YWxSR0JBIGN1cnJlbnRDb2xvcigpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd1N1
Z2dlc3Rpb25zKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgVmVjdG9yPENvbG9yPiBzdWdnZXN0
aW9ucygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxPcHRpb25hbFJHQkE+IHN1Z2dl
c3Rpb25zKCkgY29uc3QgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmgKaW5kZXggNTZiMTE5N2ZhMzMwM2U4NjEyOWM4ZTIwMWJlYWFi
NmFhZTNiNDZkNy4uNTk2YmE1MGRjYzg3ZWM1YTAzOTMzYzEyMjU0NDMxYTk0ODA1YmQ4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAg
ICBTdHJpbmcgYXNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5ID0gQ29udmVydEZpbGVuYW1l
cywgU3RyaW5nKiB0aXRsZSA9IG51bGxwdHIpIGNvbnN0OwogICAgIFN0cmluZyBhc1BsYWluVGV4
dCgpIGNvbnN0OwogICAgIHZvaWQgYXNGaWxlbmFtZXMoVmVjdG9yPFN0cmluZz4mKSBjb25zdDsK
LSAgICBDb2xvciBhc0NvbG9yKCkgY29uc3Q7CisgICAgT3B0aW9uYWxSR0JBIGFzQ29sb3IoKSBj
b25zdDsKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSgpIGNvbnN0OwogICAgIGJvb2wgY29udGFp
bnNDb2xvcigpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNGaWxlcygpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCBmNWU5NTUyMWVl
ZDhlNmIwNTVhZDEyODU3M2UzM2MxNTExNDZhNDRmLi5jMzZmNDEyNjBlNTliOGZkMjJjNjQyZDdj
MjZiNjA0MDk3NWUxMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
U3RyYXRlZ3kuaApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIENvbG9yOworY2xhc3MgT3B0aW9uYWxSR0JBOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xh
c3MgVVJMOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwg
bG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAg
dmlydHVhbCBTdHJpbmcgdW5pcXVlTmFtZSgpID0gMDsKLSAgICB2aXJ0dWFsIENvbG9yIGNvbG9y
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIE9wdGlvbmFs
UkdCQSBjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVh
bCBVUkwgdXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICAKICAgICB2
aXJ0dWFsIGxvbmcgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA0ODU2ZDEzNGU2ZmQxZjU5NThhOGE2
NjZiNTFiYmRjYTUwNjAyMGZhLi5hN2U5NmZiYjg0MmY2YmY0OWYzNjk4ZThkZTc2N2I2OThlMmEy
NTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApA
QCAtNDEsNyArNDEsNyBAQCBPQkpDX0NMQVNTIFVJUGFzdGVib2FyZDsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBDb2xvcjsKK2NsYXNzIE9wdGlvbmFsUkdCQTsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CkBAIC02MSw3ICs2
MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5
cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgbG9uZyBjaGFuZ2VDb3VudCgp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yIGNvbG9yKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgT3B0aW9uYWxSR0JBIGNvbG9yKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHVybCgp
OwogCiAgICAgLy8gVGFrZSBvd25lcnNoaXAgb2YgdGhlIHBhc3RlYm9hcmQsIGFuZCByZXR1cm4g
bmV3IGNoYW5nZSBjb3VudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bv
cHVwTWVudUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUG9wdXBNZW51Q2xpZW50
LmgKaW5kZXggMWViNDhmZjBiYzUxMmU5Nzk4YTZhMjlmM2E0OTBkYTViMTNlZmE4OC4uYWE1ZWMy
YTE5NThhYjcxYzFlYjFlNDc2YTJkYjAwZjFiY2IzZDdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUG9wdXBNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUG9wdXBNZW51Q2xpZW50LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBDb2xvcjsKK2NsYXNzIE9wdGlvbmFsUkdCQTsKIGNsYXNzIEZvbnRT
ZWxlY3RvcjsKIGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBTY3JvbGxiYXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qb3B1cE1lbnVTdHlsZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUG9wdXBNZW51U3R5bGUuaAppbmRleCAzNzlhYTIxOWEzNzUyZDlkMDBmNmVj
N2NhZjFkNGFiNjhmODMzOWU3Li4yY2ZhZmE2MmVjNjNhMjVlMDI1YWFlYmMzYTUwMjMwYTVhOWJm
ZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qb3B1cE1lbnVTdHlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudVN0eWxlLmgKQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogICAgICAgICBQb3B1cE1lbnVTaXplTWluaQogICAgIH07CiAKLSAg
ICBQb3B1cE1lbnVTdHlsZShjb25zdCBDb2xvciYgZm9yZWdyb3VuZCwgY29uc3QgQ29sb3ImIGJh
Y2tncm91bmQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBib29sIHZpc2libGUsIGJvb2wgaXNE
aXNwbGF5Tm9uZSwgYm9vbCBoYXNEZWZhdWx0QXBwZWFyYW5jZSwgTGVuZ3RoIHRleHRJbmRlbnQs
IFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgYm9vbCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJp
ZGUsIEJhY2tncm91bmRDb2xvclR5cGUgYmFja2dyb3VuZENvbG9yVHlwZSA9IERlZmF1bHRCYWNr
Z3JvdW5kQ29sb3IsIFBvcHVwTWVudVR5cGUgbWVudVR5cGUgPSBTZWxlY3RQb3B1cCwgUG9wdXBN
ZW51U2l6ZSBtZW51U2l6ZSA9IFBvcHVwTWVudVNpemVOb3JtYWwpCisgICAgUG9wdXBNZW51U3R5
bGUoY29uc3QgT3B0aW9uYWxSR0JBJiBmb3JlZ3JvdW5kLCBjb25zdCBPcHRpb25hbFJHQkEmIGJh
Y2tncm91bmQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBib29sIHZpc2libGUsIGJvb2wgaXNE
aXNwbGF5Tm9uZSwgYm9vbCBoYXNEZWZhdWx0QXBwZWFyYW5jZSwgTGVuZ3RoIHRleHRJbmRlbnQs
IFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgYm9vbCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJp
ZGUsIEJhY2tncm91bmRDb2xvclR5cGUgYmFja2dyb3VuZENvbG9yVHlwZSA9IERlZmF1bHRCYWNr
Z3JvdW5kQ29sb3IsIFBvcHVwTWVudVR5cGUgbWVudVR5cGUgPSBTZWxlY3RQb3B1cCwgUG9wdXBN
ZW51U2l6ZSBtZW51U2l6ZSA9IFBvcHVwTWVudVNpemVOb3JtYWwpCiAgICAgICAgIDogbV9mb3Jl
Z3JvdW5kQ29sb3IoZm9yZWdyb3VuZCkKICAgICAgICAgLCBtX2JhY2tncm91bmRDb2xvcihiYWNr
Z3JvdW5kKQogICAgICAgICAsIG1fZm9udChmb250KQpAQCAtNTksOCArNTksOCBAQCBwdWJsaWM6
CiAgICAgewogICAgIH0KIAotICAgIGNvbnN0IENvbG9yJiBmb3JlZ3JvdW5kQ29sb3IoKSBjb25z
dCB7IHJldHVybiBtX2ZvcmVncm91bmRDb2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiBiYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQorICAgIGNvbnN0
IE9wdGlvbmFsUkdCQSYgZm9yZWdyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9mb3JlZ3Jv
dW5kQ29sb3I7IH0KKyAgICBjb25zdCBPcHRpb25hbFJHQkEmIGJhY2tncm91bmRDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CiAgICAgY29uc3QgRm9udENhc2NhZGUm
IGZvbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQ7IH0KICAgICBib29sIGlzVmlzaWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmlzaWJsZTsgfQogICAgIGJvb2wgaXNEaXNwbGF5Tm9uZSgpIGNvbnN0
IHsgcmV0dXJuIG1faXNEaXNwbGF5Tm9uZTsgfQpAQCAtNzMsOCArNzMsOCBAQCBwdWJsaWM6CiAg
ICAgUG9wdXBNZW51U2l6ZSBtZW51U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVudVNpemU7IH0K
IAogcHJpdmF0ZToKLSAgICBDb2xvciBtX2ZvcmVncm91bmRDb2xvcjsKLSAgICBDb2xvciBtX2Jh
Y2tncm91bmRDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgbV9mb3JlZ3JvdW5kQ29sb3I7CisgICAg
T3B0aW9uYWxSR0JBIG1fYmFja2dyb3VuZENvbG9yOwogICAgIEZvbnRDYXNjYWRlIG1fZm9udDsK
ICAgICBib29sIG1fdmlzaWJsZTsKICAgICBib29sIG1faXNEaXNwbGF5Tm9uZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCmluZGV4IGZhOGFmMGVlYWVkYjU4ZjlmOGMz
YThjNzY4MjdkNDMyMDhhNmM0MzIuLjhjMzg0ZDdiZWM3MjQ0ODkyZjFhMzA2NDIzZWNmY2E0Nzc3
NWUzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaApAQCAtODUs
MTMgKzg1LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Ny
b2xsYmFyJiwgU2Nyb2xsYmFyUGFydCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3Jv
bGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50
UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29y
bmVyUmVjdCk7IH0KLSAgICBzdGF0aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRl
eHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJH
Qik7IH0KKyAgICBzdGF0aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRleHQtPmZp
bGxSZWN0KGNvcm5lclJlY3QsIE9wdGlvbmFsUkdCQTo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0
JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQogCiAjaWYgRU5BQkxFKFJV
QkJFUl9CQU5ESU5HKQotICAgIHZpcnR1YWwgdm9pZCBzZXRVcE92ZXJoYW5nQXJlYXNMYXllckNv
bnRlbnRzKEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBDb2xvciYpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzZXRVcE92ZXJoYW5nQXJlYXNMYXllckNvbnRlbnRzKEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBP
cHRpb25hbFJHQkEmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VXBDb250ZW50U2hhZG93TGF5
ZXIoR3JhcGhpY3NMYXllciopIHsgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAppbmRleCA4ZTJmODM1YzY3MzJk
ZTY0ZTA1OWFhNjhlY2M4MzQ5YWU1YjAyMDQ3Li4wZGVlNGNiZWE1NDJmNTdkNzYxMDVlMjk3NTdi
M2Y2OGQ2ZDlmZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGUuY3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgaW50IFNjcm9sbGJhclRo
ZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aChTY3JvbGxiYXImIHNjcm9sbGJhcikKIAogdm9pZCBT
Y3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKLSAg
ICBjb250ZXh0LT5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIE9wdGlvbmFsUkdC
QTo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogfQogCiBJbnRSZWN0IFNjcm9sbGJhclRo
ZW1lQ29tcG9zaXRlOjp0aHVtYlJlY3QoU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCkBAIC0yODEsMTEg
KzI4MSwxMSBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYlJlY3QoU2Ny
b2xsYmFyJiBzY3JvbGxiYXIpCiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50
T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNh
bE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogeyAgICAKLSAgICBjb250
ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoT3B0aW9uYWxSR0JBOjp3aGl0ZSwgQ29sb3JTcGFjZURl
dmljZVJHQik7CiAgICAgaWYgKCFob3Jpem9udGFsT3ZlcmhhbmdSZWN0LmlzRW1wdHkoKSkKICAg
ICAgICAgY29udGV4dC0+ZmlsbFJlY3QoaW50ZXJzZWN0aW9uKGhvcml6b250YWxPdmVyaGFuZ1Jl
Y3QsIGRpcnR5UmVjdCkpOwogCi0gICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjp3aGl0
ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKE9wdGlv
bmFsUkdCQTo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGlmICghdmVydGljYWxP
dmVyaGFuZ1JlY3QuaXNFbXB0eSgpKQogICAgICAgICBjb250ZXh0LT5maWxsUmVjdChpbnRlcnNl
Y3Rpb24odmVydGljYWxPdmVyaGFuZ1JlY3QsIGRpcnR5UmVjdCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGhlbWUuY3BwCmluZGV4IGVhYzczNTI1NDFjYTYwMDJkZjdiMDg0YTY3N2MyMmZlMGU5YTEx
ODMuLjIzOWZlMGI5YzcxZGQ4N2UwOTg3ZDBkMGUyMGJiZjBiODZhMjA2NDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UaGVtZS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBUaGVtZTo6ZHJhd05hbWVk
SW1hZ2UoY29uc3QgU3RyaW5nJiBuYW1lLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEYKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNr
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoT3B0aW9u
YWxSR0JBOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICAvLyBEcmF3IGEgZ2Vu
ZXJpYyBXaXJlbGVzcyBQbGF5YmFjayBpY29uLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaAppbmRl
eCBlZWZiOTI4ZmM3NjU5MjRmNTM0ODFlM2NiZTQ0ZTgwNGM5Y2JlNDhmLi40M2ExZTE3NWE2ZTVj
NzQ3NGQ2NTBhOTljMWUxYmQ5NmQyZmI4YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgKQEAg
LTY4LDExICs2OCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNvbnRyb2xEcmF3c0Zv
Y3VzT3V0bGluZShDb250cm9sUGFydCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgLy8g
TWV0aG9kcyBmb3Igb2J0YWluaW5nIHBsYXRmb3JtLXNwZWNpZmljIGNvbG9ycy4KLSAgICB2aXJ0
dWFsIENvbG9yIHNlbGVjdGlvbkNvbG9yKENvbnRyb2xQYXJ0LCBjb25zdCBDb250cm9sU3RhdGVz
JiwgU2VsZWN0aW9uUGFydCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQotICAgIHZpcnR1YWwg
Q29sb3IgdGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsg
fQorICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHNlbGVjdGlvbkNvbG9yKENvbnRyb2xQYXJ0LCBj
b25zdCBDb250cm9sU3RhdGVzJiwgU2VsZWN0aW9uUGFydCkgY29uc3QgeyByZXR1cm4gT3B0aW9u
YWxSR0JBKCk7IH0KKyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSB0ZXh0U2VhcmNoSGlnaGxpZ2h0
Q29sb3IoKSBjb25zdCB7IHJldHVybiBPcHRpb25hbFJHQkEoKTsgfQogICAgIAogICAgIC8vIENT
UyBzeXN0ZW0gY29sb3JzIGFuZCBmb250cwotICAgIHZpcnR1YWwgQ29sb3Igc3lzdGVtQ29sb3Io
VGhlbWVDb2xvcikgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQorICAgIHZpcnR1YWwgT3B0aW9u
YWxSR0JBIHN5c3RlbUNvbG9yKFRoZW1lQ29sb3IpIGNvbnN0IHsgcmV0dXJuIE9wdGlvbmFsUkdC
QSgpOyB9CiAgICAgdmlydHVhbCBGb250Q2FzY2FkZSBzeXN0ZW1Gb250KFRoZW1lRm9udCwgRm9u
dERlc2NyaXB0aW9uJikgY29uc3QgeyByZXR1cm4gRm9udENhc2NhZGUoKTsgfQogICAgIAogICAg
IC8vIEhvdyBmYXN0IHRoZSBjYXJldCBibGlua3MgaW4gdGV4dCBmaWVsZHMuCkBAIC0xMTUsOCAr
MTE1LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdFN0eWxlU2hlZXQoKTsK
IAogcHJpdmF0ZToKLSAgICBtdXRhYmxlIENvbG9yIG1fYWN0aXZlU2VsZWN0aW9uQ29sb3I7Ci0g
ICAgbXV0YWJsZSBDb2xvciBtX2luYWN0aXZlU2VsZWN0aW9uQ29sb3I7CisgICAgbXV0YWJsZSBP
cHRpb25hbFJHQkEgbV9hY3RpdmVTZWxlY3Rpb25Db2xvcjsKKyAgICBtdXRhYmxlIE9wdGlvbmFs
UkdCQSBtX2luYWN0aXZlU2VsZWN0aW9uQ29sb3I7CiB9OwogCiAvLyBGdW5jdGlvbiB0byBvYnRh
aW4gdGhlIHRoZW1lLiAgVGhpcyBpcyBpbXBsZW1lbnRlZCBpbiB0aGUgcGxhdGZvcm0tc3BlY2lm
aWMgc3ViY2xhc3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1RoZW1lQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2Nv
YS5jcHAKaW5kZXggZGE4NzkyOGMwZjg3MzQwNTljNDJiNzkwZDllMzE3MjI5NWY4Y2NmMi4uZDNi
ZjZiNTU4ZGUxOGJmMmZiN2Q5MjM5OWQwM2IxNTI2ZWZmZjMyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBU
aGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY28KICAgICB9CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6
YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihP
cHRpb25hbFJHQkE6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgIEZsb2F0U2l6
ZSB3aXJlbGVzc1BsYXliYWNrU3JjU2l6ZSgzMiwgMjQuMDE2KTsKICAgICBmaXRDb250ZXh0VG9C
b3goY29udGV4dCwgd2lyZWxlc3NQbGF5YmFja1NyY1NpemUsIHJlY3Quc2l6ZSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwCmluZGV4IDAwMmE3OTBhNjJj
OTQ4YzBmYzIzM2I2NzEyNzUwNjdkOTg4M2FlMDguLjlhMzQwYmEwNjEwN2I3YjU3Mjg4MjU5MDUw
MWM1MzIyY2Q5YTNmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9E
cmFnRGF0YUVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdEYXRh
RWZsLmNwcApAQCAtNTksOSArNTksOSBAQCBTdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KCkg
Y29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLUNvbG9yIERyYWdEYXRhOjphc0NvbG9y
KCkgY29uc3QKK09wdGlvbmFsUkdCQSBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIENvbG9yKCk7CisgICAgcmV0dXJuIE9wdGlvbmFsUkdCQSgpOwogfQogCiBib29sIERy
YWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCmluZGV4IDIyZmE3NjEzZmZjZGZl
MGFlMzE5MzhhZDNhMWUzN2Q5Y2NmNGQzMTYuLjQwZWRmMWI2ZjYwYzYzYTdlYzA2NDI3YTZiNmY4
NDIzMThjMGNjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5k
ZXJUaGVtZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRo
ZW1lRWZsLmNwcApAQCAtMzQwLDcgKzM0MCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFwcGx5
RWRqZVJUTFN0YXRlKEV2YXNfT2JqZWN0KiBlZGplLCBjb25zdCBSZW5kZXJPYmplY3QmIG9iCiAg
ICAgfQogfQogCi1ib29sIFJlbmRlclRoZW1lRWZsOjppc0NvbnRyb2xTdHlsZWQoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCb3JkZXJEYXRhJiBib3JkZXIsIGNvbnN0IEZpbGxMYXll
ciYgYmFja2dyb3VuZCwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikgY29uc3QKK2Jvb2wg
UmVuZGVyVGhlbWVFZmw6OmlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IGNvbnN0IEJvcmRlckRhdGEmIGJvcmRlciwgY29uc3QgRmlsbExheWVyJiBiYWNrZ3JvdW5kLCBj
b25zdCBPcHRpb25hbFJHQkEmIGJhY2tncm91bmRDb2xvcikgY29uc3QKIHsKICAgICByZXR1cm4g
UmVuZGVyVGhlbWU6OmlzQ29udHJvbFN0eWxlZChzdHlsZSwgYm9yZGVyLCBiYWNrZ3JvdW5kLCBi
YWNrZ3JvdW5kQ29sb3IpIHx8IHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBNZW51bGlzdEJ1dHRvblBh
cnQ7CiB9CkBAIC0zNTQsNyArMzU0LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRUaGVt
ZVBhcnQoY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QsIEZvcm1UeXBlIHR5cGUsIGMKICAgICBp
ZiAoIWVudHJ5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBib29sIGhhdmVCYWNrZ3Jv
dW5kQ29sb3IgPSBpc0NvbnRyb2xTdHlsZWQob2JqZWN0LnN0eWxlKCksIG9iamVjdC5zdHlsZSgp
LmJvcmRlcigpLCAqb2JqZWN0LnN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLCBDb2xvcjo6d2hp
dGUpOworICAgIGJvb2wgaGF2ZUJhY2tncm91bmRDb2xvciA9IGlzQ29udHJvbFN0eWxlZChvYmpl
Y3Quc3R5bGUoKSwgb2JqZWN0LnN0eWxlKCkuYm9yZGVyKCksICpvYmplY3Quc3R5bGUoKS5iYWNr
Z3JvdW5kTGF5ZXJzKCksIE9wdGlvbmFsUkdCQTo6d2hpdGUpOwogICAgIENvbnRyb2xTdGF0ZXMg
c3RhdGVzKGV4dHJhY3RDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIob2JqZWN0KSk7CiAgICAgYXBw
bHlFZGplU3RhdGVGcm9tRm9ybShlbnRyeS0+ZWRqZSgpLCAmc3RhdGVzLCBoYXZlQmFja2dyb3Vu
ZENvbG9yKTsKIApAQCAtNDE5LDcgKzQxOSw3IEBAIHN0YXRpYyB2b2lkIGFwcGx5Q29sb3JDYWxs
YmFjayh2b2lkKiBkYXRhLCBFdmFzX09iamVjdCosIGNvbnN0IGNoYXIqIC8qIHNpZ25hbCAqCiAg
ICAgdGhhdC0+cGxhdGZvcm1Db2xvcnNEaWRDaGFuZ2UoKTsgLy8gVHJpZ2dlcnMgcmVsYXlvdXQu
CiB9CiAKLXN0YXRpYyBib29sIGZpbGxDb2xvcnNGcm9tRWRqZUNsYXNzKEV2YXNfT2JqZWN0KiBv
LCBjb25zdCBjaGFyKiBjb2xvckNsYXNzLCBDb2xvciogY29sb3IxLCBDb2xvciogY29sb3IyID0g
MCwgQ29sb3IqIGNvbG9yMyA9IDApCitzdGF0aWMgYm9vbCBmaWxsQ29sb3JzRnJvbUVkamVDbGFz
cyhFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogY29sb3JDbGFzcywgT3B0aW9uYWxSR0JBKiBj
b2xvcjEsIE9wdGlvbmFsUkdCQSogY29sb3IyID0gMCwgT3B0aW9uYWxSR0JBKiBjb2xvcjMgPSAw
KQogewogICAgIGludCByMSwgZzEsIGIxLCBhMTsKICAgICBpbnQgcjIsIGcyLCBiMiwgYTI7CkBA
IC02MTAsMTEgKzYxMCwxMSBAQCBSZW5kZXJUaGVtZUVmbDo6UmVuZGVyVGhlbWVFZmwoUGFnZSog
cGFnZSkKICAgICA6IFJlbmRlclRoZW1lKCkKICAgICAsIG1fcGFnZShwYWdlKQogICAgICwgbV9h
Y3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoMCwgMCwgMjU1KQotICAgICwgbV9hY3RpdmVT
ZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoQ29sb3I6OndoaXRlKQorICAgICwgbV9hY3RpdmVTZWxl
Y3Rpb25Gb3JlZ3JvdW5kQ29sb3IoT3B0aW9uYWxSR0JBOjp3aGl0ZSkKICAgICAsIG1faW5hY3Rp
dmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoMCwgMCwgMTI4KQogICAgICwgbV9pbmFjdGl2ZVNl
bGVjdGlvbkZvcmVncm91bmRDb2xvcigyMDAsIDIwMCwgMjAwKQogICAgICwgbV9mb2N1c1JpbmdD
b2xvcigzMiwgMzIsIDIyNCwgMjI0KQotICAgICwgbV9zbGlkZXJUaHVtYkNvbG9yKENvbG9yOjpk
YXJrR3JheSkKKyAgICAsIG1fc2xpZGVyVGh1bWJDb2xvcihPcHRpb25hbFJHQkE6OmRhcmtHcmF5
KQogICAgICwgbV9zdXBwb3J0c1NlbGVjdGlvbkZvcmVncm91bmRDb2xvcihmYWxzZSkKIHsKIH0K
QEAgLTY2MCwzMSArNjYwLDMxIEBAIGludCBSZW5kZXJUaGVtZUVmbDo6YmFzZWxpbmVQb3NpdGlv
bihjb25zdCBSZW5kZXJCb3gmIGJveCkgY29uc3QKICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OmJh
c2VsaW5lUG9zaXRpb24oYm94KTsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVFZmw6OnBsYXRmb3Jt
QWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5k
ZXJUaGVtZUVmbDo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25z
dAogewogICAgIGxvYWRUaGVtZUlmTmVlZGVkKCk7CiAgICAgcmV0dXJuIG1fYWN0aXZlU2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yOwogfQogCi1Db2xvciBSZW5kZXJUaGVtZUVmbDo6cGxhdGZvcm1J
bmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVu
ZGVyVGhlbWVFZmw6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBj
b25zdAogewogICAgIGxvYWRUaGVtZUlmTmVlZGVkKCk7CiAgICAgcmV0dXJuIG1faW5hY3RpdmVT
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3I7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lRWZsOjpwbGF0
Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEg
UmVuZGVyVGhlbWVFZmw6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkg
Y29uc3QKIHsKICAgICBsb2FkVGhlbWVJZk5lZWRlZCgpOwogICAgIHJldHVybiBtX2FjdGl2ZVNl
bGVjdGlvbkZvcmVncm91bmRDb2xvcjsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVFZmw6OnBsYXRm
b3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JB
IFJlbmRlclRoZW1lRWZsOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9y
KCkgY29uc3QKIHsKICAgICBsb2FkVGhlbWVJZk5lZWRlZCgpOwogICAgIHJldHVybiBtX2luYWN0
aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwogfQogCi1Db2xvciBSZW5kZXJUaGVtZUVmbDo6
cGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWVF
Zmw6OnBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdAogewogICAgIGxvYWRUaGVtZUlmTmVl
ZGVkKCk7CiAgICAgcmV0dXJuIG1fZm9jdXNSaW5nQ29sb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5oCmluZGV4IGM5MzdlNzc1MjM1YmY0NmQxNWI0YTQ4
Y2IyYWM2MTYyM2UyNzU1OWMuLjc2NmMwNGI3Yzc5ZGI4Njc4MWViYmRkMTZkMGM4MmQyYTBlNDgw
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVm
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5oCkBA
IC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNIb3Zlcihj
b25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAg
IC8vIEEgbWV0aG9kIFJldHVybmluZyB3aGV0aGVyIHRoZSBjb250cm9sIGlzIHN0eWxlZCBieSBj
c3Mgb3Igbm90IGUuZyBzcGVjaWZ5aW5nIGJhY2tncm91bmQtY29sb3IuCi0gICAgdmlydHVhbCBi
b29sIGlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEJvcmRlckRhdGEm
LCBjb25zdCBGaWxsTGF5ZXImLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb250cm9sU3R5bGVkKGNvbnN0IFJlbmRlclN0
eWxlJiwgY29uc3QgQm9yZGVyRGF0YSYsIGNvbnN0IEZpbGxMYXllciYsIGNvbnN0IE9wdGlvbmFs
UkdCQSYgYmFja2dyb3VuZENvbG9yKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIEEgbWV0aG9k
IGFza2luZyBpZiB0aGUgdGhlbWUgaXMgYWJsZSB0byBkcmF3IHRoZSBmb2N1cyByaW5nLgogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzUmluZyhjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtOTIsMTEgKzkyLDExIEBAIHB1YmxpYzoKICAgICAvLyBjb250cm9scyB0
aGF0IG5lZWQgdG8gZG8gdGhpcy4KICAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKGNv
bnN0IFJlbmRlckJveCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBDb2xvciBwbGF0
Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVTZWxlY3Rp
b25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIENvbG9yIHBs
YXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHBs
YXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91
bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHBsYXRm
b3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICAvLyBTZXQgcGxhdGZvcm0gY29sb3JzOyByZW1lbWJlciB0byBjYWxsIHBs
YXRmb3JtQ29sb3JEaWRDaGFuZ2UgYWZ0ZXIuCiAgICAgdm9pZCBzZXRDb2xvckZyb21UaGVtZUNs
YXNzKGNvbnN0IGNoYXIqIGNvbG9yQ2xhc3MpOwpAQCAtMjA0LDEyICsyMDQsMTIgQEAgcHJpdmF0
ZToKICAgICBib29sIHBhaW50VGhlbWVQYXJ0KGNvbnN0IFJlbmRlck9iamVjdCYsIEZvcm1UeXBl
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICBQYWdlKiBtX3BhZ2U7
Ci0gICAgQ29sb3IgbV9hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3I7Ci0gICAgQ29sb3Ig
bV9hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7Ci0gICAgQ29sb3IgbV9pbmFjdGl2ZVNl
bGVjdGlvbkJhY2tncm91bmRDb2xvcjsKLSAgICBDb2xvciBtX2luYWN0aXZlU2VsZWN0aW9uRm9y
ZWdyb3VuZENvbG9yOwotICAgIENvbG9yIG1fZm9jdXNSaW5nQ29sb3I7Ci0gICAgQ29sb3IgbV9z
bGlkZXJUaHVtYkNvbG9yOworICAgIE9wdGlvbmFsUkdCQSBtX2FjdGl2ZVNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgbV9hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5k
Q29sb3I7CisgICAgT3B0aW9uYWxSR0JBIG1faW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3I7CisgICAgT3B0aW9uYWxSR0JBIG1faW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7
CisgICAgT3B0aW9uYWxSR0JBIG1fZm9jdXNSaW5nQ29sb3I7CisgICAgT3B0aW9uYWxSR0JBIG1f
c2xpZGVyVGh1bWJDb2xvcjsKIAogICAgIFN0cmluZyBtX3RoZW1lUGF0aDsKICAgICAvLyBPcmRl
ciBzbyB0aGF0IHRoZSBjYW52YXMgZ2V0cyBkZXN0cm95ZWQgYXQgbGFzdC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBkODg5NGZi
ZDYxNzBiMjI1Njk5OWU3NThjMjU1NDQzOGU1ZGQzNzE3Li4yZDRkOTVkMTRmM2JmOGFmYjQxMGU2
NTdlYTU1ZTU5Y2ZjYzU1ZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC03MDEsNyArNzAxLDcgQEAgYm9vbCBCaXRtYXBJbWFn
ZTo6bWF5RmlsbFdpdGhTb2xpZENvbG9yKCkKICAgICByZXR1cm4gbV9pc1NvbGlkQ29sb3IgJiYg
IW1fY3VycmVudEZyYW1lOwogfQogCi1Db2xvciBCaXRtYXBJbWFnZTo6c29saWRDb2xvcigpIGNv
bnN0CitPcHRpb25hbFJHQkEgQml0bWFwSW1hZ2U6OnNvbGlkQ29sb3IoKSBjb25zdAogewogICAg
IHJldHVybiBtX3NvbGlkQ29sb3I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuaAppbmRleCAyYzcxY2ZjYjBlYWY1YWViMzc3ZGI1YWVmMDU3M2Y0
YmUzYzA2YmE0Li4zZDk2YzI4MjBiZGZmYWU0ZjI5ZmY4MTFjODZlOGI0ZWNkNWJmOGI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTI4
MCw3ICsyODAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjaGVja0ZvclNvbGlkQ29sb3IoKTsK
IAogICAgIHZpcnR1YWwgYm9vbCBtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIENvbG9yIHNvbGlkQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IE9wdGlvbmFsUkdCQSBzb2xpZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICNpZiAhQVNTRVJU
X0RJU0FCTEVECiAgICAgdmlydHVhbCBib29sIG5vdFNvbGlkQ29sb3IoKSBvdmVycmlkZTsKQEAg
LTMxNiw3ICszMTYsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgUmV0YWluUHRyPENGRGF0YVJl
Zj4gbV90aWZmUmVwOyAvLyBDYWNoZWQgVElGRiByZXAgZm9yIGZyYW1lIDAuIE9ubHkgYnVpbHQg
bGF6aWx5IGlmIHNvbWVvbmUgcXVlcmllcyBmb3Igb25lLgogI2VuZGlmCiAKLSAgICBDb2xvciBt
X3NvbGlkQ29sb3I7ICAvLyBJZiB3ZSdyZSBhIDF4MSBzb2xpZCBjb2xvciwgdGhpcyBpcyB0aGUg
Y29sb3IgdG8gdXNlIHRvIGZpbGwuCisgICAgT3B0aW9uYWxSR0JBIG1fc29saWRDb2xvcjsgIC8v
IElmIHdlJ3JlIGEgMXgxIHNvbGlkIGNvbG9yLCB0aGlzIGlzIHRoZSBjb2xvciB0byB1c2UgdG8g
ZmlsbC4KIAogICAgIHVuc2lnbmVkIG1fZGVjb2RlZFNpemU7IC8vIFRoZSBjdXJyZW50IHNpemUg
b2YgYWxsIGRlY29kZWQgZnJhbWVzLgogICAgIG11dGFibGUgdW5zaWduZWQgbV9kZWNvZGVkUHJv
cGVydGllc1NpemU7IC8vIFRoZSBzaXplIG9mIGRhdGEgZGVjb2RlZCBieSB0aGUgc291cmNlIHRv
IGRldGVybWluZSBpbWFnZSBwcm9wZXJ0aWVzIChlLmcuIHNpemUsIGZyYW1lIGNvdW50LCBldGMp
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCmluZGV4IDQyMzJh
MDc5MTMyNGJkODI1ZWY2MDlmY2VlODQwZWM4NDBjZjRjNTYuLjJmZjE0ODQwZjc5YzM3OTMxNjhj
ZDFhODEwODM4ZWZkODRiMjQ0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvci5jcHAKQEAgLTM3LDEyICszNywxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAj
aWYgIUNPTVBJTEVSKE1TVkMpCi1jb25zdCBSR0JBMzIgQ29sb3I6OmJsYWNrOwotY29uc3QgUkdC
QTMyIENvbG9yOjp3aGl0ZTsKLWNvbnN0IFJHQkEzMiBDb2xvcjo6ZGFya0dyYXk7Ci1jb25zdCBS
R0JBMzIgQ29sb3I6OmdyYXk7Ci1jb25zdCBSR0JBMzIgQ29sb3I6OmxpZ2h0R3JheTsKLWNvbnN0
IFJHQkEzMiBDb2xvcjo6dHJhbnNwYXJlbnQ7Citjb25zdCBSR0JBMzIgT3B0aW9uYWxSR0JBOjpi
bGFjazsKK2NvbnN0IFJHQkEzMiBPcHRpb25hbFJHQkE6OndoaXRlOworY29uc3QgUkdCQTMyIE9w
dGlvbmFsUkdCQTo6ZGFya0dyYXk7Citjb25zdCBSR0JBMzIgT3B0aW9uYWxSR0JBOjpncmF5Owor
Y29uc3QgUkdCQTMyIE9wdGlvbmFsUkdCQTo6bGlnaHRHcmF5OworY29uc3QgUkdCQTMyIE9wdGlv
bmFsUkdCQTo6dHJhbnNwYXJlbnQ7CiAjZW5kaWYKIAogc3RhdGljIGNvbnN0IFJHQkEzMiBsaWdo
dGVuZWRCbGFjayA9IDB4RkY1NDU0NTQ7CkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBkb3VibGUg
Y2FsY0h1ZShkb3VibGUgdGVtcDEsIGRvdWJsZSB0ZW1wMiwgZG91YmxlIGh1ZVZhbCkKICAgICBy
ZXR1cm4gdGVtcDE7CiB9CiAKLS8vIEV4cGxhbmF0aW9uIG9mIHRoaXMgYWxnb3JpdGhtIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgQ1NTMyBDb2xvciBNb2R1bGUKKy8vIEV4cGxhbmF0aW9uIG9mIHRoaXMg
YWxnb3JpdGhtIGNhbiBiZSBmb3VuZCBpbiB0aGUgQ1NTMyBPcHRpb25hbFJHQkEgTW9kdWxlCiAv
LyBzcGVjaWZpY2F0aW9uIGF0IGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtY29sb3IvI2hzbC1j
b2xvciB3aXRoIGZ1cnRoZXIKIC8vIGV4cGxhbmF0aW9uIGF2YWlsYWJsZSBhdCBodHRwOi8vZW4u
d2lraXBlZGlhLm9yZy93aWtpL0hTTF9jb2xvcl9zcGFjZSAKIApAQCAtMTQ4LDE3ICsxNDgsMTcg
QEAgc3RhdGljIGlubGluZSBib29sIHBhcnNlSGV4Q29sb3JJbnRlcm5hbChjb25zdCBDaGFyYWN0
ZXJUeXBlKiBuYW1lLCB1bnNpZ25lZCBsZW4KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBD
b2xvcjo6cGFyc2VIZXhDb2xvcihjb25zdCBMQ2hhciogbmFtZSwgdW5zaWduZWQgbGVuZ3RoLCBS
R0JBMzImIHJnYikKK2Jvb2wgT3B0aW9uYWxSR0JBOjpwYXJzZUhleENvbG9yKGNvbnN0IExDaGFy
KiBuYW1lLCB1bnNpZ25lZCBsZW5ndGgsIFJHQkEzMiYgcmdiKQogewogICAgIHJldHVybiBwYXJz
ZUhleENvbG9ySW50ZXJuYWwobmFtZSwgbGVuZ3RoLCByZ2IpOwogfQogCi1ib29sIENvbG9yOjpw
YXJzZUhleENvbG9yKGNvbnN0IFVDaGFyKiBuYW1lLCB1bnNpZ25lZCBsZW5ndGgsIFJHQkEzMiYg
cmdiKQorYm9vbCBPcHRpb25hbFJHQkE6OnBhcnNlSGV4Q29sb3IoY29uc3QgVUNoYXIqIG5hbWUs
IHVuc2lnbmVkIGxlbmd0aCwgUkdCQTMyJiByZ2IpCiB7CiAgICAgcmV0dXJuIHBhcnNlSGV4Q29s
b3JJbnRlcm5hbChuYW1lLCBsZW5ndGgsIHJnYik7CiB9CiAKLWJvb2wgQ29sb3I6OnBhcnNlSGV4
Q29sb3IoY29uc3QgU3RyaW5nJiBuYW1lLCBSR0JBMzImIHJnYikKK2Jvb2wgT3B0aW9uYWxSR0JB
OjpwYXJzZUhleENvbG9yKGNvbnN0IFN0cmluZyYgbmFtZSwgUkdCQTMyJiByZ2IpCiB7CiAgICAg
dW5zaWduZWQgbGVuZ3RoID0gbmFtZS5sZW5ndGgoKTsKICAgICAKQEAgLTE2OSw3ICsxNjksNyBA
QCBib29sIENvbG9yOjpwYXJzZUhleENvbG9yKGNvbnN0IFN0cmluZyYgbmFtZSwgUkdCQTMyJiBy
Z2IpCiAgICAgcmV0dXJuIHBhcnNlSGV4Q29sb3IobmFtZS5jaGFyYWN0ZXJzMTYoKSwgbmFtZS5s
ZW5ndGgoKSwgcmdiKTsKIH0KIAotaW50IGRpZmZlcmVuY2VTcXVhcmVkKGNvbnN0IENvbG9yJiBj
MSwgY29uc3QgQ29sb3ImIGMyKQoraW50IGRpZmZlcmVuY2VTcXVhcmVkKGNvbnN0IE9wdGlvbmFs
UkdCQSYgYzEsIGNvbnN0IE9wdGlvbmFsUkdCQSYgYzIpCiB7CiAgICAgaW50IGRSID0gYzEucmVk
KCkgLSBjMi5yZWQoKTsKICAgICBpbnQgZEcgPSBjMS5ncmVlbigpIC0gYzIuZ3JlZW4oKTsKQEAg
LTE3Nyw3ICsxNzcsNyBAQCBpbnQgZGlmZmVyZW5jZVNxdWFyZWQoY29uc3QgQ29sb3ImIGMxLCBj
b25zdCBDb2xvciYgYzIpCiAgICAgcmV0dXJuIGRSICogZFIgKyBkRyAqIGRHICsgZEIgKiBkQjsK
IH0KIAotQ29sb3I6OkNvbG9yKGNvbnN0IFN0cmluZyYgbmFtZSkKK09wdGlvbmFsUkdCQTo6T3B0
aW9uYWxSR0JBKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAobmFtZVswXSA9PSAnIycp
IHsKICAgICAgICAgaWYgKG5hbWUuaXM4Qml0KCkpCkBAIC0xODgsNyArMTg4LDcgQEAgQ29sb3I6
OkNvbG9yKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgc2V0TmFtZWRDb2xvcihuYW1lKTsK
IH0KIAotQ29sb3I6OkNvbG9yKGNvbnN0IGNoYXIqIG5hbWUpCitPcHRpb25hbFJHQkE6Ok9wdGlv
bmFsUkdCQShjb25zdCBjaGFyKiBuYW1lKQogewogICAgIGlmIChuYW1lWzBdID09ICcjJykKICAg
ICAgICAgbV92YWxpZCA9IHBhcnNlSGV4Q29sb3IoJm5hbWVbMV0sIG1fY29sb3IpOwpAQCAtMTk5
LDcgKzE5OSw3IEBAIENvbG9yOjpDb2xvcihjb25zdCBjaGFyKiBuYW1lKQogICAgIH0KIH0KIAot
U3RyaW5nIENvbG9yOjpzZXJpYWxpemVkKCkgY29uc3QKK1N0cmluZyBPcHRpb25hbFJHQkE6OnNl
cmlhbGl6ZWQoKSBjb25zdAogewogICAgIGlmICghaGFzQWxwaGEoKSkgewogICAgICAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CkBAIC0yMzYsNyArMjM2LDcgQEAgU3RyaW5nIENvbG9yOjpzZXJp
YWxpemVkKCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChyZXN1bHQpOwogfQogCi1T
dHJpbmcgQ29sb3I6Om5hbWVGb3JSZW5kZXJUcmVlQXNUZXh0KCkgY29uc3QKK1N0cmluZyBPcHRp
b25hbFJHQkE6Om5hbWVGb3JSZW5kZXJUcmVlQXNUZXh0KCkgY29uc3QKIHsKICAgICBpZiAoYWxw
aGEoKSA8IDB4RkYpCiAgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiIyUwMlglMDJYJTAy
WCUwMlgiLCByZWQoKSwgZ3JlZW4oKSwgYmx1ZSgpLCBhbHBoYSgpKTsKQEAgLTI1OSwxNCArMjU5
LDE0IEBAIHN0YXRpYyBpbmxpbmUgY29uc3QgTmFtZWRDb2xvciogZmluZE5hbWVkQ29sb3IoY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBmaW5kQ29sb3IoYnVmZmVyLCBsZW5ndGgpOwog
fQogCi12b2lkIENvbG9yOjpzZXROYW1lZENvbG9yKGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQg
T3B0aW9uYWxSR0JBOjpzZXROYW1lZENvbG9yKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBj
b25zdCBOYW1lZENvbG9yKiBmb3VuZENvbG9yID0gZmluZE5hbWVkQ29sb3IobmFtZSk7CiAgICAg
bV9jb2xvciA9IGZvdW5kQ29sb3IgPyBmb3VuZENvbG9yLT5BUkdCVmFsdWUgOiAwOwogICAgIG1f
dmFsaWQgPSBmb3VuZENvbG9yOwogfQogCi1Db2xvciBDb2xvcjo6bGlnaHQoKSBjb25zdAorT3B0
aW9uYWxSR0JBIE9wdGlvbmFsUkdCQTo6bGlnaHQoKSBjb25zdAogewogICAgIC8vIEhhcmRjb2Rl
IHRoaXMgY29tbW9uIGNhc2UgZm9yIHNwZWVkLgogICAgIGlmIChtX2NvbG9yID09IGJsYWNrKQpA
QCAtMjgxLDE3ICsyODEsMTcgQEAgQ29sb3IgQ29sb3I6OmxpZ2h0KCkgY29uc3QKIAogICAgIGlm
ICh2ID09IDAuMGYpCiAgICAgICAgIC8vIExpZ2h0ZW5lZCBibGFjayB3aXRoIGFscGhhLgotICAg
ICAgICByZXR1cm4gQ29sb3IoMHg1NCwgMHg1NCwgMHg1NCwgYWxwaGEoKSk7CisgICAgICAgIHJl
dHVybiBPcHRpb25hbFJHQkEoMHg1NCwgMHg1NCwgMHg1NCwgYWxwaGEoKSk7CiAKICAgICBmbG9h
dCBtdWx0aXBsaWVyID0gc3RkOjptaW4oMS4wZiwgdiArIDAuMzNmKSAvIHY7CiAKLSAgICByZXR1
cm4gQ29sb3Ioc3RhdGljX2Nhc3Q8aW50PihtdWx0aXBsaWVyICogciAqIHNjYWxlRmFjdG9yKSwK
KyAgICByZXR1cm4gT3B0aW9uYWxSR0JBKHN0YXRpY19jYXN0PGludD4obXVsdGlwbGllciAqIHIg
KiBzY2FsZUZhY3RvciksCiAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4obXVsdGlw
bGllciAqIGcgKiBzY2FsZUZhY3RvciksCiAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGlu
dD4obXVsdGlwbGllciAqIGIgKiBzY2FsZUZhY3RvciksCiAgICAgICAgICAgICAgICAgIGFscGhh
KCkpOwogfQogCi1Db2xvciBDb2xvcjo6ZGFyaygpIGNvbnN0CitPcHRpb25hbFJHQkEgT3B0aW9u
YWxSR0JBOjpkYXJrKCkgY29uc3QKIHsKICAgICAvLyBIYXJkY29kZSB0aGlzIGNvbW1vbiBjYXNl
IGZvciBzcGVlZC4KICAgICBpZiAobV9jb2xvciA9PSB3aGl0ZSkKQEAgLTMwNSwxMyArMzA1LDEz
IEBAIENvbG9yIENvbG9yOjpkYXJrKCkgY29uc3QKICAgICBmbG9hdCB2ID0gc3RkOjptYXgociwg
c3RkOjptYXgoZywgYikpOwogICAgIGZsb2F0IG11bHRpcGxpZXIgPSBzdGQ6Om1heCgwLjBmLCAo
diAtIDAuMzNmKSAvIHYpOwogCi0gICAgcmV0dXJuIENvbG9yKHN0YXRpY19jYXN0PGludD4obXVs
dGlwbGllciAqIHIgKiBzY2FsZUZhY3RvciksCisgICAgcmV0dXJuIE9wdGlvbmFsUkdCQShzdGF0
aWNfY2FzdDxpbnQ+KG11bHRpcGxpZXIgKiByICogc2NhbGVGYWN0b3IpLAogICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxpbnQ+KG11bHRpcGxpZXIgKiBnICogc2NhbGVGYWN0b3IpLAogICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KG11bHRpcGxpZXIgKiBiICogc2NhbGVGYWN0
b3IpLAogICAgICAgICAgICAgICAgICBhbHBoYSgpKTsKIH0KIAotYm9vbCBDb2xvcjo6aXNEYXJr
KCkgY29uc3QKK2Jvb2wgT3B0aW9uYWxSR0JBOjppc0RhcmsoKSBjb25zdAogewogICAgIGZsb2F0
IHJlZDsKICAgICBmbG9hdCBncmVlbjsKQEAgLTMzNSw3ICszMzUsNyBAQCBjb25zdCBpbnQgY1N0
YXJ0QWxwaGEgPSAxNTM7IC8vIDYwJQogY29uc3QgaW50IGNFbmRBbHBoYSA9IDIwNDsgLy8gODAl
OwogY29uc3QgaW50IGNBbHBoYUluY3JlbWVudCA9IDE3OyAvLyBJbmNyZW1lbnRzIGluIGJldHdl
ZW4uCiAKLUNvbG9yIENvbG9yOjpibGVuZChjb25zdCBDb2xvciYgc291cmNlKSBjb25zdAorT3B0
aW9uYWxSR0JBIE9wdGlvbmFsUkdCQTo6YmxlbmQoY29uc3QgT3B0aW9uYWxSR0JBJiBzb3VyY2Up
IGNvbnN0CiB7CiAgICAgaWYgKCFhbHBoYSgpIHx8ICFzb3VyY2UuaGFzQWxwaGEoKSkKICAgICAg
ICAgcmV0dXJuIHNvdXJjZTsKQEAgLTM0OCwxNiArMzQ4LDE2IEBAIENvbG9yIENvbG9yOjpibGVu
ZChjb25zdCBDb2xvciYgc291cmNlKSBjb25zdAogICAgIGludCByID0gKHJlZCgpICogYWxwaGEo
KSAqICgyNTUgLSBzb3VyY2UuYWxwaGEoKSkgKyAyNTUgKiBzb3VyY2UuYWxwaGEoKSAqIHNvdXJj
ZS5yZWQoKSkgLyBkOwogICAgIGludCBnID0gKGdyZWVuKCkgKiBhbHBoYSgpICogKDI1NSAtIHNv
dXJjZS5hbHBoYSgpKSArIDI1NSAqIHNvdXJjZS5hbHBoYSgpICogc291cmNlLmdyZWVuKCkpIC8g
ZDsKICAgICBpbnQgYiA9IChibHVlKCkgKiBhbHBoYSgpICogKDI1NSAtIHNvdXJjZS5hbHBoYSgp
KSArIDI1NSAqIHNvdXJjZS5hbHBoYSgpICogc291cmNlLmJsdWUoKSkgLyBkOwotICAgIHJldHVy
biBDb2xvcihyLCBnLCBiLCBhKTsKKyAgICByZXR1cm4gT3B0aW9uYWxSR0JBKHIsIGcsIGIsIGEp
OwogfQogCi1Db2xvciBDb2xvcjo6YmxlbmRXaXRoV2hpdGUoKSBjb25zdAorT3B0aW9uYWxSR0JB
IE9wdGlvbmFsUkdCQTo6YmxlbmRXaXRoV2hpdGUoKSBjb25zdAogewogICAgIC8vIElmIHRoZSBj
b2xvciBjb250YWlucyBhbHBoYSBhbHJlYWR5LCB3ZSBsZWF2ZSBpdCBhbG9uZS4KICAgICBpZiAo
aGFzQWxwaGEoKSkKICAgICAgICAgcmV0dXJuICp0aGlzOwogCi0gICAgQ29sb3IgbmV3Q29sb3I7
CisgICAgT3B0aW9uYWxSR0JBIG5ld0NvbG9yOwogICAgIGZvciAoaW50IGFscGhhID0gY1N0YXJ0
QWxwaGE7IGFscGhhIDw9IGNFbmRBbHBoYTsgYWxwaGEgKz0gY0FscGhhSW5jcmVtZW50KSB7CiAg
ICAgICAgIC8vIFdlIGhhdmUgYSBzb2xpZCBjb2xvci4gIENvbnZlcnQgdG8gYW4gZXF1aXZhbGVu
dCBjb2xvciB0aGF0IGxvb2tzIHRoZSBzYW1lIHdoZW4gYmxlbmRlZCB3aXRoIHdoaXRlCiAgICAg
ICAgIC8vIGF0IHRoZSBjdXJyZW50IGFscGhhLiAgVHJ5IHVzaW5nIGxlc3MgdHJhbnNwYXJlbmN5
IGlmIHRoZSBudW1iZXJzIGVuZCB1cCBiZWluZyBuZWdhdGl2ZS4KQEAgLTM2NSw3ICszNjUsNyBA
QCBDb2xvciBDb2xvcjo6YmxlbmRXaXRoV2hpdGUoKSBjb25zdAogICAgICAgICBpbnQgZyA9IGJs
ZW5kQ29tcG9uZW50KGdyZWVuKCksIGFscGhhKTsKICAgICAgICAgaW50IGIgPSBibGVuZENvbXBv
bmVudChibHVlKCksIGFscGhhKTsKICAgICAgICAgCi0gICAgICAgIG5ld0NvbG9yID0gQ29sb3Io
ciwgZywgYiwgYWxwaGEpOworICAgICAgICBuZXdDb2xvciA9IE9wdGlvbmFsUkdCQShyLCBnLCBi
LCBhbHBoYSk7CiAKICAgICAgICAgaWYgKHIgPj0gMCAmJiBnID49IDAgJiYgYiA+PSAwKQogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0zNzMsNyArMzczLDcgQEAgQ29sb3IgQ29sb3I6OmJsZW5kV2l0
aFdoaXRlKCkgY29uc3QKICAgICByZXR1cm4gbmV3Q29sb3I7CiB9CiAKLXZvaWQgQ29sb3I6Omdl
dFJHQkEoZmxvYXQmIHIsIGZsb2F0JiBnLCBmbG9hdCYgYiwgZmxvYXQmIGEpIGNvbnN0Cit2b2lk
IE9wdGlvbmFsUkdCQTo6Z2V0UkdCQShmbG9hdCYgciwgZmxvYXQmIGcsIGZsb2F0JiBiLCBmbG9h
dCYgYSkgY29uc3QKIHsKICAgICByID0gcmVkKCkgLyAyNTUuMGY7CiAgICAgZyA9IGdyZWVuKCkg
LyAyNTUuMGY7CkBAIC0zODEsNyArMzgxLDcgQEAgdm9pZCBDb2xvcjo6Z2V0UkdCQShmbG9hdCYg
ciwgZmxvYXQmIGcsIGZsb2F0JiBiLCBmbG9hdCYgYSkgY29uc3QKICAgICBhID0gYWxwaGEoKSAv
IDI1NS4wZjsKIH0KIAotdm9pZCBDb2xvcjo6Z2V0UkdCQShkb3VibGUmIHIsIGRvdWJsZSYgZywg
ZG91YmxlJiBiLCBkb3VibGUmIGEpIGNvbnN0Cit2b2lkIE9wdGlvbmFsUkdCQTo6Z2V0UkdCQShk
b3VibGUmIHIsIGRvdWJsZSYgZywgZG91YmxlJiBiLCBkb3VibGUmIGEpIGNvbnN0CiB7CiAgICAg
ciA9IHJlZCgpIC8gMjU1LjA7CiAgICAgZyA9IGdyZWVuKCkgLyAyNTUuMDsKQEAgLTM4OSw3ICsz
ODksNyBAQCB2b2lkIENvbG9yOjpnZXRSR0JBKGRvdWJsZSYgciwgZG91YmxlJiBnLCBkb3VibGUm
IGIsIGRvdWJsZSYgYSkgY29uc3QKICAgICBhID0gYWxwaGEoKSAvIDI1NS4wOwogfQogCi12b2lk
IENvbG9yOjpnZXRIU0woZG91YmxlJiBodWUsIGRvdWJsZSYgc2F0dXJhdGlvbiwgZG91YmxlJiBs
aWdodG5lc3MpIGNvbnN0Cit2b2lkIE9wdGlvbmFsUkdCQTo6Z2V0SFNMKGRvdWJsZSYgaHVlLCBk
b3VibGUmIHNhdHVyYXRpb24sIGRvdWJsZSYgbGlnaHRuZXNzKSBjb25zdAogewogICAgIC8vIGh0
dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSFNMX2NvbG9yX3NwYWNlLiBUaGlzIGlzIGEgZGly
ZWN0IGNvcHkgb2YKICAgICAvLyB0aGUgYWxnb3JpdGhtIHRoZXJlaW4sIGFsdGhvdWdoIGl0J3Mg
MzYwXm8gYmFzZWQgYW5kIHdlIGVuZCB1cCB3YW50aW5nCkBAIC00MjQsMjYgKzQyNCwyNiBAQCB2
b2lkIENvbG9yOjpnZXRIU0woZG91YmxlJiBodWUsIGRvdWJsZSYgc2F0dXJhdGlvbiwgZG91Ymxl
JiBsaWdodG5lc3MpIGNvbnN0CiAgICAgICAgIHNhdHVyYXRpb24gPSAoKG1heCAtIG1pbikgLyAo
Mi4wIC0gKG1heCArIG1pbikpKTsKIH0KIAotQ29sb3IgY29sb3JGcm9tUHJlbXVsdGlwbGllZEFS
R0IoUkdCQTMyIHBpeGVsQ29sb3IpCitPcHRpb25hbFJHQkEgY29sb3JGcm9tUHJlbXVsdGlwbGll
ZEFSR0IoUkdCQTMyIHBpeGVsQ29sb3IpCiB7CiAgICAgaW50IGFscGhhID0gYWxwaGFDaGFubmVs
KHBpeGVsQ29sb3IpOwogICAgIGlmIChhbHBoYSAmJiBhbHBoYSA8IDI1NSkgewotICAgICAgICBy
ZXR1cm4gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsUkdC
QTo6Y3JlYXRlVW5jaGVja2VkKAogICAgICAgICAgICAgcmVkQ2hhbm5lbChwaXhlbENvbG9yKSAq
IDI1NSAvIGFscGhhLAogICAgICAgICAgICAgZ3JlZW5DaGFubmVsKHBpeGVsQ29sb3IpICogMjU1
IC8gYWxwaGEsCiAgICAgICAgICAgICBibHVlQ2hhbm5lbChwaXhlbENvbG9yKSAqIDI1NSAvIGFs
cGhhLAogICAgICAgICAgICAgYWxwaGEpOwogICAgIH0gZWxzZQotICAgICAgICByZXR1cm4gQ29s
b3IocGl4ZWxDb2xvcik7CisgICAgICAgIHJldHVybiBPcHRpb25hbFJHQkEocGl4ZWxDb2xvcik7
CiB9CiAKLVJHQkEzMiBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcihjb25zdCBDb2xvciYgY29s
b3IpCitSR0JBMzIgcHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JB
JiBjb2xvcikKIHsKICAgICB1bnNpZ25lZCBwaXhlbENvbG9yOwogCiAgICAgdW5zaWduZWQgYWxw
aGEgPSBjb2xvci5hbHBoYSgpOwogICAgIGlmIChhbHBoYSA8IDI1NSkgewotICAgICAgICBwaXhl
bENvbG9yID0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgKKyAgICAgICAgcGl4ZWxDb2xvciA9IE9w
dGlvbmFsUkdCQTo6Y3JlYXRlVW5jaGVja2VkKAogICAgICAgICAgICAgZmFzdERpdmlkZUJ5MjU1
KGNvbG9yLnJlZCgpICogYWxwaGEgKyAyNTQpLAogICAgICAgICAgICAgZmFzdERpdmlkZUJ5MjU1
KGNvbG9yLmdyZWVuKCkgKiBhbHBoYSArIDI1NCksCiAgICAgICAgICAgICBmYXN0RGl2aWRlQnky
NTUoY29sb3IuYmx1ZSgpICogYWxwaGEgKyAyNTQpLApAQCAtNDU0LDI3ICs0NTQsMjcgQEAgUkdC
QTMyIHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBy
ZXR1cm4gcGl4ZWxDb2xvcjsKIH0KIAotQ29sb3IgYmxlbmQoY29uc3QgQ29sb3ImIGZyb20sIGNv
bnN0IENvbG9yJiB0bywgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kUHJlbXVsdGlwbGllZCkK
K09wdGlvbmFsUkdCQSBibGVuZChjb25zdCBPcHRpb25hbFJHQkEmIGZyb20sIGNvbnN0IE9wdGlv
bmFsUkdCQSYgdG8sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFByZW11bHRpcGxpZWQpCiB7
CiAgICAgLy8gV2UgbmVlZCB0byBwcmVzZXJ2ZSB0aGUgc3RhdGUgb2YgdGhlIHZhbGlkIGZsYWcg
YXQgdGhlIGVuZCBvZiB0aGUgYW5pbWF0aW9uCiAgICAgaWYgKHByb2dyZXNzID09IDEgJiYgIXRv
LmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7CisgICAgICAgIHJldHVybiBPcHRp
b25hbFJHQkEoKTsKIAogICAgIGlmIChibGVuZFByZW11bHRpcGxpZWQpIHsKLSAgICAgICAgLy8g
Q29udHJhcnkgdG8gdGhlIG5hbWUsIFJHQkEzMiBhY3R1YWxseSBzdG9yZXMgQVJHQiwgc28gd2Ug
Y2FuIGluaXRpYWxpemUgQ29sb3IgZGlyZWN0bHkgZnJvbSBwcmVtdWx0aXBsaWVkQVJHQkZyb21D
b2xvcigpLgorICAgICAgICAvLyBDb250cmFyeSB0byB0aGUgbmFtZSwgUkdCQTMyIGFjdHVhbGx5
IHN0b3JlcyBBUkdCLCBzbyB3ZSBjYW4gaW5pdGlhbGl6ZSBPcHRpb25hbFJHQkEgZGlyZWN0bHkg
ZnJvbSBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcigpLgogICAgICAgICAvLyBBbHNvLCBwcmVt
dWx0aXBsaWVkQVJHQkZyb21Db2xvcigpIGJhaWxzIG9uIHplcm8gYWxwaGEsIHNvIHNwZWNpYWwt
Y2FzZSB0aGF0LgotICAgICAgICBDb2xvciBwcmVtdWx0RnJvbSA9IGZyb20uYWxwaGEoKSA/IHBy
ZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yKGZyb20pIDogMDsKLSAgICAgICAgQ29sb3IgcHJlbXVs
dFRvID0gdG8uYWxwaGEoKSA/IHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yKHRvKSA6IDA7Cisg
ICAgICAgIE9wdGlvbmFsUkdCQSBwcmVtdWx0RnJvbSA9IGZyb20uYWxwaGEoKSA/IHByZW11bHRp
cGxpZWRBUkdCRnJvbUNvbG9yKGZyb20pIDogMDsKKyAgICAgICAgT3B0aW9uYWxSR0JBIHByZW11
bHRUbyA9IHRvLmFscGhhKCkgPyBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcih0bykgOiAwOwog
Ci0gICAgICAgIENvbG9yIHByZW11bHRCbGVuZGVkKGJsZW5kKHByZW11bHRGcm9tLnJlZCgpLCBw
cmVtdWx0VG8ucmVkKCksIHByb2dyZXNzKSwKKyAgICAgICAgT3B0aW9uYWxSR0JBIHByZW11bHRC
bGVuZGVkKGJsZW5kKHByZW11bHRGcm9tLnJlZCgpLCBwcmVtdWx0VG8ucmVkKCksIHByb2dyZXNz
KSwKICAgICAgICAgICAgIGJsZW5kKHByZW11bHRGcm9tLmdyZWVuKCksIHByZW11bHRUby5ncmVl
bigpLCBwcm9ncmVzcyksCiAgICAgICAgICAgICBibGVuZChwcmVtdWx0RnJvbS5ibHVlKCksIHBy
ZW11bHRUby5ibHVlKCksIHByb2dyZXNzKSwKICAgICAgICAgICAgIGJsZW5kKHByZW11bHRGcm9t
LmFscGhhKCksIHByZW11bHRUby5hbHBoYSgpLCBwcm9ncmVzcykpOwogCi0gICAgICAgIHJldHVy
biBDb2xvcihjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQihwcmVtdWx0QmxlbmRlZC5yZ2IoKSkp
OworICAgICAgICByZXR1cm4gT3B0aW9uYWxSR0JBKGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdC
KHByZW11bHRCbGVuZGVkLnJnYigpKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIENvbG9yKGJsZW5k
KGZyb20ucmVkKCksIHRvLnJlZCgpLCBwcm9ncmVzcyksCisgICAgcmV0dXJuIE9wdGlvbmFsUkdC
QShibGVuZChmcm9tLnJlZCgpLCB0by5yZWQoKSwgcHJvZ3Jlc3MpLAogICAgICAgICBibGVuZChm
cm9tLmdyZWVuKCksIHRvLmdyZWVuKCksIHByb2dyZXNzKSwKICAgICAgICAgYmxlbmQoZnJvbS5i
bHVlKCksIHRvLmJsdWUoKSwgcHJvZ3Jlc3MpLAogICAgICAgICBibGVuZChmcm9tLmFscGhhKCks
IHRvLmFscGhhKCksIHByb2dyZXNzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuaAppbmRleCA2YTRmMzI2OTQ0ZmM0ZDAwZGFmODIxYTYxNzQ1OWIyZjUyYzEyMDdiLi5j
NWJhN2RiNDJlYTBkYjBmMDg1OTI4YTU4MDhmMmRlNTRhMjlkMzU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKQEAgLTIzLDggKzIzLDggQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAogICovCiAKLSNpZm5kZWYgQ29sb3JfaAotI2RlZmluZSBDb2xvcl9oCisjaWZuZGVmIENv
bG9yLmgKKyNkZWZpbmUgQ29sb3IuaAogCiAjaW5jbHVkZSA8dW5pY29kZS91Y2hhci5oPgogI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CkBAIC00OCw3ICs0OCw3IEBAIHR5cGVkZWYgc3RydWN0
IF9HZGtSR0JBIEdka1JHQkE7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29sb3I7
CitjbGFzcyBPcHRpb25hbFJHQkE7CiAKIHR5cGVkZWYgdW5zaWduZWQgUkdCQTMyOyAgICAgICAg
Ly8gUkdCQSBxdWFkcnVwbGV0CiAKQEAgLTYwLDM2ICs2MCwzNiBAQCBXRUJDT1JFX0VYUE9SVCBS
R0JBMzIgbWFrZVJHQkEzMkZyb21GbG9hdHMoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxv
YXQgYSk7CiBSR0JBMzIgbWFrZVJHQkFGcm9tSFNMQShkb3VibGUgaCwgZG91YmxlIHMsIGRvdWJs
ZSBsLCBkb3VibGUgYSk7CiBSR0JBMzIgbWFrZVJHQkFGcm9tQ01ZS0EoZmxvYXQgYywgZmxvYXQg
bSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSk7CiAKLWludCBkaWZmZXJlbmNlU3F1YXJlZChj
b25zdCBDb2xvciYsIGNvbnN0IENvbG9yJik7CitpbnQgZGlmZmVyZW5jZVNxdWFyZWQoY29uc3Qg
T3B0aW9uYWxSR0JBJiwgY29uc3QgT3B0aW9uYWxSR0JBJik7CiAKIGlubGluZSBpbnQgcmVkQ2hh
bm5lbChSR0JBMzIgY29sb3IpIHsgcmV0dXJuIChjb2xvciA+PiAxNikgJiAweEZGOyB9CiBpbmxp
bmUgaW50IGdyZWVuQ2hhbm5lbChSR0JBMzIgY29sb3IpIHsgcmV0dXJuIChjb2xvciA+PiA4KSAm
IDB4RkY7IH0KIGlubGluZSBpbnQgYmx1ZUNoYW5uZWwoUkdCQTMyIGNvbG9yKSB7IHJldHVybiBj
b2xvciAmIDB4RkY7IH0KIGlubGluZSBpbnQgYWxwaGFDaGFubmVsKFJHQkEzMiBjb2xvcikgeyBy
ZXR1cm4gKGNvbG9yID4+IDI0KSAmIDB4RkY7IH0KIAotY2xhc3MgQ29sb3IgeworY2xhc3MgT3B0
aW9uYWxSR0JBIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBD
b2xvcigpIDogbV9jb2xvcigwKSwgbV92YWxpZChmYWxzZSkgeyB9Ci0gICAgQ29sb3IoUkdCQTMy
IGNvbG9yLCBib29sIHZhbGlkID0gdHJ1ZSkgOiBtX2NvbG9yKGNvbG9yKSwgbV92YWxpZCh2YWxp
ZCkgeyBBU1NFUlQoIW1fY29sb3IgfHwgbV92YWxpZCk7IH0KLSAgICBDb2xvcihpbnQgciwgaW50
IGcsIGludCBiKSA6IG1fY29sb3IobWFrZVJHQihyLCBnLCBiKSksIG1fdmFsaWQodHJ1ZSkgeyB9
Ci0gICAgQ29sb3IoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpIDogbV9jb2xvcihtYWtlUkdC
QShyLCBnLCBiLCBhKSksIG1fdmFsaWQodHJ1ZSkgeyB9Ci0gICAgLy8gQ29sb3IgaXMgY3VycmVu
dGx5IGxpbWl0ZWQgdG8gMzJiaXQgUkdCQSwgcGVyaGFwcyBzb21lIGRheSB3ZSdsbCBzdXBwb3J0
IGJldHRlciBjb2xvcnMKLSAgICBDb2xvcihmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9h
dCBhKSA6IG1fY29sb3IobWFrZVJHQkEzMkZyb21GbG9hdHMociwgZywgYiwgYSkpLCBtX3ZhbGlk
KHRydWUpIHsgfQorICAgIE9wdGlvbmFsUkdCQSgpIDogbV9jb2xvcigwKSwgbV92YWxpZChmYWxz
ZSkgeyB9CisgICAgT3B0aW9uYWxSR0JBKFJHQkEzMiBjb2xvciwgYm9vbCB2YWxpZCA9IHRydWUp
IDogbV9jb2xvcihjb2xvciksIG1fdmFsaWQodmFsaWQpIHsgQVNTRVJUKCFtX2NvbG9yIHx8IG1f
dmFsaWQpOyB9CisgICAgT3B0aW9uYWxSR0JBKGludCByLCBpbnQgZywgaW50IGIpIDogbV9jb2xv
cihtYWtlUkdCKHIsIGcsIGIpKSwgbV92YWxpZCh0cnVlKSB7IH0KKyAgICBPcHRpb25hbFJHQkEo
aW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpIDogbV9jb2xvcihtYWtlUkdCQShyLCBnLCBiLCBh
KSksIG1fdmFsaWQodHJ1ZSkgeyB9CisgICAgLy8gT3B0aW9uYWxSR0JBIGlzIGN1cnJlbnRseSBs
aW1pdGVkIHRvIDMyYml0IFJHQkEsIHBlcmhhcHMgc29tZSBkYXkgd2UnbGwgc3VwcG9ydCBiZXR0
ZXIgY29sb3JzCisgICAgT3B0aW9uYWxSR0JBKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZs
b2F0IGEpIDogbV9jb2xvcihtYWtlUkdCQTMyRnJvbUZsb2F0cyhyLCBnLCBiLCBhKSksIG1fdmFs
aWQodHJ1ZSkgeyB9CiAgICAgLy8gQ3JlYXRlcyBhIG5ldyBjb2xvciBmcm9tIHRoZSBzcGVjaWZp
YyBDTVlLIGFuZCBhbHBoYSB2YWx1ZXMuCi0gICAgQ29sb3IoZmxvYXQgYywgZmxvYXQgbSwgZmxv
YXQgeSwgZmxvYXQgaywgZmxvYXQgYSkgOiBtX2NvbG9yKG1ha2VSR0JBRnJvbUNNWUtBKGMsIG0s
IHksIGssIGEpKSwgbV92YWxpZCh0cnVlKSB7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBDb2xvcihjb25zdCBTdHJpbmcmKTsKLSAgICBleHBsaWNpdCBDb2xvcihjb25zdCBjaGFyKik7
CisgICAgT3B0aW9uYWxSR0JBKGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZs
b2F0IGEpIDogbV9jb2xvcihtYWtlUkdCQUZyb21DTVlLQShjLCBtLCB5LCBrLCBhKSksIG1fdmFs
aWQodHJ1ZSkgeyB9CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgT3B0aW9uYWxSR0JBKGNv
bnN0IFN0cmluZyYpOworICAgIGV4cGxpY2l0IE9wdGlvbmFsUkdCQShjb25zdCBjaGFyKik7CiAK
LSAgICBzdGF0aWMgQ29sb3IgY3JlYXRlVW5jaGVja2VkKGludCByLCBpbnQgZywgaW50IGIpCisg
ICAgc3RhdGljIE9wdGlvbmFsUkdCQSBjcmVhdGVVbmNoZWNrZWQoaW50IHIsIGludCBnLCBpbnQg
YikKICAgICB7CiAgICAgICAgIFJHQkEzMiBjb2xvciA9IDB4RkYwMDAwMDAgfCByIDw8IDE2IHwg
ZyA8PCA4IHwgYjsKLSAgICAgICAgcmV0dXJuIENvbG9yKGNvbG9yKTsKKyAgICAgICAgcmV0dXJu
IE9wdGlvbmFsUkdCQShjb2xvcik7CiAgICAgfQotICAgIHN0YXRpYyBDb2xvciBjcmVhdGVVbmNo
ZWNrZWQoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCisgICAgc3RhdGljIE9wdGlvbmFsUkdC
QSBjcmVhdGVVbmNoZWNrZWQoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCiAgICAgewogICAg
ICAgICBSR0JBMzIgY29sb3IgPSBhIDw8IDI0IHwgciA8PCAxNiB8IGcgPDwgOCB8IGI7Ci0gICAg
ICAgIHJldHVybiBDb2xvcihjb2xvcik7CisgICAgICAgIHJldHVybiBPcHRpb25hbFJHQkEoY29s
b3IpOwogICAgIH0KIAogICAgIC8vIFJldHVybnMgdGhlIGNvbG9yIHNlcmlhbGl6ZWQgYWNjb3Jk
aW5nIHRvIEhUTUw1CkBAIC0xMTgsMjYgKzExOCwyNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBnZXRSR0JBKGRvdWJsZSYgciwgZG91YmxlJiBnLCBkb3VibGUmIGIsIGRvdWJs
ZSYgYSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRIU0woZG91YmxlJiBoLCBk
b3VibGUmIHMsIGRvdWJsZSYgbCkgY29uc3Q7CiAKLSAgICBDb2xvciBsaWdodCgpIGNvbnN0Owot
ICAgIENvbG9yIGRhcmsoKSBjb25zdDsKKyAgICBPcHRpb25hbFJHQkEgbGlnaHQoKSBjb25zdDsK
KyAgICBPcHRpb25hbFJHQkEgZGFyaygpIGNvbnN0OwogCiAgICAgYm9vbCBpc0RhcmsoKSBjb25z
dDsKIAogICAgIC8vIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgUG9ydGVyLUR1ZmYncyAi
c291cmNlLW92ZXIiIGVxdWF0aW9uCi0gICAgQ29sb3IgYmxlbmQoY29uc3QgQ29sb3ImKSBjb25z
dDsKLSAgICBDb2xvciBibGVuZFdpdGhXaGl0ZSgpIGNvbnN0OworICAgIE9wdGlvbmFsUkdCQSBi
bGVuZChjb25zdCBPcHRpb25hbFJHQkEmKSBjb25zdDsKKyAgICBPcHRpb25hbFJHQkEgYmxlbmRX
aXRoV2hpdGUoKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBDb2xvcihjb25zdCBH
ZGtDb2xvciYpOworICAgIE9wdGlvbmFsUkdCQShjb25zdCBHZGtDb2xvciYpOwogICAgIC8vIFdl
IGNhbid0IHNlbnNpYmx5IGdvIGJhY2sgdG8gR2RrQ29sb3Igd2l0aG91dCBsb3NpbmcgdGhlIGFs
cGhhIHZhbHVlCiAjaWZuZGVmIEdUS19BUElfVkVSU0lPTl8yCi0gICAgQ29sb3IoY29uc3QgR2Rr
UkdCQSYpOworICAgIE9wdGlvbmFsUkdCQShjb25zdCBHZGtSR0JBJik7CiAgICAgb3BlcmF0b3Ig
R2RrUkdCQSgpIGNvbnN0OwogI2VuZGlmCiAjZW5kaWYKIAogI2lmIFVTRShDRykKLSAgICBXRUJD
T1JFX0VYUE9SVCBDb2xvcihDR0NvbG9yUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25h
bFJHQkEoQ0dDb2xvclJlZik7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBib29sIHBhcnNlSGV4Q29s
b3IoY29uc3QgU3RyaW5nJiwgUkdCQTMyJik7CkBAIC0xNjMsMTkgKzE2MywxOSBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV92YWxpZDsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q29sb3ImIGEsIGNvbnN0IENvbG9yJiBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBP
cHRpb25hbFJHQkEmIGEsIGNvbnN0IE9wdGlvbmFsUkdCQSYgYikKIHsKICAgICByZXR1cm4gYS5y
Z2IoKSA9PSBiLnJnYigpICYmIGEuaXNWYWxpZCgpID09IGIuaXNWYWxpZCgpOwogfQogCi1pbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvbG9yJiBhLCBjb25zdCBDb2xvciYgYikKK2lubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0aW9uYWxSR0JBJiBhLCBjb25zdCBPcHRpb25hbFJH
QkEmIGIpCiB7CiAgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KIAotQ29sb3IgY29sb3JGcm9tUHJl
bXVsdGlwbGllZEFSR0IoUkdCQTMyKTsKLVJHQkEzMiBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xv
cihjb25zdCBDb2xvciYpOwotQ29sb3IgYmxlbmQoY29uc3QgQ29sb3ImIGZyb20sIGNvbnN0IENv
bG9yJiB0bywgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kUHJlbXVsdGlwbGllZCA9IHRydWUp
OworT3B0aW9uYWxSR0JBIGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdCKFJHQkEzMik7CitSR0JB
MzIgcHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJik7CitPcHRp
b25hbFJHQkEgYmxlbmQoY29uc3QgT3B0aW9uYWxSR0JBJiBmcm9tLCBjb25zdCBPcHRpb25hbFJH
QkEmIHRvLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRQcmVtdWx0aXBsaWVkID0gdHJ1ZSk7
CiAKIGlubGluZSB1aW50MTZfdCBmYXN0RGl2aWRlQnkyNTUodWludDE2X3QgdmFsdWUpCiB7CkBA
IC0xODYsNyArMTg2LDcgQEAgaW5saW5lIHVpbnQxNl90IGZhc3REaXZpZGVCeTI1NSh1aW50MTZf
dCB2YWx1ZSkKIH0KIAogI2lmIFVTRShDRykKLVdFQkNPUkVfRVhQT1JUIENHQ29sb3JSZWYgY2Fj
aGVkQ0dDb2xvcihjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworV0VCQ09SRV9FWFBPUlQgQ0dD
b2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYsIENvbG9yU3BhY2UpOwog
I2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYWRpZW50LmNwcAppbmRleCAyM2Q5YjMyMzI0NDQyOTcyNDVhMDZjYTdm
ZGZkYmJjYjJiZjVjZWMyLi45ZjNiYmZkNzk3NzZkNWQ2MzljOWU0NGFlOWExMjEzZjllODMwMTc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuY3BwCkBA
IC05MSw3ICs5MSw3IEBAIHZvaWQgR3JhZGllbnQ6OmFkanVzdFBhcmFtZXRlcnNGb3JUaWxlZERy
YXdpbmcoRmxvYXRTaXplJiBzaXplLCBGbG9hdFJlY3QmIHNyY1JlCiAgICAgc3JjUmVjdC5zZXRZ
KDApOwogfQogCi12b2lkIEdyYWRpZW50OjphZGRDb2xvclN0b3AoZmxvYXQgdmFsdWUsIGNvbnN0
IENvbG9yJiBjb2xvcikKK3ZvaWQgR3JhZGllbnQ6OmFkZENvbG9yU3RvcChmbG9hdCB2YWx1ZSwg
Y29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICBmbG9hdCByOwogICAgIGZsb2F0IGc7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAppbmRleCBhNDIx
MzQ2NWM2MTJkYTFjYmY3NjdjZGViOTQ0YWU5YWY3YjY1YmFkLi5mOTg0YmMxNTM4ZDVkNWQwZjc2
NjM3YTEwZjk5M2E0OGUyOTRkYWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFkaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYWRpZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUdy
YWRpZW50OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBDb2xvcjsKKyAgICBj
bGFzcyBPcHRpb25hbFJHQkE7CiAgICAgY2xhc3MgRmxvYXRSZWN0OwogICAgIGNsYXNzIEdyYXBo
aWNzQ29udGV4dDsKIApAQCAtNjksNyArNjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICAgICAgc3RydWN0IENvbG9yU3RvcDsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRD
b2xvclN0b3AoY29uc3QgQ29sb3JTdG9wJik7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YWRkQ29sb3JTdG9wKGZsb2F0LCBjb25zdCBDb2xvciYpOworICAgICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFkZENvbG9yU3RvcChmbG9hdCwgY29uc3QgT3B0aW9uYWxSR0JBJik7CiAKICAgICAg
ICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBlNmIzN2ZkZTVmOTVlYzAy
YzJmN2Q2OGE2MWY0MGY0N2E3N2YyNzMxLi5iMzJkMjIzZjZhYjhkNmY4OTA0YmQyYTc2NzFhNzhk
YjFjMGQ3NTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6cmVzdG9yZSgpCiAgICAgcmVzdG9yZVBsYXRmb3JtU3RhdGUoKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgQ29sb3ImIGVsbGlwc2VDb2xvciwgQ29sb3JTcGFjZSBlbGxpcHNlQ29sb3JTcGFjZSwg
Y29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2UpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBPcHRpb25hbFJHQkEmIGVsbGlwc2VDb2xvciwgQ29sb3JTcGFjZSBlbGxpcHNl
Q29sb3JTcGFjZSwgY29uc3QgT3B0aW9uYWxSR0JBJiBzaGFkb3dDb2xvciwgQ29sb3JTcGFjZSBz
aGFkb3dDb2xvclNwYWNlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ry
b2tlU3R5bGUoU3Ryb2tlU3R5bGUgc3R5bGUpCiAgICAgc2V0UGxhdGZvcm1TdHJva2VTdHlsZShz
dHlsZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihjb25zdCBD
b2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRTdHJva2VDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UpCiB7CiAgICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IGNvbG9yOwogICAgIG1fc3Rh
dGUuc3Ryb2tlQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7CkBAIC0xODMsNyArMTgzLDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvciwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlKQogICAgIHNldFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29sb3IsIGNv
bG9yU3BhY2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93KGNvbnN0IEZs
b2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3coY29uc3QgRmxv
YXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBtX3N0YXRlLnNoYWRvd09mZnNldCA9IG9mZnNl
dDsKICAgICBtX3N0YXRlLnNoYWRvd0JsdXIgPSBibHVyOwpAQCAtMTkyLDcgKzE5Miw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZs
b2F0IGJsdXIsIGNvbnN0IENvbG9yCiAgICAgc2V0UGxhdGZvcm1TaGFkb3cob2Zmc2V0LCBibHVy
LCBjb2xvciwgY29sb3JTcGFjZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRMZWdh
Y3lTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9y
JiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dExlZ2FjeVNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3Qg
T3B0aW9uYWxSR0JBJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIG1fc3Rh
dGUuc2hhZG93T2Zmc2V0ID0gb2Zmc2V0OwogICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9IGJsdXI7
CkBAIC0yMDgsMTIgKzIwOCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJTaGFkb3co
KQogewogICAgIG1fc3RhdGUuc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKCk7CiAgICAgbV9zdGF0
ZS5zaGFkb3dCbHVyID0gMDsKLSAgICBtX3N0YXRlLnNoYWRvd0NvbG9yID0gQ29sb3IoKTsKKyAg
ICBtX3N0YXRlLnNoYWRvd0NvbG9yID0gT3B0aW9uYWxSR0JBKCk7CiAgICAgbV9zdGF0ZS5zaGFk
b3dDb2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQjsKICAgICBjbGVhclBsYXRmb3JtU2hh
ZG93KCk7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0OjpnZXRTaGFkb3coRmxvYXRTaXplJiBv
ZmZzZXQsIGZsb2F0JiBibHVyLCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UmIGNvbG9yU3BhY2Up
IGNvbnN0Citib29sIEdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KEZsb2F0U2l6ZSYgb2Zmc2V0
LCBmbG9hdCYgYmx1ciwgT3B0aW9uYWxSR0JBJiBjb2xvciwgQ29sb3JTcGFjZSYgY29sb3JTcGFj
ZSkgY29uc3QKIHsKICAgICBvZmZzZXQgPSBtX3N0YXRlLnNoYWRvd09mZnNldDsKICAgICBibHVy
ID0gbV9zdGF0ZS5zaGFkb3dCbHVyOwpAQCAtMjQxLDcgKzI0MSw3IEBAIGJvb2wgR3JhcGhpY3ND
b250ZXh0OjptdXN0VXNlU2hhZG93Qmx1cigpIGNvbnN0CiB9CiAjZW5kaWYKIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsQ29sb3IoY29uc3QgT3B0
aW9uYWxSR0JBJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIG1fc3RhdGUu
ZmlsbENvbG9yID0gY29sb3I7CiAgICAgbV9zdGF0ZS5maWxsQ29sb3JTcGFjZSA9IGNvbG9yU3Bh
Y2U7CkBAIC01MDksNyArNTA5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQogICAgIGdyYWRpZW50LmZp
bGwodGhpcywgcmVjdCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
T3B0aW9uYWxSR0JBJiBjb2xvciwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUyMCw3ICs1MjAsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYg
Y29sb3IsIENvbG9yUwogICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9y
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9h
dFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91
bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QgT3B0aW9uYWxSR0JB
JiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewog
ICAgIGlmIChyZWN0LmlzUm91bmRlZCgpKSB7CiAgICAgICAgIHNldENvbXBvc2l0ZU9wZXJhdGlv
bihjb21wb3NpdGVPcGVyYXRpb24oKSwgYmxlbmRNb2RlKTsKQEAgLTUzMSw3ICs1MzEsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIHJlY3QsIGNvbnN0IENvbG9yJgogfQogCiAjaWYgIVVTRShDRykgJiYgIVVTRShDQUlSTykK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBJbnRS
ZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0
IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xv
ciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTU0NSw3ICs1NDUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgRmxv
YXRSbwogICAgICAgICBwYXRoLmFkZFJlY3Qocm91bmRlZEhvbGVSZWN0LnJlY3QoKSk7CiAKICAg
ICBXaW5kUnVsZSBvbGRGaWxsUnVsZSA9IGZpbGxSdWxlKCk7Ci0gICAgQ29sb3Igb2xkRmlsbENv
bG9yID0gZmlsbENvbG9yKCk7CisgICAgT3B0aW9uYWxSR0JBIG9sZEZpbGxDb2xvciA9IGZpbGxD
b2xvcigpOwogICAgIENvbG9yU3BhY2Ugb2xkRmlsbENvbG9yU3BhY2UgPSBmaWxsQ29sb3JTcGFj
ZSgpOwogICAgIAogICAgIHNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7CkBAIC03MTAsNyArNzEw
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtU3Ryb2tlRWxsaXBzZShjb25zdCBG
bG9hdFJlY3QmIGVsbGlwc2UpCiB9CiAjZW5kaWYKIAotRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4
dDo6Y29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9h
dFBvaW50JiBwb2ludCwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcsIGJvb2wmIHNob3VsZEFu
dGlhbGlhcywgQ29sb3ImIGNvbG9yKQorRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dDo6Y29tcHV0
ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBw
b2ludCwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcsIGJvb2wmIHNob3VsZEFudGlhbGlhcywg
T3B0aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICBGbG9hdFBvaW50IG9yaWdpbjsKICAgICBmbG9h
dCB0aGlja25lc3MgPSBzdGQ6Om1heChzdHJva2VUaGlja25lc3MoKSwgMC41Zik7CkBAIC03MzMs
NyArNzMzLDcgQEAgRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dDo6Y29tcHV0ZUxpbmVCb3VuZHNB
bmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG8KICAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBmbG9hdCBtaW5pbXVtVW5kZXJsaW5lQWxwaGEgPSAwLjRmOwogICAgICAgICAgICAgZmxv
YXQgc2hhZGUgPSBzY2FsZSA+IG1pbmltdW1VbmRlcmxpbmVBbHBoYSA/IHNjYWxlIDogbWluaW11
bVVuZGVybGluZUFscGhhOwogICAgICAgICAgICAgaW50IGFscGhhID0gY29sb3IuYWxwaGEoKSAq
IHNoYWRlOwotICAgICAgICAgICAgY29sb3IgPSBDb2xvcihjb2xvci5yZWQoKSwgY29sb3IuZ3Jl
ZW4oKSwgY29sb3IuYmx1ZSgpLCBhbHBoYSk7CisgICAgICAgICAgICBjb2xvciA9IE9wdGlvbmFs
UkdCQShjb2xvci5yZWQoKSwgY29sb3IuZ3JlZW4oKSwgY29sb3IuYmx1ZSgpLCBhbHBoYSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBGbG9hdFBvaW50IGRldmljZVBvaW50ID0gdHJhbnNmb3JtLm1h
cFBvaW50KHBvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZDhkZWZmMDQ0NjA3MzBkYmI2OTU4MDhlOWE2ZjdmZWJm
ZjczNTZmYS4uMjc3ZDdlMGM4YWY1Mzg4MDE0ZTEyYWZiYWQ1YzVlN2I0YjZjNzJmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
QEAgLTE0MCw5ICsxNDAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgVGV4dERy
YXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlIHsgVGV4dE1vZGVGaWxsIH07CiAKLSAgICAg
ICAgQ29sb3Igc3Ryb2tlQ29sb3IgeyBDb2xvcjo6YmxhY2sgfTsKLSAgICAgICAgQ29sb3IgZmls
bENvbG9yIHsgQ29sb3I6OmJsYWNrIH07Ci0gICAgICAgIENvbG9yIHNoYWRvd0NvbG9yOworICAg
ICAgICBPcHRpb25hbFJHQkEgc3Ryb2tlQ29sb3IgeyBPcHRpb25hbFJHQkE6OmJsYWNrIH07Cisg
ICAgICAgIE9wdGlvbmFsUkdCQSBmaWxsQ29sb3IgeyBPcHRpb25hbFJHQkE6OmJsYWNrIH07Cisg
ICAgICAgIE9wdGlvbmFsUkdCQSBzaGFkb3dDb2xvcjsKIAogICAgICAgICBTdHJva2VTdHlsZSBz
dHJva2VTdHlsZSB7IFNvbGlkU3Ryb2tlIH07CiAgICAgICAgIFdpbmRSdWxlIGZpbGxSdWxlIHsg
UlVMRV9OT05aRVJPIH07CkBAIC0yMTIsOCArMjEyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2b2lkIHNldFN0cm9rZVN0eWxlKFN0cm9rZVN0eWxlKTsKICAgICAgICAgU3Ryb2tl
U3R5bGUgc3Ryb2tlU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVN0eWxlOyB9
CiAKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdHJva2VDb2xvcihjb25zdCBDb2xv
ciYsIENvbG9yU3BhY2UpOwotICAgICAgICBDb2xvciBzdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUuc3Ryb2tlQ29sb3I7IH0KKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRTdHJva2VDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmLCBDb2xvclNwYWNlKTsKKyAgICAgICAg
T3B0aW9uYWxSR0JBIHN0cm9rZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VD
b2xvcjsgfQogICAgICAgICBDb2xvclNwYWNlIHN0cm9rZUNvbG9yU3BhY2UoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLnN0cm9rZUNvbG9yU3BhY2U7IH0KIAogICAgICAgICB2b2lkIHNldFN0cm9r
ZVBhdHRlcm4oUmVmPFBhdHRlcm4+JiYpOwpAQCAtMjI1LDggKzIyNSw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBt
X3N0YXRlLmZpbGxSdWxlID0gZmlsbFJ1bGU7IH0KICAgICAgICAgV2luZFJ1bGUgZmlsbFJ1bGUo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxSdWxlOyB9CiAgICAgCi0gICAgICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7Ci0g
ICAgICAgIENvbG9yIGZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbENvbG9y
OyB9CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IE9wdGlv
bmFsUkdCQSYsIENvbG9yU3BhY2UpOworICAgICAgICBPcHRpb25hbFJHQkEgZmlsbENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsQ29sb3I7IH0KICAgICAgICAgQ29sb3JTcGFjZSBm
aWxsQ29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbENvbG9yU3BhY2U7IH0K
IAogICAgICAgICB2b2lkIHNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmKTsKQEAgLTI4Niw3
ICsyODYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAgICAgICB2b2lkIGRy
YXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpOwotICAgICAgICB2b2lkIGRyYXdSYWlzZWRFbGxp
cHNlKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiBlbGxpcHNlQ29sb3IsIENvbG9yU3Bh
Y2UgZWxsaXBzZUNvbG9yU3BhY2UsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgQ29sb3JTcGFj
ZSBzaGFkb3dDb2xvclNwYWNlKTsKKyAgICAgICAgdm9pZCBkcmF3UmFpc2VkRWxsaXBzZShjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBPcHRpb25hbFJHQkEmIGVsbGlwc2VDb2xvciwgQ29sb3JTcGFj
ZSBlbGxpcHNlQ29sb3JTcGFjZSwgY29uc3QgT3B0aW9uYWxSR0JBJiBzaGFkb3dDb2xvciwgQ29s
b3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlKTsKICAgICAgICAgdm9pZCBkcmF3Q29udmV4UG9seWdv
bihzaXplX3QgbnVtUG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiwgYm9vbCBzaG91bGRBbnRpYWxp
YXMgPSBmYWxzZSk7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaWxsUGF0aChjb25z
dCBQYXRoJik7CkBAIC0yOTYsMTEgKzI5NiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgc3Ryb2tlRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwotICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwg
Q29sb3JTcGFjZSk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlsbFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgT3B0aW9uYWxSR0JBJiwgQ29sb3JTcGFjZSk7CiAgICAgICAgIHZv
aWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgR3JhZGllbnQmKTsKLSAgICAgICAgdm9pZCBm
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwotICAgICAgICB2b2lk
IGZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBD
b2xvclNwYWNlLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwotICAgICAgICB2b2lkIGZp
bGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKKyAgICAg
ICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBPcHRpb25hbFJHQkEmLCBD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFs
KTsKKyAgICAgICAgdm9pZCBmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYs
IGNvbnN0IE9wdGlvbmFsUkdCQSYsIENvbG9yU3BhY2UsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5v
cm1hbCk7CisgICAgICAgIHZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBPcHRp
b25hbFJHQkEmLCBDb2xvclNwYWNlKTsKIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNs
ZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKIApAQCAtMzczLDEzICszNzMsMTMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CiAgICAgICAgIGJvb2wgaXNJblRyYW5zcGFyZW5jeUxheWVyKCkgY29uc3QgeyBy
ZXR1cm4gKG1fdHJhbnNwYXJlbmN5Q291bnQgPiAwKSAmJiBzdXBwb3J0c1RyYW5zcGFyZW5jeUxh
eWVycygpOyB9CiAKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTaGFkb3coY29uc3Qg
RmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKKyAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiwgZmxvYXQg
Ymx1ciwgY29uc3QgT3B0aW9uYWxSR0JBJiwgQ29sb3JTcGFjZSk7CiAgICAgICAgIC8vIExlZ2Fj
eSBzaGFkb3cgYmx1ciByYWRpdXMgaXMgdXNlZCBmb3IgY2FudmFzLCBhbmQgLXdlYmtpdC1ib3gt
c2hhZG93LgogICAgICAgICAvLyBJdCBoYXMgZGlmZmVyZW50IHRyZWF0bWVudCBvZiByYWRpaSA+
IDhweC4KLSAgICAgICAgdm9pZCBzZXRMZWdhY3lTaGFkb3coY29uc3QgRmxvYXRTaXplJiwgZmxv
YXQgYmx1ciwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKKyAgICAgICAgdm9pZCBzZXRMZWdh
Y3lTaGFkb3coY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgT3B0aW9uYWxSR0JB
JiwgQ29sb3JTcGFjZSk7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhclNoYWRv
dygpOwotICAgICAgICBib29sIGdldFNoYWRvdyhGbG9hdFNpemUmLCBmbG9hdCYsIENvbG9yJiwg
Q29sb3JTcGFjZSYpIGNvbnN0OworICAgICAgICBib29sIGdldFNoYWRvdyhGbG9hdFNpemUmLCBm
bG9hdCYsIE9wdGlvbmFsUkdCQSYsIENvbG9yU3BhY2UmKSBjb25zdDsKIAogICAgICAgICBib29s
IGhhc1Zpc2libGVTaGFkb3coKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNoYWRvd0NvbG9yLmlz
VmFsaWQoKSAmJiBtX3N0YXRlLnNoYWRvd0NvbG9yLmFscGhhKCk7IH0KICAgICAgICAgYm9vbCBo
YXNTaGFkb3coKSBjb25zdCB7IHJldHVybiBoYXNWaXNpYmxlU2hhZG93KCkgJiYgKG1fc3RhdGUu
c2hhZG93Qmx1ciB8fCBtX3N0YXRlLnNoYWRvd09mZnNldC53aWR0aCgpIHx8IG1fc3RhdGUuc2hh
ZG93T2Zmc2V0LmhlaWdodCgpKTsgfQpAQCAtMzg5LDggKzM4OSw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgYm9vbCBtdXN0VXNlU2hhZG93Qmx1cigpIGNvbnN0OwogI2VuZGlmCiAK
LSAgICAgICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYsIGludCB3
aWR0aCwgaW50IG9mZnNldCwgY29uc3QgQ29sb3ImKTsKLSAgICAgICAgdm9pZCBkcmF3Rm9jdXNS
aW5nKGNvbnN0IFBhdGgmLCBpbnQgd2lkdGgsIGludCBvZmZzZXQsIGNvbnN0IENvbG9yJik7Cisg
ICAgICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8SW50UmVjdD4mLCBpbnQgd2lk
dGgsIGludCBvZmZzZXQsIGNvbnN0IE9wdGlvbmFsUkdCQSYpOworICAgICAgICB2b2lkIGRyYXdG
b2N1c1JpbmcoY29uc3QgUGF0aCYsIGludCB3aWR0aCwgaW50IG9mZnNldCwgY29uc3QgT3B0aW9u
YWxSR0JBJik7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICB2b2lkIGRyYXdGb2N1c1Jpbmco
Y29uc3QgVmVjdG9yPEludFJlY3Q+JiwgaW50IHdpZHRoLCBpbnQgb2Zmc2V0LCBkb3VibGUgdGlt
ZU9mZnNldCwgYm9vbCYgbmVlZHNSZWRyYXcpOwogI2VuZGlmCkBAIC01MjcsMTYgKzUyNywxNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybVRleHREcmF3
aW5nTW9kZShUZXh0RHJhd2luZ01vZGVGbGFncyk7CiAKLSAgICAgICAgdm9pZCBzZXRQbGF0Zm9y
bVN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgICAgIHZvaWQgc2V0
UGxhdGZvcm1TdHJva2VDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmLCBDb2xvclNwYWNlKTsKICAg
ICAgICAgdm9pZCBzZXRQbGF0Zm9ybVN0cm9rZVN0eWxlKFN0cm9rZVN0eWxlKTsKICAgICAgICAg
dm9pZCBzZXRQbGF0Zm9ybVN0cm9rZVRoaWNrbmVzcyhmbG9hdCk7CiAKLSAgICAgICAgdm9pZCBz
ZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgICAgICB2
b2lkIHNldFBsYXRmb3JtRmlsbENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYsIENvbG9yU3BhY2Up
OwogCiAgICAgICAgIHZvaWQgc2V0UGxhdGZvcm1TaG91bGRBbnRpYWxpYXMoYm9vbCk7CiAgICAg
ICAgIHZvaWQgc2V0UGxhdGZvcm1TaG91bGRTbW9vdGhGb250cyhib29sKTsKIAotICAgICAgICB2
b2lkIHNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0
IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgICAgIHZvaWQgc2V0UGxhdGZvcm1TaGFkb3coY29u
c3QgRmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgT3B0aW9uYWxSR0JBJiwgQ29sb3JTcGFj
ZSk7CiAgICAgICAgIHZvaWQgY2xlYXJQbGF0Zm9ybVNoYWRvdygpOwogCiAgICAgICAgIHZvaWQg
c2V0UGxhdGZvcm1BbHBoYShmbG9hdCk7CkBAIC01NTIsOSArNTUyLDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2b2lkIHBsYXRmb3JtRmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0
Jik7CiAgICAgICAgIHZvaWQgcGxhdGZvcm1TdHJva2VFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYp
OwogCi0gICAgICAgIHZvaWQgcGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgICAgIHZvaWQgcGxhdGZv
cm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IE9wdGlvbmFs
UkdCQSYsIENvbG9yU3BhY2UpOwogCi0gICAgICAgIEZsb2F0UmVjdCBjb21wdXRlTGluZUJvdW5k
c0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB3aWR0
aCwgYm9vbCBwcmludGluZywgYm9vbCYgc2hvdWxkQW50aWFsaWFzLCBDb2xvciYpOworICAgICAg
ICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChj
b25zdCBGbG9hdFBvaW50JiwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcsIGJvb2wmIHNob3Vs
ZEFudGlhbGlhcywgT3B0aW9uYWxSR0JBJik7CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlKiBtX2RhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggOTQ0NWQ0ZWM4NTg1M2U5OTJhNWMxN2Yx
YWNiMjU3N2Y2MmQxOTM0ZC4uM2Y2NzhkNjExYTk3NzNhMmQ1YTI0NWFmYzhlZTc4ZTMwMjNkOWE5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5jcHAKQEAgLTM5Nyw3ICszOTcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldFNpemUo
Y29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgICAgICBzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAot
dm9pZCBHcmFwaGljc0xheWVyOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9y
KQordm9pZCBHcmFwaGljc0xheWVyOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWxS
R0JBJiBjb2xvcikKIHsKICAgICBtX2JhY2tncm91bmRDb2xvciA9IGNvbG9yOwogfQpAQCAtNDMx
LDMzICs0MzEsMzMgQEAgdm9pZCBHcmFwaGljc0xheWVyOjpyZXN1bWVBbmltYXRpb25zKCkKIHsK
IH0KIAotdm9pZCBHcmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRlckluZm8oQ29sb3ImIGNvbG9y
LCBmbG9hdCYgd2lkdGgpIGNvbnN0Cit2b2lkIEdyYXBoaWNzTGF5ZXI6OmdldERlYnVnQm9yZGVy
SW5mbyhPcHRpb25hbFJHQkEmIGNvbG9yLCBmbG9hdCYgd2lkdGgpIGNvbnN0CiB7CiAgICAgaWYg
KGRyYXdzQ29udGVudCgpKSB7CiAgICAgICAgIGlmIChtX3VzaW5nVGlsZWRCYWNraW5nKSB7Ci0g
ICAgICAgICAgICBjb2xvciA9IENvbG9yKDI1NSwgMTI4LCAwLCAxMjgpOyAvLyB0aWxlZCBsYXll
cjogb3JhbmdlCisgICAgICAgICAgICBjb2xvciA9IE9wdGlvbmFsUkdCQSgyNTUsIDEyOCwgMCwg
MTI4KTsgLy8gdGlsZWQgbGF5ZXI6IG9yYW5nZQogICAgICAgICAgICAgd2lkdGggPSAyOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY29sb3IgPSBDb2xvcigwLCAx
MjgsIDMyLCAxMjgpOyAvLyBub3JtYWwgbGF5ZXI6IGdyZWVuCisgICAgICAgIGNvbG9yID0gT3B0
aW9uYWxSR0JBKDAsIDEyOCwgMzIsIDEyOCk7IC8vIG5vcm1hbCBsYXllcjogZ3JlZW4KICAgICAg
ICAgd2lkdGggPSAyOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHVzZXNDb250
ZW50c0xheWVyKCkpIHsKLSAgICAgICAgY29sb3IgPSBDb2xvcigyNTUsIDE1MCwgMjU1LCAyMDAp
OyAvLyBub24tcGFpbnRpbmcgbGF5ZXIgd2l0aCBjb250ZW50czogcGluaworICAgICAgICBjb2xv
ciA9IE9wdGlvbmFsUkdCQSgyNTUsIDE1MCwgMjU1LCAyMDApOyAvLyBub24tcGFpbnRpbmcgbGF5
ZXIgd2l0aCBjb250ZW50czogcGluawogICAgICAgICB3aWR0aCA9IDI7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCiAgICAgaWYgKG1hc2tzVG9Cb3VuZHMoKSkgewotICAgICAgICBjb2xv
ciA9IENvbG9yKDEyOCwgMjU1LCAyNTUsIDQ4KTsgLy8gbWFza2luZyBsYXllcjogcGFsZSBibHVl
CisgICAgICAgIGNvbG9yID0gT3B0aW9uYWxSR0JBKDEyOCwgMjU1LCAyNTUsIDQ4KTsgLy8gbWFz
a2luZyBsYXllcjogcGFsZSBibHVlCiAgICAgICAgIHdpZHRoID0gMjA7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBjb2xvciA9IENvbG9yKDI1NSwgMjU1LCAwLCAxOTIpOyAvLyBjb250
YWluZXI6IHllbGxvdworICAgIGNvbG9yID0gT3B0aW9uYWxSR0JBKDI1NSwgMjU1LCAwLCAxOTIp
OyAvLyBjb250YWluZXI6IHllbGxvdwogICAgIHdpZHRoID0gMjsKIH0KIApAQCAtNDY2LDcgKzQ2
Niw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6dXBkYXRlRGVidWdJbmRpY2F0b3JzKCkKICAgICBp
ZiAoIWlzU2hvd2luZ0RlYnVnQm9yZGVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENvbG9y
IGJvcmRlckNvbG9yOworICAgIE9wdGlvbmFsUkdCQSBib3JkZXJDb2xvcjsKICAgICBmbG9hdCB3
aWR0aCA9IDA7CiAgICAgZ2V0RGVidWdCb3JkZXJJbmZvKGJvcmRlckNvbG9yLCB3aWR0aCk7CiAg
ICAgc2V0RGVidWdCb3JkZXIoYm9yZGVyQ29sb3IsIHdpZHRoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAppbmRleCBhZDdkMzVmMjg2OTZi
N2NmODA0NmQwMWQ5MGZhM2JmYWU0YTQwM2Q4Li5mZjJjOWM3ZjFmN2M1MDE3Y2Q2NjdmZjViZTA5
ZTNkZTBhOTA2YTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5oCkBAIC0zNTEsOCArMzUxLDggQEAgcHVibGljOgogICAgIC8vIFRoZSBj
b2xvciB1c2VkIHRvIHBhaW50IHRoZSBsYXllciBiYWNrZ3JvdW5kLiBQYXNzIGFuIGludmFsaWQg
Y29sb3IgdG8gcmVtb3ZlIGl0LgogICAgIC8vIE5vdGUgdGhhdCB0aGlzIGNvdmVycyB0aGUgZW50
aXJlIGxheWVyLiBVc2Ugc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoKSBpZiB0aGUgY29sb3Igc2hv
dWxkCiAgICAgLy8gb25seSBjb3ZlciB0aGUgY29udGVudHNSZWN0LgotICAgIGNvbnN0IENvbG9y
JiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQot
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3Qg
Q29sb3ImKTsKKyAgICBjb25zdCBPcHRpb25hbFJHQkEmIGJhY2tncm91bmRDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmKTsKIAogICAgIC8v
IG9wYXF1ZSBtZWFucyB0aGF0IHdlIGtub3cgdGhlIGxheWVyIGNvbnRlbnRzIGhhdmUgbm8gYWxw
aGEKICAgICBib29sIGNvbnRlbnRzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c09w
YXF1ZTsgfQpAQCAtNDQxLDcgKzQ0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBsYXRmb3Jt
TGF5ZXIqIGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICNlbmRp
ZgogICAgIC8vIFBhc3MgYW4gaW52YWxpZCBjb2xvciB0byByZW1vdmUgdGhlIGNvbnRlbnRzIGxh
eWVyLgotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xv
ciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBP
cHRpb25hbFJHQkEmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3Jt
TGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSB7IH0KICAgICB2aXJ0
dWFsIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCkBA
IC00NjksOCArNDY5LDggQEAgcHVibGljOgogICAgIGludCByZXBhaW50Q291bnQoKSBjb25zdCB7
IHJldHVybiBtX3JlcGFpbnRDb3VudDsgfQogICAgIGludCBpbmNyZW1lbnRSZXBhaW50Q291bnQo
KSB7IHJldHVybiArK21fcmVwYWludENvdW50OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGVi
dWdCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCAvKmJvcmRlcldpZHRoKi8pIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JhY2tncm91bmRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEm
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCb3JkZXIoY29uc3QgT3B0aW9uYWxSR0JB
JiwgZmxvYXQgLypib3JkZXJXaWR0aCovKSB7IH0KIAogICAgIGVudW0gQ3VzdG9tQXBwZWFyYW5j
ZSB7IE5vQ3VzdG9tQXBwZWFyYW5jZSwgU2Nyb2xsaW5nT3ZlcmhhbmcsIFNjcm9sbGluZ1NoYWRv
dywgTGlnaHRCYWNrZHJvcEFwcGVhcmFuY2UsIERhcmtCYWNrZHJvcEFwcGVhcmFuY2UgfTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q3VzdG9tQXBwZWFyYW5jZShDdXN0b21BcHBlYXJhbmNlIGN1c3Rv
bUFwcGVhcmFuY2UpIHsgbV9jdXN0b21BcHBlYXJhbmNlID0gY3VzdG9tQXBwZWFyYW5jZTsgfQpA
QCAtNTY5LDcgKzU2OSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGR1bXBQcm9wZXJ0aWVzKFRl
eHRTdHJlYW0mLCBpbnQgaW5kZW50LCBMYXllclRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIGR1bXBBZGRpdGlvbmFsUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50
IC8qaW5kZW50Ki8sIExheWVyVHJlZUFzVGV4dEJlaGF2aW9yKSBjb25zdCB7IH0KIAotICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBnZXREZWJ1Z0JvcmRlckluZm8oQ29sb3ImLCBmbG9h
dCYgd2lkdGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBnZXREZWJ1
Z0JvcmRlckluZm8oT3B0aW9uYWxSR0JBJiwgZmxvYXQmIHdpZHRoKSBjb25zdDsKIAogICAgIEdy
YXBoaWNzTGF5ZXJDbGllbnQmIG1fY2xpZW50OwogICAgIFN0cmluZyBtX25hbWU7CkBAIC01ODYs
NyArNTg2LDcgQEAgcHJvdGVjdGVkOgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdHJhbnNm
b3JtOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fY2hpbGRyZW5UcmFuc2Zvcm07CiAKLSAg
ICBDb2xvciBtX2JhY2tncm91bmRDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgbV9iYWNrZ3JvdW5k
Q29sb3I7CiAgICAgZmxvYXQgbV9vcGFjaXR5OwogICAgIGZsb2F0IG1felBvc2l0aW9uOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IDBkZjdl
NWU3MWQzNzY1NDU5NGRlMDg3NGQ1YzgwZWUwM2FhZmU0ZWMuLjI3YjVmMmIwYjNjODdiNzg2MTBi
OWNlN2YyNWM5Yzk2YmU0NDAxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgYm9vbCBJbWFnZTo6c2V0RGF0YShQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgcmV0dXJu
IGRhdGFDaGFuZ2VkKGFsbERhdGFSZWNlaXZlZCk7CiB9CiAKLXZvaWQgSW1hZ2U6OmZpbGxXaXRo
U29saWRDb2xvcihHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3Igb3ApCit2b2lkIEltYWdlOjpmaWxsV2l0aFNvbGlkQ29sb3IoR3JhcGhpY3ND
b250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IE9wdGlvbmFsUkdC
QSYgY29sb3IsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBv
cCkKIHsKICAgICBpZiAoIWNvbG9yLmFscGhhKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDU4YzBkOTVkOGM0MzdiYTE4MGFl
ZjFkN2ZkYjRmODI3N2NkNmRkNzIuLjAxNWZiOWIxY2ExY2ExOTJjOTc4MjZjMjI4Y2IyZWYwMWFh
YjhjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMTg1
LDcgKzE4NSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBJbWFnZShJbWFnZU9ic2VydmVy
KiA9IG51bGxwdHIpOwogCi0gICAgc3RhdGljIHZvaWQgZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgQ29sb3ImLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHN0YXRpYyB2
b2lkIGZpbGxXaXRoU29saWRDb2xvcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IE9wdGlvbmFsUkdCQSYsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBDb21wb3NpdGVPcGVyYXRvcik7CiAKICAgICAvLyBUaGUgQ29sb3JTcGFjZSBwYXJhbWV0ZXIg
d2lsbCBvbmx5IGJlIHVzZWQgZm9yIHVudGFnZ2VkIGltYWdlcy4KICNpZiBQTEFURk9STShXSU4p
CkBAIC0xOTgsNyArMTk4LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gU3VwcG9ydGluZyB0aWxl
ZCBkcmF3aW5nCiAgICAgdmlydHVhbCBib29sIG1heUZpbGxXaXRoU29saWRDb2xvcigpIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBDb2xvciBzb2xpZENvbG9yKCkgY29uc3QgeyByZXR1
cm4gQ29sb3IoKTsgfQorICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHNvbGlkQ29sb3IoKSBjb25z
dCB7IHJldHVybiBPcHRpb25hbFJHQkEoKTsgfQogICAgIAogcHJpdmF0ZToKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJbWFnZURhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xp
ZW50LmgKaW5kZXggMDc2MDJkMjdlNmU0MDFhNWQ2OWM0OGU5ZGUzZDYwYjQxNzMyYWY2NC4uNzc0
MTk3M2UzOTY0OGNjOTJlZDM0MTRlODg4NDQ1ZDJmYzJkY2Q3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1By
aXZhdGVDbGllbnQuaApAQCAtODYsMTMgKzg2LDEzIEBAIHB1YmxpYzoKICAgICBkb3VibGUgcmVs
YXRpdmVGb250U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVsYXRpdmVGb250U2l6ZTsgfQogICAg
IHZvaWQgc2V0UmVsYXRpdmVGb250U2l6ZShkb3VibGUgcmVsYXRpdmVGb250U2l6ZSkgeyBtX3Jl
bGF0aXZlRm9udFNpemUgPSByZWxhdGl2ZUZvbnRTaXplOyB9CiAKLSAgICBDb2xvciBmb3JlZ3Jv
dW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2ZvcmVncm91bmRDb2xvcjsgfQorICAgIE9wdGlv
bmFsUkdCQSBmb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2ZvcmVncm91bmRDb2xv
cjsgfQogICAgIHZvaWQgc2V0Rm9yZWdyb3VuZENvbG9yKFJHQkEzMiBjb2xvcikgeyBtX2ZvcmVn
cm91bmRDb2xvci5zZXRSR0IoY29sb3IpOyB9CiAKLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3Io
KSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQorICAgIE9wdGlvbmFsUkdCQSBi
YWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQogICAg
IHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKFJHQkEzMiBjb2xvcikgeyBtX2JhY2tncm91bmRDb2xv
ci5zZXRSR0IoY29sb3IpOyB9CiAgICAgCi0gICAgQ29sb3IgaGlnaGxpZ2h0Q29sb3IoKSBjb25z
dCB7IHJldHVybiBtX2hpZ2hsaWdodENvbG9yOyB9CisgICAgT3B0aW9uYWxSR0JBIGhpZ2hsaWdo
dENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9oaWdobGlnaHRDb2xvcjsgfQogICAgIHZvaWQgc2V0
SGlnaGxpZ2h0Q29sb3IoUkdCQTMyIGNvbG9yKSB7IG1faGlnaGxpZ2h0Q29sb3Iuc2V0UkdCKGNv
bG9yKTsgfQogICAgIAogICAgIGVudW0gU3RhdHVzIHsKQEAgLTEyOCw5ICsxMjgsOSBAQCBwcml2
YXRlOgogICAgIFN0cmluZyBtX2ZvbnROYW1lOwogICAgIGRvdWJsZSBtX2Jhc2VGb250U2l6ZTsK
ICAgICBkb3VibGUgbV9yZWxhdGl2ZUZvbnRTaXplOwotICAgIENvbG9yIG1fZm9yZWdyb3VuZENv
bG9yOwotICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOwotICAgIENvbG9yIG1faGlnaGxpZ2h0
Q29sb3I7CisgICAgT3B0aW9uYWxSR0JBIG1fZm9yZWdyb3VuZENvbG9yOworICAgIE9wdGlvbmFs
UkdCQSBtX2JhY2tncm91bmRDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgbV9oaWdobGlnaHRDb2xv
cjsKICAgICBTdGF0dXMgbV9zdGF0dXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmluZGV4IGQ3MDg2NWE5NzFmNTdhMWIyZTA1ZGM2
M2IzY2JkOGVmY2E0MjQyNzQuLjMyOTljYjgzZGQyNWE5Y2ZmNThhOWEzOTY2YmM0ZjY1NDEwMjAx
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0Js
dXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIu
Y3BwCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZm
ZXIuZ2V0KCk7CiAgICAgfQogCi0gICAgYm9vbCBzZXRDYWNoZWRTaGFkb3dWYWx1ZXMoY29uc3Qg
RmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6
OlJhZGlpJiByYWRpaSwgY29uc3QgRmxvYXRTaXplJiBsYXllclNpemUpCisgICAgYm9vbCBzZXRD
YWNoZWRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IE9wdGlvbmFs
UkdCQSYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBzaGFk
b3dSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEZsb2F0
U2l6ZSYgbGF5ZXJTaXplKQogICAgIHsKICAgICAgICAgaWYgKCFtX2xhc3RXYXNJbnNldCAmJiBt
X2xhc3RSYWRpdXMgPT0gcmFkaXVzICYmIG1fbGFzdENvbG9yID09IGNvbG9yICYmIG1fbGFzdENv
bG9yU3BhY2UgPT0gY29sb3JTcGFjZSAmJiBtX2xhc3RTaGFkb3dSZWN0ID09IHNoYWRvd1JlY3Qg
JiYgIG1fbGFzdFJhZGlpID09IHJhZGlpICYmIG1fbGFzdExheWVyU2l6ZSA9PSBsYXllclNpemUp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgYm9vbCBzZXRDYWNoZWRJbnNldFNoYWRv
d1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFJl
Y3QmIHNoYWRvd1JlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkKKyAg
ICBib29sIHNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVz
LCBjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0
IEZsb2F0UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkKICAgICB7CiAgICAgICAgIGlmIChtX2xhc3RX
YXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVzICYmIG1fbGFzdENvbG9yID09IGNvbG9y
ICYmIG1fbGFzdENvbG9yU3BhY2UgPT0gY29sb3JTcGFjZSAmJiBtX2xhc3RJbnNldEJvdW5kcyA9
PSBib3VuZHMgJiYgc2hhZG93UmVjdCA9PSBtX2xhc3RTaGFkb3dSZWN0ICYmIHJhZGlpID09IG1f
bGFzdFJhZGlpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQzLDcgKzE0Myw3IEBA
IHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fbGFzdEluc2V0Qm91bmRzOwogICAgIEZsb2F0UmVj
dCBtX2xhc3RTaGFkb3dSZWN0OwogICAgIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpIG1fbGFzdFJh
ZGlpOwotICAgIENvbG9yIG1fbGFzdENvbG9yOworICAgIE9wdGlvbmFsUkdCQSBtX2xhc3RDb2xv
cjsKICAgICBDb2xvclNwYWNlIG1fbGFzdENvbG9yU3BhY2U7CiAgICAgRmxvYXRTaXplIG1fbGFz
dFJhZGl1czsKICAgICBib29sIG1fbGFzdFdhc0luc2V0OwpAQCAtMTY5LDcgKzE2OSw3IEBAIHN0
YXRpYyBmbG9hdCByYWRpdXNUb0xlZ2FjeVJhZGl1cyhmbG9hdCByYWRpdXMpCiB9CiAjZW5kaWYK
IAotU2hhZG93Qmx1cjo6U2hhZG93Qmx1cihjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3Qg
RmxvYXRTaXplJiBvZmZzZXQsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlKQorU2hhZG93Qmx1cjo6U2hhZG93Qmx1cihjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29u
c3QgRmxvYXRTaXplJiBvZmZzZXQsIGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSkKICAgICA6IG1fY29sb3IoY29sb3IpCiAgICAgLCBtX2NvbG9yU3BhY2Uo
Y29sb3JTcGFjZSkKICAgICAsIG1fYmx1clJhZGl1cyhyYWRpdXMpCkBAIC0yMDQsNyArMjA0LDcg
QEAgU2hhZG93Qmx1cjo6U2hhZG93Qmx1cigpCiB7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6c2V0
U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9m
ZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGJvb2wgaWdu
b3JlVHJhbnNmb3JtcykKK3ZvaWQgU2hhZG93Qmx1cjo6c2V0U2hhZG93VmFsdWVzKGNvbnN0IEZs
b2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgT3B0aW9uYWxS
R0JBJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBib29sIGlnbm9yZVRyYW5zZm9ybXMp
CiB7CiAgICAgbV9ibHVyUmFkaXVzID0gcmFkaXVzOwogICAgIG1fb2Zmc2V0ID0gb2Zmc2V0OwpA
QCAtMjgxLDcgKzI4MSw3IEBAIHN0YXRpYyB2b2lkIGNhbGN1bGF0ZUxvYmVzKGludCBsb2Jlc1td
WzJdLCBmbG9hdCBibHVyUmFkaXVzLCBib29sIHNoYWRvd3NJZ25vcmVUCiB2b2lkIFNoYWRvd0Js
dXI6OmNsZWFyKCkKIHsKICAgICBtX3R5cGUgPSBOb1NoYWRvdzsKLSAgICBtX2NvbG9yID0gQ29s
b3IoKTsKKyAgICBtX2NvbG9yID0gT3B0aW9uYWxSR0JBKCk7CiAgICAgbV9ibHVyUmFkaXVzID0g
RmxvYXRTaXplKCk7CiAgICAgbV9vZmZzZXQgPSBGbG9hdFNpemUoKTsKIH0KQEAgLTU3MCw3ICs1
NzAsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgYwogICAgIGJ1ZmZlclJlbGF0aXZlU2hhZG93
ZWRSZWN0Lm1vdmUobV9sYXllckNvbnRleHRUcmFuc2xhdGlvbik7CiAKICAgICAvLyBPbmx5IHJl
ZHJhdyBpbiB0aGUgc2NyYXRjaCBidWZmZXIgaWYgaXRzIGNhY2hlZCBjb250ZW50cyBkb24ndCBt
YXRjaCBvdXIgbmVlZHMKLSAgICBib29sIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNp
bmdsZXRvbigpLnNldENhY2hlZFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIENvbG9yOjpibGFj
aywgQ29sb3JTcGFjZURldmljZVJHQiwgYnVmZmVyUmVsYXRpdmVTaGFkb3dlZFJlY3QsIHNoYWRv
d2VkUmVjdC5yYWRpaSgpLCBtX2xheWVyU2l6ZSk7CisgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBT
Y3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMobV9ibHVyUmFk
aXVzLCBPcHRpb25hbFJHQkE6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBidWZmZXJSZWxh
dGl2ZVNoYWRvd2VkUmVjdCwgc2hhZG93ZWRSZWN0LnJhZGlpKCksIG1fbGF5ZXJTaXplKTsKICAg
ICBpZiAocmVkcmF3TmVlZGVkKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29u
dGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwogICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnNoYWRvd0NvbnRleHQpOwpAQCAtNTc4LDcgKzU3OCw3IEBA
IHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjCiAgICAgICAgIC8vIEFkZCBhIHBpeGVsIHRvIGF2b2lk
IGxhdGVyIGVkZ2UgYWxpYXNpbmcgd2hlbiByb3RhdGVkLgogICAgICAgICBzaGFkb3dDb250ZXh0
LT5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xh
eWVyU2l6ZS5oZWlnaHQoKSArIDEpKTsKICAgICAgICAgc2hhZG93Q29udGV4dC0+dHJhbnNsYXRl
KG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24pOwotICAgICAgICBzaGFkb3dDb250ZXh0LT5zZXRG
aWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgc2hh
ZG93Q29udGV4dC0+c2V0RmlsbENvbG9yKE9wdGlvbmFsUkdCQTo6YmxhY2ssIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOwogICAgICAgICBpZiAoc2hhZG93ZWRSZWN0LnJhZGlpKCkuaXNaZXJvKCkpCiAg
ICAgICAgICAgICBzaGFkb3dDb250ZXh0LT5maWxsUmVjdChzaGFkb3dlZFJlY3QucmVjdCgpKTsK
ICAgICAgICAgZWxzZSB7CkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3
SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LAogICAgIGJ1ZmZlclJlbGF0aXZlSG9sZVJlY3QubW92ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0
aW9uKTsKIAogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1ZmZlciBpZiBpdHMg
Y2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwotICAgIGJvb2wgcmVkcmF3TmVl
ZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1
ZXMobV9ibHVyUmFkaXVzLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIGJ1ZmZl
clJlbGF0aXZlUmVjdCwgYnVmZmVyUmVsYXRpdmVIb2xlUmVjdCwgaG9sZVJlY3QucmFkaWkoKSk7
CisgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zZXRD
YWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIE9wdGlvbmFsUkdCQTo6YmxhY2ss
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGJ1ZmZlclJlbGF0aXZlUmVjdCwgYnVmZmVyUmVsYXRpdmVI
b2xlUmVjdCwgaG9sZVJlY3QucmFkaWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAg
ICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRl
eHQoKTsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpzaGFk
b3dDb250ZXh0KTsKQEAgLTYyNSw3ICs2MjUsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAg
ICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0KTsKIAogICAgICAgICBzaGFk
b3dDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAgICBzaGFkb3dDb250
ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICAgICAgc2hhZG93Q29udGV4dC0+c2V0RmlsbENvbG9yKE9wdGlvbmFsUkdCQTo6YmxhY2ssIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBzaGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRo
KTsKIAogICAgICAgICBibHVyU2hhZG93QnVmZmVyKGV4cGFuZGVkSW50U2l6ZShtX2xheWVyU2l6
ZSkpOwpAQCAtNjg2LDcgKzY4Niw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93
V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uCiAgICAgICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc2hhZG93U3RhdGVTYXZlcigqc2hhZG93Q29udGV4
dCk7CiAgICAgICAgIHNoYWRvd0NvbnRleHQtPmNsZWFyUmVjdCh0ZW1wbGF0ZUJvdW5kcyk7CiAg
ICAgICAgIHNoYWRvd0NvbnRleHQtPnNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7Ci0gICAgICAg
IHNoYWRvd0NvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgICAgICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoT3B0aW9uYWxSR0JB
OjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICAgICAgUGF0aCBwYXRoOwogICAg
ICAgICBwYXRoLmFkZFJlY3QodGVtcGxhdGVCb3VuZHMpOwpAQCAtNzUwLDcgKzc1MCw3IEBAIHZv
aWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c2hhZG93U3RhdGVTYXZlcigqc2hhZG93Q29udGV4dCk7CiAKICAgICAgICAgc2hhZG93Q29udGV4
dC0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCB0ZW1wbGF0ZVNpemUud2lkdGgoKSwgdGVtcGxh
dGVTaXplLmhlaWdodCgpKSk7Ci0gICAgICAgIHNoYWRvd0NvbnRleHQtPnNldEZpbGxDb2xvcihD
b2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBzaGFkb3dDb250ZXh0
LT5zZXRGaWxsQ29sb3IoT3B0aW9uYWxSR0JBOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7
CiAgICAgICAgIAogICAgICAgICBpZiAoc2hhZG93ZWRSZWN0LnJhZGlpKCkuaXNaZXJvKCkpCiAg
ICAgICAgICAgICBzaGFkb3dDb250ZXh0LT5maWxsUmVjdCh0ZW1wbGF0ZVNoYWRvdyk7CkBAIC04
OTIsNyArODkyLDcgQEAgR3JhcGhpY3NDb250ZXh0KiBTaGFkb3dCbHVyOjpiZWdpblNoYWRvd0xh
eWVyKEdyYXBoaWNzQ29udGV4dCAqY29udGV4dCwgY29uc3QgRmwKICAgICAvLyBXZSByZXNldCB0
aGUgc2NyYXRjaCBidWZmZXIgdmFsdWVzIGhlcmUsIGJlY2F1c2UgdGhlIGJ1ZmZlciB3aWxsIG5v
IGxvbmdlciBjb250YWluCiAgICAgLy8gZGF0YSBmcm9tIGFueSBwcmV2aW91cyByZWN0YW5nbGUg
b3IgaW5zZXQgc2hhZG93cyBkcmF3biB2aWEgdGhlIHRpbGluZyBwYXRoLgogICAgIGF1dG8mIHNj
cmF0Y2hCdWZmZXIgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKTsKLSAgICBzY3JhdGNoQnVm
ZmVyLnNldENhY2hlZFNoYWRvd1ZhbHVlcyhGbG9hdFNpemUoKSwgQ29sb3I6OmJsYWNrLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBJbnRSZWN0KCksIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpKCksIG1f
bGF5ZXJTaXplKTsKKyAgICBzY3JhdGNoQnVmZmVyLnNldENhY2hlZFNoYWRvd1ZhbHVlcyhGbG9h
dFNpemUoKSwgT3B0aW9uYWxSR0JBOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UmVj
dCgpLCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSgpLCBtX2xheWVyU2l6ZSk7CiAgICAgbV9sYXll
ckltYWdlID0gc2NyYXRjaEJ1ZmZlci5nZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5zaXplKCkp
OwogCiAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5j
b250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmgKaW5kZXggZTYyNmIwNzQ4ZDIyMGE4YmM4NTUyYTkxYzEyMmU0YmU3NjYzZjYxMy4uYWFjYzNh
MzdjODhjODI2YjY1NzYzYmQzMjBkODg2MGJkYjEwNzQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaApAQCAtNTEsMTEgKzUxLDExIEBAIHB1Ymxp
YzoKICAgICAgICAgQmx1clNoYWRvdwogICAgIH07CiAKLSAgICBTaGFkb3dCbHVyKGNvbnN0IEZs
b2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQ29sb3ImLCBD
b2xvclNwYWNlKTsKKyAgICBTaGFkb3dCbHVyKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25z
dCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgT3B0aW9uYWxSR0JBJiwgQ29sb3JTcGFjZSk7CiAg
ICAgU2hhZG93Qmx1cihjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwogICAgIFNoYWRvd0Js
dXIoKTsKIAotICAgIHZvaWQgc2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0
IEZsb2F0U2l6ZSYgLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UsIGJvb2wgaWdub3JlVHJhbnNm
b3JtcyA9IGZhbHNlKTsKKyAgICB2b2lkIHNldFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBGbG9hdFNpemUmICwgY29uc3QgT3B0aW9uYWxSR0JBJiwgQ29sb3JTcGFjZSwgYm9v
bCBpZ25vcmVUcmFuc2Zvcm1zID0gZmFsc2UpOwogCiAgICAgdm9pZCBzZXRTaGFkb3dzSWdub3Jl
VHJhbnNmb3Jtcyhib29sIGlnbm9yZVRyYW5zZm9ybXMpIHsgbV9zaGFkb3dzSWdub3JlVHJhbnNm
b3JtcyA9IGlnbm9yZVRyYW5zZm9ybXM7IH0KICAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQpAQCAtMTAz
LDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgU2hhZG93VHlwZSBtX3R5cGU7CiAKLSAg
ICBDb2xvciBtX2NvbG9yOworICAgIE9wdGlvbmFsUkdCQSBtX2NvbG9yOwogICAgIENvbG9yU3Bh
Y2UgbV9jb2xvclNwYWNlOwogICAgIEZsb2F0U2l6ZSBtX2JsdXJSYWRpdXM7CiAgICAgRmxvYXRT
aXplIG1fb2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggZTk4ZGZkOWFmYzFhYTdm
NDMzODViYWRkMDg2ZTc4M2E1YjVkMzQ4MC4uZWZhZWI4MzgzNzA3OWI1Zjk3ODQ0YTg1ZTE2YmVm
Yzk3NjEyODJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC02NjksNyArNjY5LDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckxh
eWVyKCkKIAogICAgIG1fdmlkZW9MYXllciA9IGFkb3B0TlMoW2FsbG9jQVZQbGF5ZXJMYXllcklu
c3RhbmNlKCkgaW5pdF0pOwogICAgIFttX3ZpZGVvTGF5ZXIgc2V0UGxheWVyOm1fYXZQbGF5ZXIu
Z2V0KCldOwotICAgIFttX3ZpZGVvTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29s
b3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKV07CisgICAgW21fdmlkZW9MYXll
ciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihPcHRpb25hbFJHQkE6OmJsYWNrLCBD
b2xvclNwYWNlRGV2aWNlUkdCKV07CiAjaWZuZGVmIE5ERUJVRwogICAgIFttX3ZpZGVvTGF5ZXIg
c2V0TmFtZTpAIk1lZGlhUGxheWVyUHJpdmF0ZSBBVlBsYXllckxheWVyIl07CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwCmluZGV4IDM0ZjRjZTEwM2E5MzZlM2EwMTFiODVjZmI0ZGZlZWNkNjE1MmM4ZTgu
LjY2MzY5MWFmMGZhZTRjYjQ3NjJlY2UwZWE5ZGQ4YTE4NjM2MmM5M2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cApAQCAtNjY1LDcgKzY2NSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRBY2NlbGVyYXRl
c0RyYXdpbmcoYm9vbCBhY2NlbGVyYXRlc0RyYXdpbmcpCiAgICAgbm90ZUxheWVyUHJvcGVydHlD
aGFuZ2VkKEFjY2VsZXJhdGVzRHJhd2luZ0NoYW5nZWQpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3ZvaWQgR3JhcGhp
Y3NMYXllckNBOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvcikK
IHsKICAgICBpZiAobV9iYWNrZ3JvdW5kQ29sb3IgPT0gY29sb3IpCiAgICAgICAgIHJldHVybjsK
QEAgLTk0OSw3ICs5NDksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVy
QW5pbWF0aW9uRW5kZWQoY29uc3QgU3RyaW5nJiBhbmltYXRpb25LZXkpCiAgICAgY2xpZW50KCku
bm90aWZ5QW5pbWF0aW9uRW5kZWQodGhpcywgYW5pbWF0aW9uS2V5KTsKIH0KIAotdm9pZCBHcmFw
aGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikK
K3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBPcHRp
b25hbFJHQkEmIGNvbG9yKQogewogICAgIGlmIChjb2xvciA9PSBtX2NvbnRlbnRzU29saWRDb2xv
cikKICAgICAgICAgcmV0dXJuOwpAQCAtOTYzLDcgKzk2Myw3IEBAIHZvaWQgR3JhcGhpY3NMYXll
ckNBOjpzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgICAg
ICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNMYXllckZvckJhY2tncm91bmRD
b2xvcjsKICAgICAgICAgICAgIG1fY29udGVudHNMYXllciA9IGNyZWF0ZVBsYXRmb3JtQ0FMYXll
cihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVyLCB0aGlzKTsKICNpZm5kZWYgTkRFQlVH
Ci0gICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE5hbWUoU3RyaW5nOjpmb3JtYXQoIkJh
Y2tncm91bmQgQ29sb3IgTGF5ZXIgJWxsdSIsIG1fY29udGVudHNMYXllci0+bGF5ZXJJRCgpKSk7
CisgICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE5hbWUoU3RyaW5nOjpmb3JtYXQoIkJh
Y2tncm91bmQgT3B0aW9uYWxSR0JBIExheWVyICVsbHUiLCBtX2NvbnRlbnRzTGF5ZXItPmxheWVy
SUQoKSkpOwogI2VuZGlmCiAgICAgICAgICAgICBjb250ZW50c0xheWVyQ2hhbmdlZCA9IHRydWU7
CiAgICAgICAgIH0KQEAgLTEzMzgsOCArMTMzOCw4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpy
ZWN1cnNpdmVDb21taXRDaGFuZ2VzKGNvbnN0IENvbW1pdFN0YXRlJiBjb21taXRTdGF0ZSwgY29u
CiAgICAgLy8gVXNlIGhhdmluZyBhIHRyYW5zZm9ybSBhcyBhIGtleSB0byBtYWtpbmcgdGhlIHRp
bGUgd2FzaCBsYXllci4gSWYgZXZlcnkgbGF5ZXIgZ2V0cyBhIHdhc2gsCiAgICAgLy8gdGhleSBz
dGFydCB0byBvYnNjdXJlIHVzZWZ1bCBpbmZvcm1hdGlvbi4KICAgICBpZiAoKCFtX3RyYW5zZm9y
bS5pc0lkZW50aXR5KCkgfHwgbV91c2luZ1RpbGVkQmFja2luZykgJiYgIW1fdmlzaWJsZVRpbGVX
YXNoTGF5ZXIpIHsKLSAgICAgICAgc3RhdGljIENvbG9yIHdhc2hGaWxsQ29sb3IoMjU1LCAwLCAw
LCA1MCk7Ci0gICAgICAgIHN0YXRpYyBDb2xvciB3YXNoQm9yZGVyQ29sb3IoMjU1LCAwLCAwLCAx
MDApOworICAgICAgICBzdGF0aWMgT3B0aW9uYWxSR0JBIHdhc2hGaWxsQ29sb3IoMjU1LCAwLCAw
LCA1MCk7CisgICAgICAgIHN0YXRpYyBPcHRpb25hbFJHQkEgd2FzaEJvcmRlckNvbG9yKDI1NSwg
MCwgMCwgMTAwKTsKICAgICAgICAgCiAgICAgICAgIG1fdmlzaWJsZVRpbGVXYXNoTGF5ZXIgPSBj
cmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllciwgdGhp
cyk7CiAgICAgICAgIFN0cmluZyBuYW1lID0gU3RyaW5nOjpmb3JtYXQoIlZpc2libGUgVGlsZSBX
YXNoIExheWVyICVwIiwgbV92aXNpYmxlVGlsZVdhc2hMYXllci0+cGxhdGZvcm1MYXllcigpKTsK
QEAgLTIwNTcsMjcgKzIwNTcsMjcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUFjY2Vs
ZXJhdGVzRHJhd2luZygpCiAgICAgbV9sYXllci0+c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKG1fYWNj
ZWxlcmF0ZXNEcmF3aW5nKTsKIH0KIAotc3RhdGljIHZvaWQgc2V0TGF5ZXJEZWJ1Z0JvcmRlcihQ
bGF0Zm9ybUNBTGF5ZXImIGxheWVyLCBDb2xvciBib3JkZXJDb2xvciwgZmxvYXQgYm9yZGVyV2lk
dGgpCitzdGF0aWMgdm9pZCBzZXRMYXllckRlYnVnQm9yZGVyKFBsYXRmb3JtQ0FMYXllciYgbGF5
ZXIsIE9wdGlvbmFsUkdCQSBib3JkZXJDb2xvciwgZmxvYXQgYm9yZGVyV2lkdGgpCiB7CiAgICAg
bGF5ZXIuc2V0Qm9yZGVyQ29sb3IoYm9yZGVyQ29sb3IpOwogICAgIGxheWVyLnNldEJvcmRlcldp
ZHRoKGJvcmRlckNvbG9yLmlzVmFsaWQoKSA/IGJvcmRlcldpZHRoIDogMCk7CiB9CiAKIHN0YXRp
YyBjb25zdCBmbG9hdCBjb250ZW50c0xheWVyQm9yZGVyV2lkdGggPSA0Owotc3RhdGljIENvbG9y
IGNvbnRlbnRzTGF5ZXJEZWJ1Z0JvcmRlckNvbG9yKGJvb2wgc2hvd2luZ0JvcmRlcnMpCitzdGF0
aWMgT3B0aW9uYWxSR0JBIGNvbnRlbnRzTGF5ZXJEZWJ1Z0JvcmRlckNvbG9yKGJvb2wgc2hvd2lu
Z0JvcmRlcnMpCiB7Ci0gICAgcmV0dXJuIHNob3dpbmdCb3JkZXJzID8gQ29sb3IoMCwgMCwgMTI4
LCAxODApIDogQ29sb3IoKTsKKyAgICByZXR1cm4gc2hvd2luZ0JvcmRlcnMgPyBPcHRpb25hbFJH
QkEoMCwgMCwgMTI4LCAxODApIDogT3B0aW9uYWxSR0JBKCk7CiB9CiAKIHN0YXRpYyBjb25zdCBm
bG9hdCBjbG9uZUxheWVyQm9yZGVyV2lkdGggPSAyOwotc3RhdGljIENvbG9yIGNsb25lTGF5ZXJE
ZWJ1Z0JvcmRlckNvbG9yKGJvb2wgc2hvd2luZ0JvcmRlcnMpCitzdGF0aWMgT3B0aW9uYWxSR0JB
IGNsb25lTGF5ZXJEZWJ1Z0JvcmRlckNvbG9yKGJvb2wgc2hvd2luZ0JvcmRlcnMpCiB7Ci0gICAg
cmV0dXJuIHNob3dpbmdCb3JkZXJzID8gQ29sb3IoMjU1LCAxMjIsIDI1MSkgOiBDb2xvcigpOwor
ICAgIHJldHVybiBzaG93aW5nQm9yZGVycyA/IE9wdGlvbmFsUkdCQSgyNTUsIDEyMiwgMjUxKSA6
IE9wdGlvbmFsUkdCQSgpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlRGVidWdC
b3JkZXIoKQogewotICAgIENvbG9yIGJvcmRlckNvbG9yOworICAgIE9wdGlvbmFsUkdCQSBib3Jk
ZXJDb2xvcjsKICAgICBmbG9hdCB3aWR0aCA9IDA7CiAKICAgICBib29sIHNob3dEZWJ1Z0JvcmRl
cnMgPSBpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpOwpAQCAtMjA5NCwxMyArMjA5NCwxMyBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlRGVidWdCb3JkZXIoKQogICAgIH0KIAogICAgIGlmICht
X3N0cnVjdHVyYWxMYXllckNsb25lcykgewotICAgICAgICBDb2xvciBjbG9uZUxheWVyQm9yZGVy
Q29sb3IgPSBjbG9uZUxheWVyRGVidWdCb3JkZXJDb2xvcihzaG93RGVidWdCb3JkZXJzKTsKKyAg
ICAgICAgT3B0aW9uYWxSR0JBIGNsb25lTGF5ZXJCb3JkZXJDb2xvciA9IGNsb25lTGF5ZXJEZWJ1
Z0JvcmRlckNvbG9yKHNob3dEZWJ1Z0JvcmRlcnMpOwogICAgICAgICBmb3IgKGF1dG8mIGNsb25l
IDogbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMtPnZhbHVlcygpKQogICAgICAgICAgICAgc2V0TGF5
ZXJEZWJ1Z0JvcmRlcigqY2xvbmUsIGNsb25lTGF5ZXJCb3JkZXJDb2xvciwgY2xvbmVMYXllckJv
cmRlcldpZHRoKTsKICAgICB9CiAKICAgICBpZiAobV9jb250ZW50c0xheWVyQ2xvbmVzKSB7Ci0g
ICAgICAgIENvbG9yIGNvbnRlbnRzTGF5ZXJCb3JkZXJDb2xvciA9IGNvbnRlbnRzTGF5ZXJEZWJ1
Z0JvcmRlckNvbG9yKHNob3dEZWJ1Z0JvcmRlcnMpOworICAgICAgICBPcHRpb25hbFJHQkEgY29u
dGVudHNMYXllckJvcmRlckNvbG9yID0gY29udGVudHNMYXllckRlYnVnQm9yZGVyQ29sb3Ioc2hv
d0RlYnVnQm9yZGVycyk7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudHNMYXllckNsb25lIDog
bV9jb250ZW50c0xheWVyQ2xvbmVzLT52YWx1ZXMoKSkKICAgICAgICAgICAgIHNldExheWVyRGVi
dWdCb3JkZXIoKmNvbnRlbnRzTGF5ZXJDbG9uZSwgY29udGVudHNMYXllckJvcmRlckNvbG9yLCBj
b250ZW50c0xheWVyQm9yZGVyV2lkdGgpOwogICAgIH0KQEAgLTIyMjgsNyArMjIyOCw3IEBAIHZv
aWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1BsYXRmb3JtTGF5ZXIoKQogCiB2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNDb2xvckxheWVyKCkKIHsKLSAgICAvLyBD
b2xvciBsYXllciB3YXMgc2V0IGFzIG1fY29udGVudHNMYXllciwgYW5kIHdpbGwgZ2V0IHBhcmVu
dGVkIGluIHVwZGF0ZVN1YmxheWVyTGlzdCgpLgorICAgIC8vIE9wdGlvbmFsUkdCQSBsYXllciB3
YXMgc2V0IGFzIG1fY29udGVudHNMYXllciwgYW5kIHdpbGwgZ2V0IHBhcmVudGVkIGluIHVwZGF0
ZVN1YmxheWVyTGlzdCgpLgogICAgIGlmICghbV9jb250ZW50c0xheWVyIHx8IG1fY29udGVudHNM
YXllclB1cnBvc2UgIT0gQ29udGVudHNMYXllckZvckJhY2tncm91bmRDb2xvcikKICAgICAgICAg
cmV0dXJuOwogCkBAIC0zMjM0LDE4ICszMjM0LDE4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpz
ZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCBzaG93Q291bnRlcikKICAgICBub3RlTGF5ZXJQcm9w
ZXJ0eUNoYW5nZWQoRGVidWdJbmRpY2F0b3JzQ2hhbmdlZCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NM
YXllckNBOjpzZXREZWJ1Z0JhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6c2V0RGVidWdCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWxS
R0JBJiBjb2xvcikKIHsgICAgCiAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgbV9s
YXllci0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKICAgICBlbHNlCi0gICAgICAgIG1fbGF5
ZXItPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgICAgICBtX2xh
eWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoT3B0aW9uYWxSR0JBOjp0cmFuc3BhcmVudCk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NMYXllckNBOjpnZXREZWJ1Z0JvcmRlckluZm8oQ29sb3ImIGNvbG9yLCBm
bG9hdCYgd2lkdGgpIGNvbnN0Cit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Z2V0RGVidWdCb3JkZXJJ
bmZvKE9wdGlvbmFsUkdCQSYgY29sb3IsIGZsb2F0JiB3aWR0aCkgY29uc3QKIHsKICAgICBpZiAo
aXNQYWdlVGlsZWRCYWNraW5nTGF5ZXIoKSkgewotICAgICAgICBjb2xvciA9IENvbG9yKDAsIDAs
IDEyOCwgMTI4KTsgLy8gdGlsZSBjYWNoZSBsYXllcjogZGFyayBibHVlCisgICAgICAgIGNvbG9y
ID0gT3B0aW9uYWxSR0JBKDAsIDAsIDEyOCwgMTI4KTsgLy8gdGlsZSBjYWNoZSBsYXllcjogZGFy
ayBibHVlCiAgICAgICAgIHdpZHRoID0gMC41OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MzMxMSw3ICszMzExLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmR1bXBBZGRpdGlvbmFsUHJv
cGVydGllcyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBpbnQgaW5kZW4KICAgICB9CiB9CiAKLXZv
aWQgR3JhcGhpY3NMYXllckNBOjpzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYgY29sb3IsIGZs
b2F0IGJvcmRlcldpZHRoKQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldERlYnVnQm9yZGVyKGNv
bnN0IE9wdGlvbmFsUkdCQSYgY29sb3IsIGZsb2F0IGJvcmRlcldpZHRoKQogewogICAgIHNldExh
eWVyRGVidWdCb3JkZXIoKm1fbGF5ZXIsIGNvbG9yLCBib3JkZXJXaWR0aCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5o
CmluZGV4IGY3ZDlhZjA3MWI0MDQyOWJkMDQ5M2FkNThlMWU2YTNjOGExMDZmNTMuLjNhMTc0Y2Jh
NDI5MGQ2OTllYTc5YjQ3ZWI0N2UzMDRjNjQyYTVhYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC05MSw3ICs5
MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0Q29udGVu
dHNWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBzZXRBY2NlbGVyYXRlc0RyYXdpbmcoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJp
ZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihj
b25zdCBPcHRpb25hbFJHQkEmKSBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCBzZXRDb250ZW50c09wYXF1ZShib29sKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgc2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wpIG92ZXJyaWRlOwpA
QCAtMTMyLDE1ICsxMzIsMTUgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
UGxhdGZvcm1MYXllciogY29udGVudHNMYXllckZvck1lZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CiAj
ZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb1BsYXRm
b3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3Io
Y29uc3QgQ29sb3ImKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJikgb3ZlcnJpZGU7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlICE9IE5vQ29udGVudHNMYXllcjsgfQogICAgIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRTaG93RGVidWdCb3JkZXIoYm9vbCkg
b3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFNob3dSZXBhaW50
Q291bnRlcihib29sKSBvdmVycmlkZTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBzZXREZWJ1Z0JhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYsIGZs
b2F0IGJvcmRlcldpZHRoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgc2V0RGVidWdCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJikgb3ZlcnJpZGU7
CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0IE9w
dGlvbmFsUkdCQSYsIGZsb2F0IGJvcmRlcldpZHRoKSBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRDdXN0b21BcHBlYXJhbmNlKEN1c3RvbUFwcGVhcmFuY2Up
IG92ZXJyaWRlOwogCkBAIC0yNzIsNyArMjcyLDcgQEAgcHJpdmF0ZToKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgYm9vbCBjYW5UaHJvdHRsZUxheWVyRmx1c2goKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBnZXREZWJ1Z0JvcmRlckluZm8o
Q29sb3ImLCBmbG9hdCYgd2lkdGgpIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCBnZXREZWJ1Z0JvcmRlckluZm8oT3B0aW9uYWxSR0JBJiwgZmxvYXQmIHdp
ZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHVt
cEFkZGl0aW9uYWxQcm9wZXJ0aWVzKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50LCBMYXllclRyZWVB
c1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNvbXB1dGVQaXhlbEFs
aWdubWVudChmbG9hdCBjb250ZW50c1NjYWxlLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvblJl
bGF0aXZlVG9CYXNlLApAQCAtNTIyLDcgKzUyMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lz
Vmlld3BvcnRDb25zdHJhaW5lZCA6IDE7CiAgICAgYm9vbCBtX2ludGVyc2VjdHNDb3ZlcmFnZVJl
Y3QgOiAxOwogCi0gICAgQ29sb3IgbV9jb250ZW50c1NvbGlkQ29sb3I7CisgICAgT3B0aW9uYWxS
R0JBIG1fY29udGVudHNTb2xpZENvbG9yOwogCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1f
dW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3Bl
bmRpbmdDb250ZW50c0ltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oCmluZGV4IGVhZGQxMTdmNjIxOTk0
MWEzYTg4OWYwNGE5MGQ0MjM1YjBlMzE4ZjIuLmYzYWUwOTlkYjQzMGQ3ZjliNTRjZThkYTdkMDUx
Y2U0ZTcyMzMxODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmgKQEAgLTkzLDE0ICs5MywxNCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEZyb21WYWx1ZShmbG9hdCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEZyb21WYWx1ZShjb25zdCBGbG9hdFBvaW50M0Qm
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpDb2xv
ciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbVZhbHVlKGNvbnN0IFdlYkNvcmU6Ok9w
dGlvbmFsUkdCQSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbVZhbHVlKGNvbnN0IEZp
bHRlck9wZXJhdGlvbiosIGludCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgY29weUZyb21WYWx1ZUZyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlv
biYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRUb1ZhbHVlKGZsb2F0KSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRy
aXgmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29uc3QgRmxvYXRQb2ludDNE
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OkNvbG9y
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6Ok9wdGlv
bmFsUkdCQSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBGaWx0ZXJP
cGVyYXRpb24qLCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNvcHlUb1ZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJikgPSAw
OwogCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1
ZXMoY29uc3QgVmVjdG9yPGZsb2F0PiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVz
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4mKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8RmxvYXRQb2ludDNEPiYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb2xvcj4m
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
T3B0aW9uYWxSR0JBPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZl
Y3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPj4mLCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0
eUluZGV4KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNvcHlWYWx1ZXNGcm9tKGNvbnN0IFBsYXRm
b3JtQ0FBbmltYXRpb24mKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKaW5kZXggMTYzZTNjMzRhNjlkYWJiNDc2
ZTQzNGFlYmYzNzY3MmJjMTBhZTIxZi4uODUyODI2NDI1ZmZjM2Y2MmRjNmM2ZGU4MGM0ZWQ2Yzc0
YTFkMGU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmgKQEAgLTE4MywxMiArMTgzLDEyIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0TWluaWZpY2F0aW9uRmlsdGVyKEZpbHRlclR5cGUpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0TWFnbmlmaWNhdGlvbkZpbHRlcihGaWx0ZXJUeXBlKSA9IDA7CiAKLSAg
ICB2aXJ0dWFsIENvbG9yIGJhY2tncm91bmRDb2xvcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJikgPSAwOworICAgIHZpcnR1YWwg
T3B0aW9uYWxSR0JBIGJhY2tncm91bmRDb2xvcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYpID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCBzZXRCb3JkZXJXaWR0aChmbG9hdCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lk
IHNldEJvcmRlckNvbG9yKGNvbnN0IENvbG9yJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRC
b3JkZXJDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmKSA9IDA7CiAKICAgICB2aXJ0dWFsIGZsb2F0
IG9wYWNpdHkoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE9wYWNpdHkoZmxvYXQp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Rp
bGVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Rp
bGVDb250cm9sbGVyLmNwcAppbmRleCBlODA3NWQyODNjOTVkMjFkZDk3NmEwMTNiYWQ2MzM4ZTU5
YWEyYmY0Li43MzA1OWM0N2ZlMzZmMGFkMWYxYWRiZGYxOTcyM2FmNTQ1ZjY0MjE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xs
ZXIuY3BwCkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBUaWxlQ29udHJvbGxlcjo6c2V0VGlsZURl
YnVnQm9yZGVyV2lkdGgoZmxvYXQgYm9yZGVyV2lkdGgpCiAgICAgdGlsZUdyaWQoKS51cGRhdGVU
aWxlTGF5ZXJQcm9wZXJ0aWVzKCk7CiB9CiAKLXZvaWQgVGlsZUNvbnRyb2xsZXI6OnNldFRpbGVE
ZWJ1Z0JvcmRlckNvbG9yKENvbG9yIGJvcmRlckNvbG9yKQordm9pZCBUaWxlQ29udHJvbGxlcjo6
c2V0VGlsZURlYnVnQm9yZGVyQ29sb3IoT3B0aW9uYWxSR0JBIGJvcmRlckNvbG9yKQogewogICAg
IGlmIChtX3RpbGVEZWJ1Z0JvcmRlckNvbG9yID09IGJvcmRlckNvbG9yKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxl
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNv
bnRyb2xsZXIuaAppbmRleCBjNDE3NzgzZDY0ZTM0YzhkYzdkNDg2NzRkZjc1YjljYWRkN2JjOTAz
Li4zMTk0ZTViNWI5NmM3NDAzYTc2NGJjNTA5NDAxNzdlZWQ2M2VkNjFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgKQEAg
LTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFBsYXRmb3JtQ0FMYXllciYgcm9vdExh
eWVyKCkgY29uc3QgeyByZXR1cm4gKm1fdGlsZUNhY2hlTGF5ZXI7IH0KIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0VGlsZURlYnVnQm9yZGVyV2lkdGgoZmxvYXQpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0VGlsZURlYnVnQm9yZGVyQ29sb3IoQ29sb3IpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0VGlsZURlYnVnQm9yZGVyQ29sb3IoT3B0aW9uYWxSR0JBKTsKIAogICAg
IHZpcnR1YWwgRmxvYXRSZWN0IHZpc2libGVSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV92aXNpYmxlUmVjdDsgfQogICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNvdmVyYWdlUmVjdCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY292ZXJhZ2VSZWN0OyB9CkBAIC05MSw3ICs5MSw3IEBA
IHB1YmxpYzoKIAogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9kZXZpY2VTY2FsZUZhY3RvcjsgfQogCi0gICAgQ29sb3IgdGlsZURlYnVnQm9yZGVyQ29sb3Io
KSBjb25zdCB7IHJldHVybiBtX3RpbGVEZWJ1Z0JvcmRlckNvbG9yOyB9CisgICAgT3B0aW9uYWxS
R0JBIHRpbGVEZWJ1Z0JvcmRlckNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV90aWxlRGVidWdCb3Jk
ZXJDb2xvcjsgfQogICAgIGZsb2F0IHRpbGVEZWJ1Z0JvcmRlcldpZHRoKCkgY29uc3QgeyByZXR1
cm4gbV90aWxlRGVidWdCb3JkZXJXaWR0aDsgfQogICAgIFNjcm9sbGluZ01vZGVJbmRpY2F0aW9u
IGluZGljYXRvck1vZGUoKSBjb25zdCB7IHJldHVybiBtX2luZGljYXRvck1vZGU7IH0KIApAQCAt
MjAyLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3RpbGVzQXJlT3BhcXVlOwogICAg
IGJvb2wgbV9oYXNUaWxlc1dpdGhUZW1wb3JhcnlTY2FsZUZhY3RvcjsgLy8gVXNlZCB0byBtYWtl
IGxvdy1yZXMgdGlsZXMgd2hlbiB6b29taW5nLgogCi0gICAgQ29sb3IgbV90aWxlRGVidWdCb3Jk
ZXJDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgbV90aWxlRGVidWdCb3JkZXJDb2xvcjsKICAgICBm
bG9hdCBtX3RpbGVEZWJ1Z0JvcmRlcldpZHRoOwogICAgIFNjcm9sbGluZ01vZGVJbmRpY2F0aW9u
IG1faW5kaWNhdG9yTW9kZTsKICAgICBmbG9hdCBtX3RvcENvbnRlbnRJbnNldDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VNYXAu
Y3BwCmluZGV4IDhjZGJjZTljN2RlYTlmMDQxZDZmODE2MmZjMzIxMGMzZTQ3ZWExZWYuLjg1NjEw
ZTRmMmNkOWY0MzI2NjRhMWE1ODU1NjAxNzYwYWZkMTIxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNwcApAQCAt
NDEsMTggKzQxLDE4IEBAIFRpbGVDb3ZlcmFnZU1hcDo6VGlsZUNvdmVyYWdlTWFwKGNvbnN0IFRp
bGVDb250cm9sbGVyJiBjb250cm9sbGVyKQogewogICAgIG1fbGF5ZXIuZ2V0KCkuc2V0T3BhY2l0
eSgwLjc1KTsKICAgICBtX2xheWVyLmdldCgpLnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgp
KTsKLSAgICBtX2xheWVyLmdldCgpLnNldEJvcmRlckNvbG9yKENvbG9yOjpibGFjayk7CisgICAg
bV9sYXllci5nZXQoKS5zZXRCb3JkZXJDb2xvcihPcHRpb25hbFJHQkE6OmJsYWNrKTsKICAgICBt
X2xheWVyLmdldCgpLnNldEJvcmRlcldpZHRoKDEpOwogICAgIG1fbGF5ZXIuZ2V0KCkuc2V0UG9z
aXRpb24oRmxvYXRQb2ludCgyLCAyKSk7CiAgICAgbV9sYXllci5nZXQoKS5zZXRDb250ZW50c1Nj
YWxlKG1fY29udHJvbGxlci5kZXZpY2VTY2FsZUZhY3RvcigpKTsKIAogICAgIG1fdmlzaWJsZVJl
Y3RJbmRpY2F0b3JMYXllci5nZXQoKS5zZXRCb3JkZXJXaWR0aCgyKTsKICAgICBtX3Zpc2libGVS
ZWN0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkpOwot
ICAgIG1fdmlzaWJsZVJlY3RJbmRpY2F0b3JMYXllci5nZXQoKS5zZXRCb3JkZXJDb2xvcihDb2xv
cigyNTUsIDAsIDApKTsKKyAgICBtX3Zpc2libGVSZWN0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0
Qm9yZGVyQ29sb3IoT3B0aW9uYWxSR0JBKDI1NSwgMCwgMCkpOwogICAgIAogICAgIG1fY292ZXJh
Z2VSZWN0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0Qm9yZGVyV2lkdGgoMik7CiAgICAgbV9jb3Zl
cmFnZVJlY3RJbmRpY2F0b3JMYXllci5nZXQoKS5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0Qo
KSk7Ci0gICAgbV9jb3ZlcmFnZVJlY3RJbmRpY2F0b3JMYXllci5nZXQoKS5zZXRCb3JkZXJDb2xv
cihDb2xvcigwLCAwLCAxMjgpKTsKKyAgICBtX2NvdmVyYWdlUmVjdEluZGljYXRvckxheWVyLmdl
dCgpLnNldEJvcmRlckNvbG9yKE9wdGlvbmFsUkdCQSgwLCAwLCAxMjgpKTsKIAogICAgIG1fbGF5
ZXIuZ2V0KCkuYXBwZW5kU3VibGF5ZXIobV9jb3ZlcmFnZVJlY3RJbmRpY2F0b3JMYXllcik7CiAg
ICAgbV9sYXllci5nZXQoKS5hcHBlbmRTdWJsYXllcihtX3Zpc2libGVSZWN0SW5kaWNhdG9yTGF5
ZXIpOwpAQCAtOTksMTYgKzk5LDE2IEBAIHZvaWQgVGlsZUNvdmVyYWdlTWFwOjp1cGRhdGUoKQog
ICAgIG1fY292ZXJhZ2VSZWN0SW5kaWNhdG9yTGF5ZXItPnNldFBvc2l0aW9uKGNvdmVyYWdlUmVj
dC5sb2NhdGlvbigpKTsKICAgICBtX2NvdmVyYWdlUmVjdEluZGljYXRvckxheWVyLT5zZXRCb3Vu
ZHMoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgY292ZXJhZ2VSZWN0LnNpemUoKSkpOwogCi0gICAg
Q29sb3IgdmlzaWJsZVJlY3RJbmRpY2F0b3JDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgdmlzaWJs
ZVJlY3RJbmRpY2F0b3JDb2xvcjsKICAgICBzd2l0Y2ggKG1fY29udHJvbGxlci5pbmRpY2F0b3JN
b2RlKCkpIHsKICAgICBjYXNlIFN5bmNocm9ub3VzU2Nyb2xsaW5nQmVjYXVzZU9mU3R5bGVJbmRp
Y2F0aW9uOgotICAgICAgICB2aXNpYmxlUmVjdEluZGljYXRvckNvbG9yID0gQ29sb3IoMjU1LCAw
LCAwKTsKKyAgICAgICAgdmlzaWJsZVJlY3RJbmRpY2F0b3JDb2xvciA9IE9wdGlvbmFsUkdCQSgy
NTUsIDAsIDApOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bmNocm9ub3VzU2Nyb2xsaW5n
QmVjYXVzZU9mRXZlbnRIYW5kbGVyc0luZGljYXRpb246Ci0gICAgICAgIHZpc2libGVSZWN0SW5k
aWNhdG9yQ29sb3IgPSBDb2xvcigyNTUsIDI1NSwgMCk7CisgICAgICAgIHZpc2libGVSZWN0SW5k
aWNhdG9yQ29sb3IgPSBPcHRpb25hbFJHQkEoMjU1LCAyNTUsIDApOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFzeW5jU2Nyb2xsaW5nSW5kaWNhdGlvbjoKLSAgICAgICAgdmlzaWJsZVJlY3RJ
bmRpY2F0b3JDb2xvciA9IENvbG9yKDAsIDIwMCwgMCk7CisgICAgICAgIHZpc2libGVSZWN0SW5k
aWNhdG9yQ29sb3IgPSBPcHRpb25hbFJHQkEoMCwgMjAwLCAwKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9U
aWxlR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3Jp
ZC5jcHAKaW5kZXggNTY3YjFhNWEwNTkyN2EwOWU1NGJhNzQ1NzkwZjg2MWY2ZDgyOTU1ZS4uMTU5
YzlkMDkxM2U5ZGUxNGY5ZTY0NDJjODczMWIwMTAwMjg1YmZkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcApAQCAtMTczLDcgKzE3Myw3
IEBAIHZvaWQgVGlsZUdyaWQ6OnVwZGF0ZVRpbGVMYXllclByb3BlcnRpZXMoKQogewogICAgIGJv
b2wgYWNjZWxlcmF0ZXNEcmF3aW5nID0gbV9jb250cm9sbGVyLmFjY2VsZXJhdGVzRHJhd2luZygp
OwogICAgIGJvb2wgb3BhcXVlID0gbV9jb250cm9sbGVyLnRpbGVzQXJlT3BhcXVlKCk7Ci0gICAg
Q29sb3IgdGlsZURlYnVnQm9yZGVyQ29sb3IgPSBtX2NvbnRyb2xsZXIudGlsZURlYnVnQm9yZGVy
Q29sb3IoKTsKKyAgICBPcHRpb25hbFJHQkEgdGlsZURlYnVnQm9yZGVyQ29sb3IgPSBtX2NvbnRy
b2xsZXIudGlsZURlYnVnQm9yZGVyQ29sb3IoKTsKICAgICBmbG9hdCB0aWxlRGVidWdCb3JkZXJX
aWR0aCA9IG1fY29udHJvbGxlci50aWxlRGVidWdCb3JkZXJXaWR0aCgpOwogCiAgICAgZm9yIChU
aWxlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKSwgZW5kID0gbV90aWxl
cy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRp
b25Db2NvYS5oCmluZGV4IGFkYTM4ZGZiN2I0ZGMzYmJmZGNmNjIwZjliMTMxNWIyNmY4OTJhMTQu
LmQzYmM0MWRkMGQ0NmMxNDhmNWU3NWJlYzE3YjA1MTdkYzRhM2ZhOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRp
b25Db2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oCkBAIC05OCwxNCArOTgsMTQgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9tVmFsdWUoZmxvYXQpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgm
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbVZhbHVlKGNvbnN0IEZsb2F0UG9p
bnQzRCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3QgV2Vi
Q29yZTo6Q29sb3ImKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbVZhbHVlKGNv
bnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRGcm9tVmFsdWUoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiwgaW50IGludGVybmFsRmlsdGVyUHJv
cGVydHlJbmRleCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvcHlGcm9tVmFsdWVGcm9t
KGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBzZXRUb1ZhbHVlKGZsb2F0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VG9WYWx1
ZShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IEZsb2F0UG9pbnQzRCYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JB
Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29uc3QgRmlsdGVyT3Bl
cmF0aW9uKiwgaW50IGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIGNvcHlUb1ZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJikg
b3ZlcnJpZGU7CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldFZhbHVlcyhjb25zdCBWZWN0b3I8ZmxvYXQ+Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+
Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8Rmxv
YXRQb2ludDNEPiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZXMoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvbG9yPiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRW
YWx1ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6Ok9wdGlvbmFsUkdCQT4mKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0
aW9uPj4mLCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgY29weVZhbHVlc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW0KaW5kZXgg
M2Q0NjM1MWY2MmM5N2RhMjM1MjkzZjBlNmQ3NDQ0MzQzYzk5MTEzZC4uYjRiZDVjMDg1ZjBmMjgy
OWQ5ZjNmOGUzYTZkMDBhMTJlZTMzMDJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmlt
YXRpb25Db2NvYS5tbQpAQCAtMzcyLDcgKzM3Miw3IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlv
bkNvY29hOjpzZXRGcm9tVmFsdWUoY29uc3QgRmxvYXRQb2ludDNEJiB2YWx1ZSkKICAgICBbc3Rh
dGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRGcm9tVmFs
dWU6YXJyYXldOwogfQogCi12b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0RnJvbVZh
bHVlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiB2YWx1ZSkKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlv
bkNvY29hOjpzZXRGcm9tVmFsdWUoY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJiB2YWx1ZSkK
IHsKICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljKQogICAgICAgICByZXR1cm47CkBA
IC00MjksNyArNDI5LDcgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFRvVmFs
dWUoY29uc3QgRmxvYXRQb2ludDNEJiB2YWx1ZSkKICAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0Fu
aW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVlOmFycmF5XTsKIH0KIAotdm9p
ZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6Q29s
b3ImIHZhbHVlKQordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFRvVmFsdWUoY29u
c3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJiB2YWx1ZSkKIHsKICAgICBpZiAoYW5pbWF0aW9uVHlw
ZSgpICE9IEJhc2ljKQogICAgICAgICByZXR1cm47CkBAIC01MDIsNyArNTAyLDcgQEAgdm9pZCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8RmxvYXRQb2lu
dDNEPiYgdmFsdWUpCiAgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihtX2Fu
aW1hdGlvbi5nZXQoKSkgc2V0VmFsdWVzOmFycmF5XTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBQW5p
bWF0aW9uQ29jb2E6OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29sb3I+JiB2YWx1
ZSkKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9y
PFdlYkNvcmU6Ok9wdGlvbmFsUkdCQT4mIHZhbHVlKQogewogICAgIGlmIChhbmltYXRpb25UeXBl
KCkgIT0gS2V5ZnJhbWUpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBRmls
dGVyc0NvY29hLm1tCmluZGV4IGZlNWFlOTVmNzIwMzA2MDFlYjIyNzdiNTdkOWFmNTNjZWQ5MWZj
N2UuLmFiM2Y1M2E5ZGFlZTk5ZmM0ZDRjZmQwYWRhMDEwYjU1OGRiNjVkYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0
ZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5tbQpAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgUGxh
dGZvcm1DQUZpbHRlcnM6OnNldEZpbHRlcnNPbkxheWVyKFBsYXRmb3JtTGF5ZXIqIGxheWVyLCBj
b25zdCBGaWx0ZXJPcGVyCiAgICAgICAgICAgICBDSUZpbHRlciogZmlsdGVyID0gW0NJRmlsdGVy
IGZpbHRlcldpdGhOYW1lOkAiQ0lDb2xvck1vbm9jaHJvbWUiXTsKICAgICAgICAgICAgIFtmaWx0
ZXIgc2V0RGVmYXVsdHNdOwogICAgICAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIg
bnVtYmVyV2l0aEZsb2F0OmNvbG9yTWF0cml4T3BlcmF0aW9uLmFtb3VudCgpXSBmb3JLZXk6QCJp
bnB1dEludGVuc2l0eSJdOwotICAgICAgICAgICAgW2ZpbHRlciBzZXRWYWx1ZTpbQ0lDb2xvciBj
b2xvcldpdGhSZWQ6MC42NyBncmVlbjowLjY3IGJsdWU6MC42N10gZm9yS2V5OkAiaW5wdXRDb2xv
ciJdOyAvLyBDb2xvciBkZXJpdmVkIGVtcGlyaWNhbGx5IHRvIG1hdGNoIHplcm8gc2F0dXJhdGlv
biBsZXZlbHMuCisgICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltDSUNvbG9yIGNvbG9yV2l0
aFJlZDowLjY3IGdyZWVuOjAuNjcgYmx1ZTowLjY3XSBmb3JLZXk6QCJpbnB1dENvbG9yIl07IC8v
IE9wdGlvbmFsUkdCQSBkZXJpdmVkIGVtcGlyaWNhbGx5IHRvIG1hdGNoIHplcm8gc2F0dXJhdGlv
biBsZXZlbHMuCiAgICAgICAgICAgICBbZmlsdGVyIHNldE5hbWU6ZmlsdGVyTmFtZV07CiAgICAg
ICAgICAgICBbYXJyYXkuZ2V0KCkgYWRkT2JqZWN0OmZpbHRlcl07CiAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCmluZGV4IDFjYmY0NDJmMmI3YjI5ODQ4
ZTlhN2M0NDRiNjdmNWE1OGIzODM1NzYuLjZiZDMxYmVhY2NjMTI5OWI5NjlkOTNiMjRjZTdiMzg2
MTgzZWNjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaApAQCAtMTExLDEyICsx
MTEsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRNaW5pZmljYXRpb25GaWx0ZXIo
RmlsdGVyVHlwZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldE1hZ25pZmljYXRpb25G
aWx0ZXIoRmlsdGVyVHlwZSkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIENvbG9yIGJhY2tncm91
bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5k
Q29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBi
YWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFj
a2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVh
bCB2b2lkIHNldEJvcmRlcldpZHRoKGZsb2F0KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBzZXRCb3JkZXJDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRCb3JkZXJDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmKSBvdmVycmlkZTsKIAogICAgIHZp
cnR1YWwgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRPcGFjaXR5KGZsb2F0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2Eu
bW0KaW5kZXggZTdhYTJiMzNlNTYwOGI0MDhjOTA4MTgzN2I1NTc4MTc5NjUxMTFkYS4uNWQ1YTZm
YjFlMDJkZjI2MTMwNGY1MWIzMWE1ZDU4ZGNkMmQ2MDFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1D
QUxheWVyQ29jb2EubW0KQEAgLTY5NCwxMiArNjk0LDEyIEBAIHZvaWQgUGxhdGZvcm1DQUxheWVy
Q29jb2E6OnNldE1hZ25pZmljYXRpb25GaWx0ZXIoRmlsdGVyVHlwZSB2YWx1ZSkKICAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKLUNvbG9yIFBsYXRmb3JtQ0FMYXllckNvY29hOjpi
YWNrZ3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIFBsYXRmb3JtQ0FMYXllckNvY29h
OjpiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogewogICAgIHJldHVybiBbbV9sYXllciBiYWNrZ3Jv
dW5kQ29sb3JdOwogfQogCi12b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRCYWNrZ3JvdW5k
Q29sb3IoY29uc3QgQ29sb3ImIHZhbHVlKQordm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0
QmFja2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgdmFsdWUpCiB7CiAgICAgQ0dGbG9h
dCBjb21wb25lbnRzWzRdOwogICAgIHZhbHVlLmdldFJHQkEoY29tcG9uZW50c1swXSwgY29tcG9u
ZW50c1sxXSwgY29tcG9uZW50c1syXSwgY29tcG9uZW50c1szXSk7CkBAIC03MTksNyArNzE5LDcg
QEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0Qm9yZGVyV2lkdGgoZmxvYXQgdmFsdWUp
CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCi12b2lkIFBsYXRmb3JtQ0FMYXll
ckNvY29hOjpzZXRCb3JkZXJDb2xvcihjb25zdCBDb2xvciYgdmFsdWUpCit2b2lkIFBsYXRmb3Jt
Q0FMYXllckNvY29hOjpzZXRCb3JkZXJDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIHZhbHVlKQog
ewogICAgIGlmICh2YWx1ZS5pc1ZhbGlkKCkpIHsKICAgICAgICAgQ0dGbG9hdCBjb21wb25lbnRz
WzRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQppbmRleCAxMjIxYzM4ZWNmNjRl
MDVkMDIwODZhNWI1ZWI1M2RjMWNlODI2NTgzLi4yZDhjMmMxZjQ5ZGZmOTY5MmU5MjFkNWI0N2U0
OWY0YTMxMGY0OTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQpAQCAtMTM3
LDcgKzEzNyw3IEBAIC0gKHZvaWQpaW52YWxpZGF0ZQogCiAtICh2b2lkKXNldEJvcmRlckNvbG9y
OihDR0NvbG9yUmVmKWJvcmRlckNvbG9yCiB7Ci0gICAgX3RpbGVDb250cm9sbGVyLT5zZXRUaWxl
RGVidWdCb3JkZXJDb2xvcihDb2xvcihib3JkZXJDb2xvcikpOworICAgIF90aWxlQ29udHJvbGxl
ci0+c2V0VGlsZURlYnVnQm9yZGVyQ29sb3IoT3B0aW9uYWxSR0JBKGJvcmRlckNvbG9yKSk7CiB9
CiAKIC0gKHZvaWQpc2V0Qm9yZGVyV2lkdGg6KENHRmxvYXQpYm9yZGVyV2lkdGgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5p
bWF0aW9uV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9Q
bGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcAppbmRleCA2MmEyNGZjMDdjMTA0NTY3MTcyZGQ2OTg4
NDQ0MjZiNjYxNWNlYmM0Li4xMGMwYmQwNTg0NWJjMGQ2M2ZhMjE1MDA4YmMwNzI1NTczZjQ0MDU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxh
dGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwCkBAIC0zNjQsNyArMzY0LDcg
QEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpzZXRGcm9tVmFsdWUoY29uc3QgRmxvYXRQ
b2ludDNEJiB2YWx1ZSkKICAgICBDQUNGQW5pbWF0aW9uU2V0RnJvbVZhbHVlKG1fYW5pbWF0aW9u
LmdldCgpLCB2LmdldCgpKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpzZXRG
cm9tVmFsdWUoY29uc3QgV2ViQ29yZTo6Q29sb3ImIHZhbHVlKQordm9pZCBQbGF0Zm9ybUNBQW5p
bWF0aW9uV2luOjpzZXRGcm9tVmFsdWUoY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJiB2YWx1
ZSkKIHsKICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljKQogICAgICAgICByZXR1cm47
CkBAIC00MTUsNyArNDE1LDcgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpzZXRUb1Zh
bHVlKGNvbnN0IEZsb2F0UG9pbnQzRCYgdmFsdWUpCiAgICAgQ0FDRkFuaW1hdGlvblNldFRvVmFs
dWUobV9hbmltYXRpb24uZ2V0KCksIHYuZ2V0KCkpOwogfQogCi12b2lkIFBsYXRmb3JtQ0FBbmlt
YXRpb25XaW46OnNldFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6Q29sb3ImIHZhbHVlKQordm9pZCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFs
UkdCQSYgdmFsdWUpCiB7CiAgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDgyLDcgKzQ4Miw3IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbldp
bjo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxGbG9hdFBvaW50M0Q+JiB2YWx1ZSkKICAgICBDQUNG
QW5pbWF0aW9uU2V0VmFsdWVzKG1fYW5pbWF0aW9uLmdldCgpLCBhcnJheS5nZXQoKSk7CiB9CiAK
LXZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb2xvcj4mIHZhbHVlKQordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpzZXRWYWx1
ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6Ok9wdGlvbmFsUkdCQT4mIHZhbHVlKQogewogICAgIGlm
IChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5p
bWF0aW9uV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxh
dGZvcm1DQUFuaW1hdGlvbldpbi5oCmluZGV4IDQ5NjViODM5YmU1ZmEzZDY4NTAxZGRlMDdmMjkx
MDdkYWJjNjRlYzcuLmJjNzZkYjNmYjEwODk4NjU4NGFkZGRmMjkwZWVhYjJiNGZhYzcyNjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBQW5pbWF0aW9uV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uaApAQCAtODgsMTQgKzg4LDE0IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbVZhbHVlKGZsb2F0KSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0RnJvbVZhbHVlKGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0
cml4Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEZyb21WYWx1ZShjb25zdCBGbG9h
dFBvaW50M0QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbVZhbHVlKGNvbnN0
IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldEZyb21WYWx1
ZShjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0RnJvbVZhbHVlKGNvbnN0IEZpbHRlck9wZXJhdGlvbiosIGludCBpbnRlcm5hbEZpbHRl
clByb3BlcnR5SW5kZXgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb3B5RnJvbVZhbHVl
RnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFs
IHZvaWQgc2V0VG9WYWx1ZShmbG9hdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFRv
VmFsdWUoY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBGbG9hdFBvaW50M0QmKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpDb2xvciYpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFs
UkdCQSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IEZpbHRl
ck9wZXJhdGlvbiosIGludCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBjb3B5VG9WYWx1ZUZyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlv
biYpIG92ZXJyaWRlOwogCkBAIC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPGZsb2F0PiYpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0
cml4PiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9y
PEZsb2F0UG9pbnQzRD4mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpDb2xvcj4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpPcHRpb25hbFJHQkE+Jikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8UmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4+JiwgaW50IGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGNvcHlWYWx1ZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24m
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAppbmRleCA0NTY5MmNmYmFh
OGIwYjM1MWY2MGMwZTI5Yzc0ZjZiMWMzNzlkODMzLi4xMzVkMzA5ZGZiNTU1ZDJkYjM4N2YyN2U2
YjdmOTBlMGRiNWU0NGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNTA3LDEy
ICs1MDcsMTIgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW46OnNldE1hZ25pZmljYXRpb25GaWx0
ZXIoRmlsdGVyVHlwZSB2YWx1ZSkKICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQogCi1Db2xvciBQ
bGF0Zm9ybUNBTGF5ZXJXaW46OmJhY2tncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEg
UGxhdGZvcm1DQUxheWVyV2luOjpiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogewogICAgIHJldHVy
biBDQUNGTGF5ZXJHZXRCYWNrZ3JvdW5kQ29sb3IobV9sYXllci5nZXQoKSk7CiB9CiAKLXZvaWQg
UGxhdGZvcm1DQUxheWVyV2luOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIHZhbHVl
KQordm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW46OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBPcHRp
b25hbFJHQkEmIHZhbHVlKQogewogICAgIENHRmxvYXQgY29tcG9uZW50c1s0XTsKICAgICB2YWx1
ZS5nZXRSR0JBKGNvbXBvbmVudHNbMF0sIGNvbXBvbmVudHNbMV0sIGNvbXBvbmVudHNbMl0sIGNv
bXBvbmVudHNbM10pOwpAQCAtNTMwLDcgKzUzMCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyV2lu
OjpzZXRCb3JkZXJXaWR0aChmbG9hdCB2YWx1ZSkKICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQog
Ci12b2lkIFBsYXRmb3JtQ0FMYXllcldpbjo6c2V0Qm9yZGVyQ29sb3IoY29uc3QgQ29sb3ImIHZh
bHVlKQordm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW46OnNldEJvcmRlckNvbG9yKGNvbnN0IE9wdGlv
bmFsUkdCQSYgdmFsdWUpCiB7CiAgICAgQ0dGbG9hdCBjb21wb25lbnRzWzRdOwogICAgIHZhbHVl
LmdldFJHQkEoY29tcG9uZW50c1swXSwgY29tcG9uZW50c1sxXSwgY29tcG9uZW50c1syXSwgY29t
cG9uZW50c1szXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmgKaW5kZXggNmM1NzVlNjExNjJmZDNh
OGVhMjFlZWE4NDNjN2E2MmI0NDA3N2FiNS4uZjFmMmE0ZGMyNDk4MmVhOTQwNWQ3NzRkZDgxMGU1
ZTZmNjdjODViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaApAQCAtMTAyLDEyICsxMDIsMTIg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRNaW5pZmljYXRpb25GaWx0ZXIoRmlsdGVy
VHlwZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldE1hZ25pZmljYXRpb25GaWx0ZXIo
RmlsdGVyVHlwZSkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIENvbG9yIGJhY2tncm91bmRDb2xv
cigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3Io
Y29uc3QgQ29sb3ImKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBiYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3Vu
ZENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lk
IHNldEJvcmRlcldpZHRoKGZsb2F0KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRC
b3JkZXJDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRC
b3JkZXJDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwg
ZmxvYXQgb3BhY2l0eSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFj
aXR5KGZsb2F0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJu
YWwuY3BwCmluZGV4IDU3NjEzOTI5ZTAzNTA4ZjVmMDAyZTFjMzQyMGM4N2Y3ZjZlZTgwZjUuLjFh
OGRlYjlhMTgyM2Q1MjliMDg5MjJjOWJiNmU5MjlkNWQ0ODdlNDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRl
cm5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1Bs
YXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgUGxh
dGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OmRpc3BsYXlDYWxsYmFjayhDQUNGTGF5ZXJSZWYgY2FM
YXllciwgQ0dDb250ZXh0CiAgICAgICAgIGZvbnQudXBkYXRlKDApOwogCiAgICAgICAgIEdyYXBo
aWNzQ29udGV4dCBjZyhjb250ZXh0KTsKLSAgICAgICAgY2cuc2V0RmlsbENvbG9yKENvbG9yOjpi
bGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNnLnNldEZpbGxDb2xvcihPcHRp
b25hbFJHQkE6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgY2cuZHJhd1Rl
eHQoZm9udCwgVGV4dFJ1bih0ZXh0KSwgSW50UG9pbnQoYUJvdW5kcy5vcmlnaW4ueCArIDUsIGFC
b3VuZHMub3JpZ2luLnkgKyAxNykpOwogCiAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUo
Y29udGV4dCk7ICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAppbmRleCBiZTk3MDEwYjg2ZjMwOGEx
ZWJlYWM3MTMwZTFlM2EwYjVkZGJiM2Y2Li5jOGE2YzdiYzVjN2YzZTgxNjNjNWRlZmM1YTZmOWZj
Zjg5NzA0M2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9DYWlyb1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgY29w
eUNvbnRleHRQcm9wZXJ0aWVzKGNhaXJvX3QqIHNyY0NyLCBjYWlyb190KiBkc3RDcikKICAgICBj
YWlyb19zZXRfZmlsbF9ydWxlKGRzdENyLCBjYWlyb19nZXRfZmlsbF9ydWxlKHNyY0NyKSk7CiB9
CiAKLXZvaWQgc2V0U291cmNlUkdCQUZyb21Db2xvcihjYWlyb190KiBjb250ZXh0LCBjb25zdCBD
b2xvciYgY29sb3IpCit2b2lkIHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY2Fpcm9fdCogY29udGV4
dCwgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICBmbG9hdCByZWQsIGdyZWVuLCBi
bHVlLCBhbHBoYTsKICAgICBjb2xvci5nZXRSR0JBKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWly
b1V0aWxpdGllcy5oCmluZGV4IGFkYWIwZTVjNzgzODZiODkyYWI1YjljNDMxYTY3ZGQxMzllYmRm
ODUuLjI2MTQyYzc3NWU2N2Q1NTEwZWZhMzg1M2Q5N2FjMWE0MTFhOGYxMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRp
ZXMuaApAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBZmZp
bmVUcmFuc2Zvcm07Ci1jbGFzcyBDb2xvcjsKK2NsYXNzIE9wdGlvbmFsUkdCQTsKIGNsYXNzIEZs
b2F0UmVjdDsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBJbnRTaXplOwpAQCAtNDYsNyArNDYs
NyBAQCBjbGFzcyBJbnRSZWN0OwogY2xhc3MgUGF0aDsKIAogdm9pZCBjb3B5Q29udGV4dFByb3Bl
cnRpZXMoY2Fpcm9fdCogc3JjQ3IsIGNhaXJvX3QqIGRzdENyKTsKLXZvaWQgc2V0U291cmNlUkdC
QUZyb21Db2xvcihjYWlyb190KiwgY29uc3QgQ29sb3ImKTsKK3ZvaWQgc2V0U291cmNlUkdCQUZy
b21Db2xvcihjYWlyb190KiwgY29uc3QgT3B0aW9uYWxSR0JBJik7CiB2b2lkIGFwcGVuZFBhdGhU
b0NhaXJvQ29udGV4dChjYWlyb190KiB0bywgY2Fpcm9fdCogZnJvbSk7CiB2b2lkIHNldFBhdGhP
bkNhaXJvQ29udGV4dChjYWlyb190KiB0bywgY2Fpcm9fdCogZnJvbSk7CiB2b2lkIGFwcGVuZFdl
YkNvcmVQYXRoVG9DYWlyb0NvbnRleHQoY2Fpcm9fdCogY29udGV4dCwgY29uc3QgUGF0aCYgcGF0
aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggZjhjN2M5NjBmZDlmOWRmNTEz
NWVlYjI0OTIzNmQ5Yjc0OGNlZmRkNi4uNDQ1MDczMmEyYjAyNTBhMWY4MzMzNThhMjg5OGIzMWJh
ZDdlNTZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtNjYsNyArNjYsNyBA
QCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBBIGhlbHBl
ciB3aGljaCBxdWlja2x5IGZpbGxzIGEgcmVjdGFuZ2xlIHdpdGggYSBzaW1wbGUgY29sb3IgZmls
bC4KLXN0YXRpYyBpbmxpbmUgdm9pZCBmaWxsUmVjdFdpdGhDb2xvcihjYWlyb190KiBjciwgY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCitzdGF0aWMgaW5saW5lIHZv
aWQgZmlsbFJlY3RXaXRoQ29sb3IoY2Fpcm9fdCogY3IsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICBpZiAoIWNvbG9yLmFscGhhKCkgJiYg
Y2Fpcm9fZ2V0X29wZXJhdG9yKGNyKSA9PSBDQUlST19PUEVSQVRPUl9PVkVSKQogICAgICAgICBy
ZXR1cm47CkBAIC0yODYsNyArMjg2LDcgQEAgc3RhdGljIHZvaWQgZHJhd0xpbmVPbkNhaXJvQ29u
dGV4dChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY2Fpcm9fdCogY28KICAgICBp
ZiAoc3R5bGUgPT0gTm9TdHJva2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IENvbG9y
JiBzdHJva2VDb2xvciA9IGdyYXBoaWNzQ29udGV4dC0+c3Ryb2tlQ29sb3IoKTsKKyAgICBjb25z
dCBPcHRpb25hbFJHQkEmIHN0cm9rZUNvbG9yID0gZ3JhcGhpY3NDb250ZXh0LT5zdHJva2VDb2xv
cigpOwogICAgIGludCBzdHJva2VUaGlja25lc3MgPSBmbG9vcmYoZ3JhcGhpY3NDb250ZXh0LT5z
dHJva2VUaGlja25lc3MoKSk7CiAgICAgaWYgKGdyYXBoaWNzQ29udGV4dC0+c3Ryb2tlVGhpY2tu
ZXNzKCkgPCAxKQogICAgICAgICBzdHJva2VUaGlja25lc3MgPSAxOwpAQCAtNDUzLDcgKzQ1Myw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CiAgICAgc2hhZG93QW5kRmlsbEN1cnJlbnRDYWlyb1BhdGgodGhpcyk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9y
JiBjb2xvciwgQ29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IsIENvbG9yU3BhY2Up
CiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTA1
LDcgKzUwNSw3IEBAIEludFJlY3QgR3JhcGhpY3NDb250ZXh0OjpjbGlwQm91bmRzKCkgY29uc3QK
ICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QoeDEsIHkxLCB4MiAtIHgxLCB5
MiAtIHkxKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBhZGp1c3RGb2N1c1JpbmdDb2xvcihD
b2xvciYgY29sb3IpCitzdGF0aWMgaW5saW5lIHZvaWQgYWRqdXN0Rm9jdXNSaW5nQ29sb3IoT3B0
aW9uYWxSR0JBJiBjb2xvcikKIHsKICNpZiAhUExBVEZPUk0oR1RLKQogICAgIC8vIEZvcmNlIHRo
ZSBhbHBoYSB0byA1MCUuICBUaGlzIG1hdGNoZXMgd2hhdCB0aGUgTWFjIGRvZXMgd2l0aCBvdXRs
aW5lIHJpbmdzLgpAQCAtNTMzLDExICs1MzMsMTEgQEAgc3RhdGljIGlubGluZSBTdHJva2VTdHls
ZSBmb2N1c1JpbmdTdHJva2VTdHlsZSgpCiAjZW5kaWYKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYgcGF0aCwgaW50IHdpZHRoLCBpbnQgLyogb2Zm
c2V0ICovLCBjb25zdCBDb2xvciYgY29sb3IpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0Zv
Y3VzUmluZyhjb25zdCBQYXRoJiBwYXRoLCBpbnQgd2lkdGgsIGludCAvKiBvZmZzZXQgKi8sIGNv
bnN0IE9wdGlvbmFsUkdCQSYgY29sb3IpCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkcmF3
IHBhdGhzIHRoYXQgZGVzY3JpYmUgYSByZWN0YW5nbGUgd2l0aCByb3VuZGVkIGNvcm5lcnMKICAg
ICAvLyBzbyBhcyB0byBiZSBjb25zaXN0ZW50IHdpdGggaG93IHdlIGRyYXcgcmVjdGFuZ3VsYXIg
Zm9jdXMgcmluZ3MuCi0gICAgQ29sb3IgcmluZ0NvbG9yID0gY29sb3I7CisgICAgT3B0aW9uYWxS
R0JBIHJpbmdDb2xvciA9IGNvbG9yOwogICAgIGFkanVzdEZvY3VzUmluZ0NvbG9yKHJpbmdDb2xv
cik7CiAgICAgYWRqdXN0Rm9jdXNSaW5nTGluZVdpZHRoKHdpZHRoKTsKIApAQCAtNTUxLDcgKzU1
MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmIHBh
dGgsIGludCB3aWR0aCwgaW50IC8qIG9mZnNldCAqCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxJbnRS
ZWN0PiYgcmVjdHMsIGludCB3aWR0aCwgaW50IC8qIG9mZnNldCAqLywgY29uc3QgQ29sb3ImIGNv
bG9yKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPElu
dFJlY3Q+JiByZWN0cywgaW50IHdpZHRoLCBpbnQgLyogb2Zmc2V0ICovLCBjb25zdCBPcHRpb25h
bFJHQkEmIGNvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTU3NSw3ICs1NzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3Vz
UmluZyhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgd2lkdGgsIGludAogICAgICAg
ICBhcHBlbmRXZWJDb3JlUGF0aFRvQ2Fpcm9Db250ZXh0KGNyLCBwYXRoKTsKICAgICB9CiAjZW5k
aWYKLSAgICBDb2xvciByaW5nQ29sb3IgPSBjb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgcmluZ0Nv
bG9yID0gY29sb3I7CiAgICAgYWRqdXN0Rm9jdXNSaW5nQ29sb3IocmluZ0NvbG9yKTsKICAgICBh
ZGp1c3RGb2N1c1JpbmdMaW5lV2lkdGgod2lkdGgpOwogICAgIHNldFNvdXJjZVJHQkFGcm9tQ29s
b3IoY3IsIHJpbmdDb2xvcik7CkBAIC01OTgsNyArNTk4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50IHdpZHRo
LCBpbnQKIEZsb2F0UmVjdCBHcmFwaGljc0NvbnRleHQ6OmNvbXB1dGVMaW5lQm91bmRzRm9yVGV4
dChjb25zdCBGbG9hdFBvaW50JiBvcmlnaW4sIGZsb2F0IHdpZHRoLCBib29sIHByaW50aW5nKQog
ewogICAgIGJvb2wgZHVtbXlCb29sOwotICAgIENvbG9yIGR1bW15Q29sb3I7CisgICAgT3B0aW9u
YWxSR0JBIGR1bW15Q29sb3I7CiAgICAgcmV0dXJuIGNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFs
aWFzaW5nTW9kZUZvclRleHQob3JpZ2luLCB3aWR0aCwgcHJpbnRpbmcsIGR1bW15Qm9vbCwgZHVt
bXlDb2xvcik7CiB9CiAKQEAgLTYxOCw3ICs2MTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRGFzaEFycmF5
JgogICAgIGlmICh3aWR0aHMuc2l6ZSgpIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIENv
bG9yIGxvY2FsU3Ryb2tlQ29sb3Ioc3Ryb2tlQ29sb3IoKSk7CisgICAgT3B0aW9uYWxSR0JBIGxv
Y2FsU3Ryb2tlQ29sb3Ioc3Ryb2tlQ29sb3IoKSk7CiAKICAgICBib29sIHNob3VsZEFudGlhbGlh
c0xpbmU7CiAgICAgRmxvYXRSZWN0IGJvdW5kcyA9IGNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFs
aWFzaW5nTW9kZUZvclRleHQocG9pbnQsIHdpZHRocy5sYXN0KCksIHByaW50aW5nLCBzaG91bGRB
bnRpYWxpYXNMaW5lLCBsb2NhbFN0cm9rZUNvbG9yKTsKQEAgLTcyMSwxMyArNzIxLDEzIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0Ojp0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkKICAgICBtX2Rh
dGEtPnRyYW5zbGF0ZSh4LCB5KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtRmlsbENvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmLCBDb2xvclNwYWNl
KQogewogICAgIC8vIENhaXJvIGNvbnRleHRzIGNhbid0IGhvbGQgc2VwYXJhdGUgZmlsbCBhbmQg
c3Ryb2tlIGNvbG9ycwogICAgIC8vIHNvIHdlIHNldCB0aGVtIGp1c3QgYmVmb3JlIHdlIGFjdHVh
bGx5IGZpbGwgb3Igc3Ryb2tlCiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9y
bVN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYsIENvbG9yU3Bh
Y2UpCiB7CiAgICAgLy8gQ2Fpcm8gY29udGV4dHMgY2FuJ3QgaG9sZCBzZXBhcmF0ZSBmaWxsIGFu
ZCBzdHJva2UgY29sb3JzCiAgICAgLy8gc28gd2Ugc2V0IHRoZW0ganVzdCBiZWZvcmUgd2UgYWN0
dWFsbHkgZmlsbCBvciBzdHJva2UKQEAgLTc5NSw3ICs3OTUsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogICAgIG1fZGF0
YS0+c2V0Q1RNKHRyYW5zZm9ybSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0
Zm9ybVNoYWRvdyhGbG9hdFNpemUgY29uc3QmIHNpemUsIGZsb2F0LCBDb2xvciBjb25zdCYsIENv
bG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coRmxvYXRT
aXplIGNvbnN0JiBzaXplLCBmbG9hdCwgT3B0aW9uYWxSR0JBIGNvbnN0JiwgQ29sb3JTcGFjZSkK
IHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMDM3
LDcgKzEwMzcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBGbG9hdFJl
Y3QmIHIpCiAgICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgc2F2ZWRGaWxsUnVsZSk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9h
dFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdCYgcmVjdCwgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvciwgQ29sb3JTcGFjZSkKIHsK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMDU1LDcg
KzEwNTUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsUm91bmRlZFJlY3Qo
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29ucwogICAgIGNhaXJvX3Jlc3RvcmUoY3Ip
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJl
Y3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xv
ciwgQ29sb3JTcGFjZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFjb2xvci5p
c1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggNjEx
ZjRjZDZlZjBlMWNhMzIxODFmNjA3NGExYmNmYTgzOTIzNzYyNS4uYWYyODU5Y2VkNDdkNTUxZWJh
MzAxMTQ3NDgzMTBjNGQwZWFlMjk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTE3Nyw4
ICsxNzcsOCBAQCB2b2lkIEltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2Uo
Y29uc3QgVmVjdG9yPGludD4mIGxvb2tVcFRhYmxlKQogICAgICAgICB1bnNpZ25lZCogcm93ID0g
cmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihkYXRhU3JjICsgc3RyaWRlICogeSk7CiAg
ICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgbV9zaXplLndpZHRoKCk7IHgrKykgewogICAgICAg
ICAgICAgdW5zaWduZWQqIHBpeGVsID0gcm93ICsgeDsKLSAgICAgICAgICAgIENvbG9yIHBpeGVs
Q29sb3IgPSBjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQigqcGl4ZWwpOwotICAgICAgICAgICAg
cGl4ZWxDb2xvciA9IENvbG9yKGxvb2tVcFRhYmxlW3BpeGVsQ29sb3IucmVkKCldLAorICAgICAg
ICAgICAgT3B0aW9uYWxSR0JBIHBpeGVsQ29sb3IgPSBjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJH
QigqcGl4ZWwpOworICAgICAgICAgICAgcGl4ZWxDb2xvciA9IE9wdGlvbmFsUkdCQShsb29rVXBU
YWJsZVtwaXhlbENvbG9yLnJlZCgpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
b29rVXBUYWJsZVtwaXhlbENvbG9yLmdyZWVuKCldLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvb2tVcFRhYmxlW3BpeGVsQ29sb3IuYmx1ZSgpXSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwaXhlbENvbG9yLmFscGhhKCkpOwpAQCAtMjUzLDcgKzI1Myw3IEBAIFBh
c3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiBy
ZWN0LCBjb25zdCBJbWFnZUJ1ZmZlCiAgICAgICAgICAgICBpbnQgYmFzZXggPSB4ICogNDsKICAg
ICAgICAgICAgIHVuc2lnbmVkKiBwaXhlbCA9IHJvdyArIHggKyBvcmlnaW54OwogCi0gICAgICAg
ICAgICAvLyBBdm9pZCBjYWxsaW5nIENvbG9yOjpjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQigp
IGJlY2F1c2Ugb25lCisgICAgICAgICAgICAvLyBBdm9pZCBjYWxsaW5nIE9wdGlvbmFsUkdCQTo6
Y29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKSBiZWNhdXNlIG9uZQogICAgICAgICAgICAgLy8g
ZnVuY3Rpb24gY2FsbCBwZXIgcGl4ZWwgaXMgdG9vIGV4cGVuc2l2ZS4KICAgICAgICAgICAgIHVu
c2lnbmVkIGFscGhhID0gKCpwaXhlbCAmIDB4RkYwMDAwMDApID4+IDI0OwogICAgICAgICAgICAg
dW5zaWduZWQgcmVkID0gKCpwaXhlbCAmIDB4MDBGRjAwMDApID4+IDE2OwpAQCAtMzM1LDcgKzMz
NSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVk
LCBVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBjCiAgICAgICAgICAgICBpbnQgYmFzZXggPSB4
ICogNDsKICAgICAgICAgICAgIHVuc2lnbmVkKiBwaXhlbCA9IHJvdyArIHggKyBkZXN0eDsKIAot
ICAgICAgICAgICAgLy8gQXZvaWQgY2FsbGluZyBDb2xvcjo6cHJlbXVsdGlwbGllZEFSR0JGcm9t
Q29sb3IoKSBiZWNhdXNlIG9uZQorICAgICAgICAgICAgLy8gQXZvaWQgY2FsbGluZyBPcHRpb25h
bFJHQkE6OnByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yKCkgYmVjYXVzZSBvbmUKICAgICAgICAg
ICAgIC8vIGZ1bmN0aW9uIGNhbGwgcGVyIHBpeGVsIGlzIHRvbyBleHBlbnNpdmUuCiAgICAgICAg
ICAgICB1bnNpZ25lZCByZWQgPSBzcmNSb3dzW2Jhc2V4XTsKICAgICAgICAgICAgIHVuc2lnbmVk
IGdyZWVuID0gc3JjUm93c1tiYXNleCArIDFdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3Bw
CmluZGV4IDBjZDI1YzkzNzYwNjQ1MTJlOTE3NjQ2Njc0ZWNlYjJmYmJhMDg3NjAuLjc5ZDM0YTk0
YjdmMDMxODhiOGEyYzU5YmE3MmRlYmZjM2UyOGY5ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRD
YWlyby5jcHAKQEAgLTI2Miw3ICsyNjIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVkdWNlU291
cmNlQnlBbHBoYShjYWlyb190KiBjciwgZmxvYXQgYWxwaGEpCiAgICAgY2Fpcm9fcG9wX2dyb3Vw
X3RvX3NvdXJjZShjcik7CiB9CiAKLXN0YXRpYyB2b2lkIHByZXBhcmVDYWlyb0NvbnRleHRTb3Vy
Y2UoY2Fpcm9fdCogY3IsIFBhdHRlcm4qIHBhdHRlcm4sIEdyYWRpZW50KiBncmFkaWVudCwgY29u
c3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBnbG9iYWxBbHBoYSkKK3N0YXRpYyB2b2lkIHByZXBhcmVD
YWlyb0NvbnRleHRTb3VyY2UoY2Fpcm9fdCogY3IsIFBhdHRlcm4qIHBhdHRlcm4sIEdyYWRpZW50
KiBncmFkaWVudCwgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvciwgZmxvYXQgZ2xvYmFsQWxwaGEp
CiB7CiAgICAgaWYgKHBhdHRlcm4pIHsKICAgICAgICAgUmVmUHRyPGNhaXJvX3BhdHRlcm5fdD4g
Y2Fpcm9QYXR0ZXJuKGFkb3B0UmVmKHBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihBZmZp
bmVUcmFuc2Zvcm0oKSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKaW5kZXggYjNmMjFlZjc3MDBlZTZkNTA2Y2FjNzQz
N2JmMWY4OGEzYmM2NjQ1MC4uODJjODYwMGEzNGMyMzkxZTg3OTY4Mjg1YmE0ZTY3ZDNkYjQ1ZmUz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFw
SW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0
bWFwSW1hZ2VDRy5jcHAKQEAgLTE2Myw5ICsxNjMsOSBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVj
a0ZvclNvbGlkQ29sb3IoKQogICAgICAgICBDR1JlY3QgZGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0
TWFrZSgwLCAwLCAxLCAxKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRl
eHQuZ2V0KCksIGRlc3RpbmF0aW9uUmVjdCwgaW1hZ2UpOwogICAgICAgICBpZiAoIXBpeGVsWzNd
KQotICAgICAgICAgICAgbV9zb2xpZENvbG9yID0gQ29sb3IoMCwgMCwgMCwgMCk7CisgICAgICAg
ICAgICBtX3NvbGlkQ29sb3IgPSBPcHRpb25hbFJHQkEoMCwgMCwgMCwgMCk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIG1fc29saWRDb2xvciA9IENvbG9yKHBpeGVsWzBdICogMjU1IC8gcGl4
ZWxbM10sIHBpeGVsWzFdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxb
M10sIHBpeGVsWzNdKTsKKyAgICAgICAgICAgIG1fc29saWRDb2xvciA9IE9wdGlvbmFsUkdCQShw
aXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhl
bFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7CiAKICAgICAgICAgbV9pc1NvbGlkQ29s
b3IgPSB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0NvbG9yQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JDRy5jcHAKaW5kZXggOGE3ZmViZWQ1NDA4MzdlZDEyMzAwZDdiMjhiMzdiYWI3ODZm
ZmYzNS4uZDRiNzFiM2Q1Yzg0NGQ3YjZlOWNmMmYwY2NlMzZjMzBkNTZmOWU2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKQEAgLTU1LDcg
KzU1LDcgQEAgc3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ0dDb2xvcldpdGhEZXZpY2VSR0JBKENH
Q29sb3JSZWYgc291cmNlQ29sb3IpCiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCi1Db2xv
cjo6Q29sb3IoQ0dDb2xvclJlZiBjb2xvcikKK09wdGlvbmFsUkdCQTo6T3B0aW9uYWxSR0JBKENH
Q29sb3JSZWYgY29sb3IpCiB7CiAgICAgaWYgKCFjb2xvcikgewogICAgICAgICBtX2NvbG9yID0g
MDsKQEAgLTk5LDI1ICs5OSwyNSBAQCBDb2xvcjo6Q29sb3IoQ0dDb2xvclJlZiBjb2xvcikKICAg
ICBtX3ZhbGlkID0gdHJ1ZTsKIH0KIAotc3RhdGljIENHQ29sb3JSZWYgbGVha0NHQ29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCitzdGF0aWMgQ0dDb2xvclJl
ZiBsZWFrQ0dDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UpCiB7CiAgICAgQ0dGbG9hdCBjb21wb25lbnRzWzRdOwogICAgIGNvbG9yLmdldFJHQkEo
Y29tcG9uZW50c1swXSwgY29tcG9uZW50c1sxXSwgY29tcG9uZW50c1syXSwgY29tcG9uZW50c1sz
XSk7CiAgICAgcmV0dXJuIENHQ29sb3JDcmVhdGUoY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3Bh
Y2UpLCBjb21wb25lbnRzKTsKIH0KIAotdGVtcGxhdGU8Q29sb3JTcGFjZSBjb2xvclNwYWNlPiBz
dGF0aWMgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3RlbXBs
YXRlPENvbG9yU3BhY2UgY29sb3JTcGFjZT4gc3RhdGljIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xv
cihjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yKQogewogICAgIHN3aXRjaCAoY29sb3IucmdiKCkp
IHsKLSAgICBjYXNlIENvbG9yOjp0cmFuc3BhcmVudDogeworICAgIGNhc2UgT3B0aW9uYWxSR0JB
Ojp0cmFuc3BhcmVudDogewogICAgICAgICBzdGF0aWMgQ0dDb2xvclJlZiB0cmFuc3BhcmVudENH
Q29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvciwgY29sb3JTcGFjZSk7CiAgICAgICAgIHJldHVybiB0
cmFuc3BhcmVudENHQ29sb3I7CiAgICAgfQotICAgIGNhc2UgQ29sb3I6OmJsYWNrOiB7CisgICAg
Y2FzZSBPcHRpb25hbFJHQkE6OmJsYWNrOiB7CiAgICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIGJs
YWNrQ0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yLCBjb2xvclNwYWNlKTsKICAgICAgICAgcmV0
dXJuIGJsYWNrQ0dDb2xvcjsKICAgICB9Ci0gICAgY2FzZSBDb2xvcjo6d2hpdGU6IHsKKyAgICBj
YXNlIE9wdGlvbmFsUkdCQTo6d2hpdGU6IHsKICAgICAgICAgc3RhdGljIENHQ29sb3JSZWYgd2hp
dGVDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IsIGNvbG9yU3BhY2UpOwogICAgICAgICByZXR1
cm4gd2hpdGVDR0NvbG9yOwogICAgIH0KQEAgLTE0NSw3ICsxNDUsNyBAQCB0ZW1wbGF0ZTxDb2xv
clNwYWNlIGNvbG9yU3BhY2U+IHN0YXRpYyBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3Qg
Q29sb3ImIGNvbAogICAgIHJldHVybiBuZXdDR0NvbG9yOwogfQogCi1DR0NvbG9yUmVmIGNhY2hl
ZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCitDR0Nv
bG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvciwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlKQogewogICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewogICAgIGNhc2UgQ29s
b3JTcGFjZURldmljZVJHQjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCAwODBmNzJmNDM4NjM1YWE5
NmRkM2IxY2ExYWI1YTk3ZTdhZTMzMjI4Li4wMTNlYWQ0MDRjOTc2NmU5ODhiMzI5NTgzZWNhZWQ1
MjY1NjRlNzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC02MywxMiArNjMsMTIgQEAgdXNpbmcg
V1RGOjpHZW5lcmljSGFzaFRyYWl0czsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
dm9pZCBzZXRDR0ZpbGxDb2xvcihDR0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgQ29sb3ImIGNv
bG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCitzdGF0aWMgdm9pZCBzZXRDR0ZpbGxDb2xvcihD
R0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvciwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlKQogewogICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjb250
ZXh0LCBjYWNoZWRDR0NvbG9yKGNvbG9yLCBjb2xvclNwYWNlKSk7CiB9CiAKLXN0YXRpYyB2b2lk
IHNldENHU3Ryb2tlQ29sb3IoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENvbG9yJiBjb2xv
ciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorc3RhdGljIHZvaWQgc2V0Q0dTdHJva2VDb2xvcihD
R0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvciwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlKQogewogICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNv
bnRleHQsIGNhY2hlZENHQ29sb3IoY29sb3IsIGNvbG9yU3BhY2UpKTsKIH0KQEAgLTI2MSw3ICsy
NjEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiAKICAgICBpZiAoc3Ryb2tlU3R5bGUoKSAhPSBO
b1N0cm9rZSkgewogICAgICAgICAvLyBXZSBkbyBhIGZpbGwgb2YgZm91ciByZWN0cyB0byBzaW11
bGF0ZSB0aGUgc3Ryb2tlIG9mIGEgYm9yZGVyLgotICAgICAgICBDb2xvciBvbGRGaWxsQ29sb3Ig
PSBmaWxsQ29sb3IoKTsKKyAgICAgICAgT3B0aW9uYWxSR0JBIG9sZEZpbGxDb2xvciA9IGZpbGxD
b2xvcigpOwogICAgICAgICBpZiAob2xkRmlsbENvbG9yICE9IHN0cm9rZUNvbG9yKCkpCiAgICAg
ICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBzdHJva2VDb2xvcigpLCBzdHJva2VDb2xv
clNwYWNlKCkpOwogICAgICAgICBDR1JlY3QgcmVjdHNbNF0gPSB7CkBAIC03MjEsMTMgKzcyMSwx
MyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
KQogICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xv
ciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpm
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3Is
IENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29u
dGV4dCgpOwotICAgIENvbG9yIG9sZEZpbGxDb2xvciA9IGZpbGxDb2xvcigpOworICAgIE9wdGlv
bmFsUkdCQSBvbGRGaWxsQ29sb3IgPSBmaWxsQ29sb3IoKTsKICAgICBDb2xvclNwYWNlIG9sZENv
bG9yU3BhY2UgPSBmaWxsQ29sb3JTcGFjZSgpOwogCiAgICAgaWYgKG9sZEZpbGxDb2xvciAhPSBj
b2xvciB8fCBvbGRDb2xvclNwYWNlICE9IGNvbG9yU3BhY2UpCkBAIC03NTIsMTMgKzc1MiwxMyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBj
b25zdCBDb2xvciYgY29sb3IsIENvbG9yUwogICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0
LCBvbGRGaWxsQ29sb3IsIG9sZENvbG9yU3BhY2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNz
Q29udGV4dDo6cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYg
cmVjdCwgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQog
ewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENH
Q29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgQ29sb3Igb2xkRmls
bENvbG9yID0gZmlsbENvbG9yKCk7CisgICAgT3B0aW9uYWxSR0JBIG9sZEZpbGxDb2xvciA9IGZp
bGxDb2xvcigpOwogICAgIENvbG9yU3BhY2Ugb2xkQ29sb3JTcGFjZSA9IGZpbGxDb2xvclNwYWNl
KCk7CiAKICAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9yIHx8IG9sZENvbG9yU3BhY2UgIT0g
Y29sb3JTcGFjZSkKQEAgLTc5NCw3ICs3OTQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxh
dGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29ucwog
ICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBvbGRGaWxsQ29sb3IsIG9sZENvbG9yU3Bh
Y2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9s
ZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBPcHRp
b25hbFJHQkEmIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODEwLDcgKzgxMCw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGNvbnN0IEZsb2F0CiAgICAgICAgIHBhdGguYWRkUmVjdChyb3VuZGVkSG9sZVJlY3Qu
cmVjdCgpKTsKIAogICAgIFdpbmRSdWxlIG9sZEZpbGxSdWxlID0gZmlsbFJ1bGUoKTsKLSAgICBD
b2xvciBvbGRGaWxsQ29sb3IgPSBmaWxsQ29sb3IoKTsKKyAgICBPcHRpb25hbFJHQkEgb2xkRmls
bENvbG9yID0gZmlsbENvbG9yKCk7CiAgICAgQ29sb3JTcGFjZSBvbGRGaWxsQ29sb3JTcGFjZSA9
IGZpbGxDb2xvclNwYWNlKCk7CiAgICAgCiAgICAgc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsK
QEAgLTk0Myw3ICs5NDMsNyBAQCBzdGF0aWMgdm9pZCBhcHBseVNoYWRvd09mZnNldFdvcmthcm91
bmRJZk5lZWRlZChjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAjZW5kaWYKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYg
b2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBGbG9h
dFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvciwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTEyNjYsNyArMTI2Niw3IEBAIEZsb2F0UmVjdCBHcmFwaGljc0NvbnRl
eHQ6OnJvdW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBSb3VuZGluZ01v
CiBGbG9hdFJlY3QgR3JhcGhpY3NDb250ZXh0Ojpjb21wdXRlTGluZUJvdW5kc0ZvclRleHQoY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHdpZHRoLCBib29sIHByaW50aW5nKQogewogICAg
IGJvb2wgZHVtbXlCb29sOwotICAgIENvbG9yIGR1bW15Q29sb3I7CisgICAgT3B0aW9uYWxSR0JB
IGR1bW15Q29sb3I7CiAgICAgcmV0dXJuIGNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFzaW5n
TW9kZUZvclRleHQocG9pbnQsIHdpZHRoLCBwcmludGluZywgZHVtbXlCb29sLCBkdW1teUNvbG9y
KTsKIH0KIApAQCAtMTI4Niw3ICsxMjg2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdM
aW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IERhc2hBcnJheSYKICAg
ICBpZiAod2lkdGhzLnNpemUoKSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBDb2xvciBs
b2NhbFN0cm9rZUNvbG9yKHN0cm9rZUNvbG9yKCkpOworICAgIE9wdGlvbmFsUkdCQSBsb2NhbFN0
cm9rZUNvbG9yKHN0cm9rZUNvbG9yKCkpOwogCiAgICAgYm9vbCBzaG91bGRBbnRpYWxpYXNMaW5l
OwogICAgIEZsb2F0UmVjdCBib3VuZHMgPSBjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2lu
Z01vZGVGb3JUZXh0KHBvaW50LCB3aWR0aHMubGFzdCgpLCBwcmludGluZywgc2hvdWxkQW50aWFs
aWFzTGluZSwgbG9jYWxTdHJva2VDb2xvcik7CkBAIC0xNDQzLDcgKzE0NDMsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1UZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2Rl
RmxhZ3MgbW9kZSkKICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9y
bVN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29uc3QgT3B0aW9u
YWxSR0JBJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE0NTcsNyArMTQ1Nyw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25l
c3MpCiAgICAgQ0dDb250ZXh0U2V0TGluZVdpZHRoKHBsYXRmb3JtQ29udGV4dCgpLCBzdGQ6Om1h
eCh0aGlja25lc3MsIDAuZikpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZv
cm1GaWxsQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1GaWxsQ29sb3IoY29uc3QgT3B0aW9uYWxS
R0JBJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tCmluZGV4IGI2MDJk
MjA2ZTFjM2Y4OTNhNjliODc1MTMyZTU3YjRhMjAwNmRkNGEuLjE4YWI5MjNkZTczZDFlOGVlMTdh
Zjc3NWExM2VjOTJjNjM3MmQ2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQpAQCAtMjI3LDcgKzIy
Nyw3IEBAIHN0YXRpYyB2b2lkIHNldENHRm9udFJlbmRlcmluZ01vZGUoQ0dDb250ZXh0UmVmIGNn
Q29udGV4dCwgTlNGb250UmVuZGVyaW5nTW9kZSByCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAKLXN0YXRpYyBD
R1NpemUgZGlsYXRpb25TaXplRm9yVGV4dENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3N0YXRp
YyBDR1NpemUgZGlsYXRpb25TaXplRm9yVGV4dENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgY29s
b3IpCiB7CiAgICAgZG91YmxlIGh1ZTsKICAgICBkb3VibGUgc2F0dXJhdGlvbjsKQEAgLTM5Nyw3
ICszOTcsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgRwogCiAgICAgRmxvYXRTaXplIHNoYWRv
d09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwotICAgIENvbG9yIHNoYWRvd0NvbG9yOwor
ICAgIE9wdGlvbmFsUkdCQSBzaGFkb3dDb2xvcjsKICAgICBDb2xvclNwYWNlIHNoYWRvd0NvbG9y
U3BhY2U7CiAgICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IGNvbnRleHQtPmZpbGxDb2xv
clNwYWNlKCk7CiAgICAgY29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1
ciwgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwpAQCAtNDE1LDggKzQxNSw4IEBAIHZv
aWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBGb250KiBmb250LCBjb25zdCBHCiAgICAgaWYgKGhhc1NpbXBsZVNoYWRvdykgewogICAgICAg
ICAvLyBQYWludCBzaW1wbGUgc2hhZG93cyBvdXJzZWx2ZXMgaW5zdGVhZCBvZiByZWx5aW5nIG9u
IENHIHNoYWRvd3MsIHRvIGF2b2lkIGxvc2luZyBzdWJwaXhlbCBhbnRpYWxpYXNpbmcuCiAgICAg
ICAgIGNvbnRleHQtPmNsZWFyU2hhZG93KCk7Ci0gICAgICAgIENvbG9yIGZpbGxDb2xvciA9IGNv
bnRleHQtPmZpbGxDb2xvcigpOwotICAgICAgICBDb2xvciBzaGFkb3dGaWxsQ29sb3Ioc2hhZG93
Q29sb3IucmVkKCksIHNoYWRvd0NvbG9yLmdyZWVuKCksIHNoYWRvd0NvbG9yLmJsdWUoKSwgc2hh
ZG93Q29sb3IuYWxwaGEoKSAqIGZpbGxDb2xvci5hbHBoYSgpIC8gMjU1KTsKKyAgICAgICAgT3B0
aW9uYWxSR0JBIGZpbGxDb2xvciA9IGNvbnRleHQtPmZpbGxDb2xvcigpOworICAgICAgICBPcHRp
b25hbFJHQkEgc2hhZG93RmlsbENvbG9yKHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5n
cmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCksIHNoYWRvd0NvbG9yLmFscGhhKCkgKiBmaWxsQ29s
b3IuYWxwaGEoKSAvIDI1NSk7CiAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihzaGFkb3dG
aWxsQ29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9
IHBvaW50LngoKSArIHNoYWRvd09mZnNldC53aWR0aCgpOwogICAgICAgICAvLyBJZiBzaGFkb3dz
IGFyZSBpZ25vcmluZyB0cmFuc2Zvcm1zLCB0aGVuIHdlIGhhdmVuJ3QgYXBwbGllZCB0aGUgWSBj
b29yZGluYXRlIGZsaXAgeWV0LCBzbyBkb3duIGlzIG5lZ2F0aXZlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxp
Z2h0aW5nLmNwcAppbmRleCA4YmYzZWIzMWE1MDQ4NWE1M2IyOWVhZmE5ZGI5N2IwMTQ3MWNlYTFl
Li5mZGVjZjJhNzMwNGM3NmI0YmYwNzgzMjQxYjYwMWQ0ZTQ1M2E2MjI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlm
ZnVzZUxpZ2h0aW5nLmNwcApAQCAtMjcsMTMgKzI3LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotRkVEaWZmdXNlTGlnaHRpbmc6OkZFRGlmZnVzZUxpZ2h0aW5nKEZpbHRlciYgZmlsdGVy
LCBjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLAorRkVEaWZm
dXNlTGlnaHRpbmc6OkZFRGlmZnVzZUxpZ2h0aW5nKEZpbHRlciYgZmlsdGVyLCBjb25zdCBPcHRp
b25hbFJHQkEmIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwKICAgICBmbG9hdCBk
aWZmdXNlQ29uc3RhbnQsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0
TGVuZ3RoWSwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCiAgICAgOiBGRUxp
Z2h0aW5nKGZpbHRlciwgRGlmZnVzZUxpZ2h0aW5nLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2Nh
bGUsIGRpZmZ1c2VDb25zdGFudCwgMCwgMCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRM
ZW5ndGhZLCBsaWdodFNvdXJjZSkKIHsKIH0KIAotUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBGRURp
ZmZ1c2VMaWdodGluZzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBDb2xvciYgbGlnaHRp
bmdDb2xvciwKK1JlZjxGRURpZmZ1c2VMaWdodGluZz4gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0
ZShGaWx0ZXImIGZpbHRlciwgY29uc3QgT3B0aW9uYWxSR0JBJiBsaWdodGluZ0NvbG9yLAogICAg
IGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBrZXJuZWxV
bml0TGVuZ3RoWCwKICAgICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUGFzc1JlZlB0cjxMaWdo
dFNvdXJjZT4gbGlnaHRTb3VyY2UpCiB7CkBAIC00NCwxMiArNDQsMTIgQEAgRkVEaWZmdXNlTGln
aHRpbmc6On5GRURpZmZ1c2VMaWdodGluZygpCiB7CiB9CiAKLUNvbG9yIEZFRGlmZnVzZUxpZ2h0
aW5nOjpsaWdodGluZ0NvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBGRURpZmZ1c2VMaWdodGlu
Zzo6bGlnaHRpbmdDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbGlnaHRpbmdDb2xvcjsK
IH0KIAotYm9vbCBGRURpZmZ1c2VMaWdodGluZzo6c2V0TGlnaHRpbmdDb2xvcihjb25zdCBDb2xv
ciYgbGlnaHRpbmdDb2xvcikKK2Jvb2wgRkVEaWZmdXNlTGlnaHRpbmc6OnNldExpZ2h0aW5nQ29s
b3IoY29uc3QgT3B0aW9uYWxSR0JBJiBsaWdodGluZ0NvbG9yKQogewogICAgIGlmIChtX2xpZ2h0
aW5nQ29sb3IgPT0gbGlnaHRpbmdDb2xvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VM
aWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURp
ZmZ1c2VMaWdodGluZy5oCmluZGV4IDk4NmQwOWQ0YmJiYTU2OTNhZjlmYzRiOGU3YjE4MjkzMmFm
ZWFlY2EuLjg4ODEwMmQzZjliMzdmNDRlZGYxMjVmMDFhZDVlZjVkZWQ2NGE3ZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGln
aHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RGlmZnVzZUxpZ2h0aW5nLmgKQEAgLTMwLDEyICszMCwxMiBAQCBjbGFzcyBMaWdodFNvdXJjZTsK
IAogY2xhc3MgRkVEaWZmdXNlTGlnaHRpbmcgOiBwdWJsaWMgRkVMaWdodGluZyB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxGRURpZmZ1c2VMaWdodGluZz4gY3JlYXRlKEZpbHRlciYsIGNvbnN0
IENvbG9yJiwgZmxvYXQsIGZsb2F0LAorICAgIHN0YXRpYyBSZWY8RkVEaWZmdXNlTGlnaHRpbmc+
IGNyZWF0ZShGaWx0ZXImLCBjb25zdCBPcHRpb25hbFJHQkEmLCBmbG9hdCwgZmxvYXQsCiAgICAg
ICAgIGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOwogICAgIHZpcnR1YWwg
fkZFRGlmZnVzZUxpZ2h0aW5nKCk7CiAKLSAgICBDb2xvciBsaWdodGluZ0NvbG9yKCkgY29uc3Q7
Ci0gICAgYm9vbCBzZXRMaWdodGluZ0NvbG9yKGNvbnN0IENvbG9yJik7CisgICAgT3B0aW9uYWxS
R0JBIGxpZ2h0aW5nQ29sb3IoKSBjb25zdDsKKyAgICBib29sIHNldExpZ2h0aW5nQ29sb3IoY29u
c3QgT3B0aW9uYWxSR0JBJik7CiAKICAgICBmbG9hdCBzdXJmYWNlU2NhbGUoKSBjb25zdDsKICAg
ICBib29sIHNldFN1cmZhY2VTY2FsZShmbG9hdCk7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVh
bSYsIGludCBpbmRlbnRpb24pIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEZFRGlmZnVzZUxpZ2h0
aW5nKEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIFBh
c3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKKyAgICBGRURpZmZ1c2VMaWdodGluZyhGaWx0ZXImLCBj
b25zdCBPcHRpb25hbFJHQkEmLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0
cjxMaWdodFNvdXJjZT4pOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFk
b3cuY3BwCmluZGV4IDVlN2M5MDQ1MGY4YjA3ZDYzZjdmMjA5N2Q3NDNlOGMwYTYxMDY5NmYuLmZm
M2FjODdjNzI0NzI5MDZmMjFhNjQ5M2NkOTlkNmEyMjhlN2YxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5j
cHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotRkVEcm9w
U2hhZG93OjpGRURyb3BTaGFkb3coRmlsdGVyJiBmaWx0ZXIsIGZsb2F0IHN0ZFgsIGZsb2F0IHN0
ZFksIGZsb2F0IGR4LCBmbG9hdCBkeSwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBz
aGFkb3dPcGFjaXR5KQorRkVEcm9wU2hhZG93OjpGRURyb3BTaGFkb3coRmlsdGVyJiBmaWx0ZXIs
IGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZsb2F0IGR4LCBmbG9hdCBkeSwgY29uc3QgT3B0aW9u
YWxSR0JBJiBzaGFkb3dDb2xvciwgZmxvYXQgc2hhZG93T3BhY2l0eSkKICAgICA6IEZpbHRlckVm
ZmVjdChmaWx0ZXIpCiAgICAgLCBtX3N0ZFgoc3RkWCkKICAgICAsIG1fc3RkWShzdGRZKQpAQCAt
NDIsNyArNDIsNyBAQCBGRURyb3BTaGFkb3c6OkZFRHJvcFNoYWRvdyhGaWx0ZXImIGZpbHRlciwg
ZmxvYXQgc3RkWCwgZmxvYXQgc3RkWSwgZmxvYXQgZHgsIGZsbwogewogfQogCi1SZWY8RkVEcm9w
U2hhZG93PiBGRURyb3BTaGFkb3c6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgZmxvYXQgc3RkWCwg
ZmxvYXQgc3RkWSwgZmxvYXQgZHgsIGZsb2F0IGR5LCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3Is
IGZsb2F0IHNoYWRvd09wYWNpdHkpCitSZWY8RkVEcm9wU2hhZG93PiBGRURyb3BTaGFkb3c6OmNy
ZWF0ZShGaWx0ZXImIGZpbHRlciwgZmxvYXQgc3RkWCwgZmxvYXQgc3RkWSwgZmxvYXQgZHgsIGZs
b2F0IGR5LCBjb25zdCBPcHRpb25hbFJHQkEmIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dPcGFj
aXR5KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFRHJvcFNoYWRvdyhmaWx0ZXIsIHN0
ZFgsIHN0ZFksIGR4LCBkeSwgc2hhZG93Q29sb3IsIHNoYWRvd09wYWNpdHkpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hh
ZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNo
YWRvdy5oCmluZGV4IDhmZTE2ZTQ3MWIyOTUzMTJiODIyMzJjMzg2YmQxOGM2NWU0ZGQ3YmMuLjE4
MWIzYTFhY2U2ZjE1YmIxYjEyNjQ3YzNiZWM4NDg3MTliODk3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaApA
QCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBGRURyb3BT
aGFkb3cgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZF
RHJvcFNoYWRvdz4gY3JlYXRlKEZpbHRlciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBj
b25zdCBDb2xvciYsIGZsb2F0KTsKKyAgICBzdGF0aWMgUmVmPEZFRHJvcFNoYWRvdz4gY3JlYXRl
KEZpbHRlciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBjb25zdCBPcHRpb25hbFJHQkEm
LCBmbG9hdCk7CiAKICAgICBmbG9hdCBzdGREZXZpYXRpb25YKCkgY29uc3QgeyByZXR1cm4gbV9z
dGRYOyB9CiAgICAgdm9pZCBzZXRTdGREZXZpYXRpb25YKGZsb2F0IHN0ZFgpIHsgbV9zdGRYID0g
c3RkWDsgfQpAQCAtNDIsOCArNDIsOCBAQCBwdWJsaWM6CiAgICAgZmxvYXQgZHkoKSBjb25zdCB7
IHJldHVybiBtX2R5OyB9CiAgICAgdm9pZCBzZXREeShmbG9hdCBkeSkgeyBtX2R5ID0gZHk7IH0K
IAotICAgIENvbG9yIHNoYWRvd0NvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dDb2xvcjsg
fSAKLSAgICB2b2lkIHNldFNoYWRvd0NvbG9yKGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvcikgeyBt
X3NoYWRvd0NvbG9yID0gc2hhZG93Q29sb3I7IH0KKyAgICBPcHRpb25hbFJHQkEgc2hhZG93Q29s
b3IoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd0NvbG9yOyB9IAorICAgIHZvaWQgc2V0U2hhZG93
Q29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiBzaGFkb3dDb2xvcikgeyBtX3NoYWRvd0NvbG9yID0g
c2hhZG93Q29sb3I7IH0KIAogICAgIGZsb2F0IHNoYWRvd09wYWNpdHkoKSBjb25zdCB7IHJldHVy
biBtX3NoYWRvd09wYWNpdHk7IH0KICAgICB2b2lkIHNldFNoYWRvd09wYWNpdHkoZmxvYXQgc2hh
ZG93T3BhY2l0eSkgeyBtX3NoYWRvd09wYWNpdHkgPSBzaGFkb3dPcGFjaXR5OyB9CkBAIC01Niwx
MyArNTYsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbihUZXh0U3RyZWFtJiwgaW50IGluZGVudGlvbikgY29uc3Q7CiAKIHByaXZhdGU6
Ci0gICAgRkVEcm9wU2hhZG93KEZpbHRlciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBj
b25zdCBDb2xvciYsIGZsb2F0KTsKKyAgICBGRURyb3BTaGFkb3coRmlsdGVyJiwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIGNvbnN0IE9wdGlvbmFsUkdCQSYsIGZsb2F0KTsKICAgICAKICAg
ICBmbG9hdCBtX3N0ZFg7CiAgICAgZmxvYXQgbV9zdGRZOwogICAgIGZsb2F0IG1fZHg7CiAgICAg
ZmxvYXQgbV9keTsKLSAgICBDb2xvciBtX3NoYWRvd0NvbG9yOworICAgIE9wdGlvbmFsUkdCQSBt
X3NoYWRvd0NvbG9yOwogICAgIGZsb2F0IG1fc2hhZG93T3BhY2l0eTsKIH07CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNw
cAppbmRleCBjNDk4NjBjMGYwODdjOGFmZDhmZGU1OTA5ZWQ4ZTI5MzhjMzMzN2RhLi5iZDQ1MjE2
NzM0ODU0MzI4MDZlZDJkYzkzMzY0YWRkY2E3NWU0MjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAKQEAgLTI5LDI0ICsy
OSwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFRmxvb2Q6OkZFRmxvb2QoRmlsdGVy
JiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBmbG9vZENvbG9yLCBmbG9hdCBmbG9vZE9wYWNpdHkpCitG
RUZsb29kOjpGRUZsb29kKEZpbHRlciYgZmlsdGVyLCBjb25zdCBPcHRpb25hbFJHQkEmIGZsb29k
Q29sb3IsIGZsb2F0IGZsb29kT3BhY2l0eSkKICAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIpCiAg
ICAgLCBtX2Zsb29kQ29sb3IoZmxvb2RDb2xvcikKICAgICAsIG1fZmxvb2RPcGFjaXR5KGZsb29k
T3BhY2l0eSkKIHsKIH0KIAotUmVmPEZFRmxvb2Q+IEZFRmxvb2Q6OmNyZWF0ZShGaWx0ZXImIGZp
bHRlciwgY29uc3QgQ29sb3ImIGZsb29kQ29sb3IsIGZsb2F0IGZsb29kT3BhY2l0eSkKK1JlZjxG
RUZsb29kPiBGRUZsb29kOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IE9wdGlvbmFsUkdC
QSYgZmxvb2RDb2xvciwgZmxvYXQgZmxvb2RPcGFjaXR5KQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZFRmxvb2QoZmlsdGVyLCBmbG9vZENvbG9yLCBmbG9vZE9wYWNpdHkpKTsKIH0KIAot
Q29sb3IgRkVGbG9vZDo6Zmxvb2RDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgRkVGbG9vZDo6
Zmxvb2RDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZmxvb2RDb2xvcjsKIH0KIAotYm9v
bCBGRUZsb29kOjpzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK2Jvb2wgRkVGbG9v
ZDo6c2V0Rmxvb2RDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yKQogewogICAgIGlmICht
X2Zsb29kQ29sb3IgPT0gY29sb3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTczLDcgKzcz
LDcgQEAgdm9pZCBGRUZsb29kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICghcmVz
dWx0SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIENvbG9yIGNvbG9yID0gY29sb3JXaXRo
T3ZlcnJpZGVBbHBoYShmbG9vZENvbG9yKCkucmdiKCksIGZsb29kT3BhY2l0eSgpKTsKKyAgICBP
cHRpb25hbFJHQkEgY29sb3IgPSBjb2xvcldpdGhPdmVycmlkZUFscGhhKGZsb29kQ29sb3IoKS5y
Z2IoKSwgZmxvb2RPcGFjaXR5KCkpOwogICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCktPmZpbGxS
ZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSwg
Y29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oCmluZGV4IGM1NWVjN2YzZGNjZTZh
MmFmZGY0YjZmNTdhMzEzYzEzNTgyMTE0YjQuLjQ1Nzg5OTIyM2U0MDQyN2NkYmExNDBmYjMyY2Yx
Mzk2YzYzZjQ0NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVGbG9vZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVGbG9vZC5oCkBAIC0zMCwxMCArMzAsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBGRUZsb29kIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxGRUZsb29kPiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCk7
CisgICAgc3RhdGljIFJlZjxGRUZsb29kPiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgT3B0aW9uYWxS
R0JBJiwgZmxvYXQpOwogCi0gICAgQ29sb3IgZmxvb2RDb2xvcigpIGNvbnN0OwotICAgIGJvb2wg
c2V0Rmxvb2RDb2xvcihjb25zdCBDb2xvciYpOworICAgIE9wdGlvbmFsUkdCQSBmbG9vZENvbG9y
KCkgY29uc3Q7CisgICAgYm9vbCBzZXRGbG9vZENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYpOwog
CiAgICAgZmxvYXQgZmxvb2RPcGFjaXR5KCkgY29uc3Q7CiAgICAgYm9vbCBzZXRGbG9vZE9wYWNp
dHkoZmxvYXQpOwpAQCAtNTYsOSArNTYsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBUZXh0U3Ry
ZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50aW9uKSBj
b25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBGRUZsb29kKEZpbHRlciYsIGNvbnN0IENv
bG9yJiwgZmxvYXQpOworICAgIEZFRmxvb2QoRmlsdGVyJiwgY29uc3QgT3B0aW9uYWxSR0JBJiwg
ZmxvYXQpOwogCi0gICAgQ29sb3IgbV9mbG9vZENvbG9yOworICAgIE9wdGlvbmFsUkdCQSBtX2Zs
b29kQ29sb3I7CiAgICAgZmxvYXQgbV9mbG9vZE9wYWNpdHk7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcApp
bmRleCAyOTI1YjBlYjY1MTFhOTU0ZGMwMWMwNTQwODA4YzFmMWFmODZhYTRlLi5mMDZlMzQzNzNh
YjZmZTg1ZmJmNjdkNDEyODM1ZTc5NzIyNDMwN2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKQEAgLTMyLDcg
KzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRUxpZ2h0aW5nOjpGRUxpZ2h0aW5n
KEZpbHRlciYgZmlsdGVyLCBMaWdodGluZ1R5cGUgbGlnaHRpbmdUeXBlLCBjb25zdCBDb2xvciYg
bGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLAorRkVMaWdodGluZzo6RkVMaWdodGlu
ZyhGaWx0ZXImIGZpbHRlciwgTGlnaHRpbmdUeXBlIGxpZ2h0aW5nVHlwZSwgY29uc3QgT3B0aW9u
YWxSR0JBJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsCiAgICAgZmxvYXQgZGlm
ZnVzZUNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9u
ZW50LAogICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3Ro
WSwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCiAgICAgOiBGaWx0ZXJFZmZl
Y3QoZmlsdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUxpZ2h0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFTGlnaHRpbmcuaAppbmRleCAwZDFjNzQ0MGUzOGY2MjdiN2EzMTBhYzQ2ZWZhY2E3
YWRlZTBjZWVlLi5lZTZkZTdiMGVjMWFmNmYwMjMyOWMxNzdiMDA0YWUwYTQ3ZGZmN2MyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRp
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGln
aHRpbmcuaApAQCAtODgsNyArODgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgcGxh
dGZvcm1BcHBseUdlbmVyaWNXb3JrZXIoUGxhdGZvcm1BcHBseUdlbmVyaWNQYXJhbWV0ZXJzKik7
CiAgICAgc3RhdGljIHZvaWQgcGxhdGZvcm1BcHBseU5lb25Xb3JrZXIoRkVMaWdodGluZ1BhaW50
aW5nRGF0YUZvck5lb24qKTsKIAotICAgIEZFTGlnaHRpbmcoRmlsdGVyJiwgTGlnaHRpbmdUeXBl
LCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKKyAgICBGRUxpZ2h0aW5nKEZpbHRlciYsIExpZ2h0
aW5nVHlwZSwgY29uc3QgT3B0aW9uYWxSR0JBJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOwogCiAgICAgYm9vbCBkcmF3
TGlnaHRpbmcoVWludDhDbGFtcGVkQXJyYXkqLCBpbnQsIGludCk7CiAgICAgaW5saW5lIHZvaWQg
aW5saW5lU2V0UGl4ZWwoaW50IG9mZnNldCwgTGlnaHRpbmdEYXRhJiwgTGlnaHRTb3VyY2U6OlBh
aW50aW5nRGF0YSYsCkBAIC0xMDksNyArMTA5LDcgQEAgcHJvdGVjdGVkOgogICAgIExpZ2h0aW5n
VHlwZSBtX2xpZ2h0aW5nVHlwZTsKICAgICBSZWZQdHI8TGlnaHRTb3VyY2U+IG1fbGlnaHRTb3Vy
Y2U7CiAKLSAgICBDb2xvciBtX2xpZ2h0aW5nQ29sb3I7CisgICAgT3B0aW9uYWxSR0JBIG1fbGln
aHRpbmdDb2xvcjsKICAgICBmbG9hdCBtX3N1cmZhY2VTY2FsZTsKICAgICBmbG9hdCBtX2RpZmZ1
c2VDb25zdGFudDsKICAgICBmbG9hdCBtX3NwZWN1bGFyQ29uc3RhbnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGlu
Zy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3Vs
YXJMaWdodGluZy5jcHAKaW5kZXggMDIxOWFlMmE4ZjJjM2M2MThjYmIwYWU0OThkYzBkYmZlNWM0
ZGU4MC4uZDI0YWI3ZTQwYTkzZjQ3YzQzZWJmY2Q4ZjM4YjdkOGYzNDFmNzJhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGln
aHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVTcGVjdWxhckxpZ2h0aW5nLmNwcApAQCAtMjcsMTQgKzI3LDE0IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotRkVTcGVjdWxhckxpZ2h0aW5nOjpGRVNwZWN1bGFyTGlnaHRpbmcoRmlsdGVy
JiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUs
CitGRVNwZWN1bGFyTGlnaHRpbmc6OkZFU3BlY3VsYXJMaWdodGluZyhGaWx0ZXImIGZpbHRlciwg
Y29uc3QgT3B0aW9uYWxSR0JBJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsCiAg
ICAgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQg
a2VybmVsVW5pdExlbmd0aFgsCiAgICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFBhc3NSZWZQ
dHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQogICAgIDogRkVMaWdodGluZyhmaWx0ZXIsIFNw
ZWN1bGFyTGlnaHRpbmcsIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgMCwgc3BlY3VsYXJD
b25zdGFudCwgc3BlY3VsYXJFeHBvbmVudCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRM
ZW5ndGhZLCBsaWdodFNvdXJjZSkKIHsKIH0KIAotUmVmPEZFU3BlY3VsYXJMaWdodGluZz4gRkVT
cGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdo
dGluZ0NvbG9yLAorUmVmPEZFU3BlY3VsYXJMaWdodGluZz4gRkVTcGVjdWxhckxpZ2h0aW5nOjpj
cmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IE9wdGlvbmFsUkdCQSYgbGlnaHRpbmdDb2xvciwK
ICAgICBmbG9hdCBzdXJmYWNlU2NhbGUsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNw
ZWN1bGFyRXhwb25lbnQsCiAgICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5l
bFVuaXRMZW5ndGhZLCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZSkKIHsKQEAg
LTQ2LDEyICs0NiwxMiBAQCBGRVNwZWN1bGFyTGlnaHRpbmc6On5GRVNwZWN1bGFyTGlnaHRpbmco
KQogewogfQogCi1Db2xvciBGRVNwZWN1bGFyTGlnaHRpbmc6OmxpZ2h0aW5nQ29sb3IoKSBjb25z
dAorT3B0aW9uYWxSR0JBIEZFU3BlY3VsYXJMaWdodGluZzo6bGlnaHRpbmdDb2xvcigpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fbGlnaHRpbmdDb2xvcjsKIH0KIAotYm9vbCBGRVNwZWN1bGFyTGln
aHRpbmc6OnNldExpZ2h0aW5nQ29sb3IoY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IpCitib29s
IEZFU3BlY3VsYXJMaWdodGluZzo6c2V0TGlnaHRpbmdDb2xvcihjb25zdCBPcHRpb25hbFJHQkEm
IGxpZ2h0aW5nQ29sb3IpCiB7CiAgICAgaWYgKG1fbGlnaHRpbmdDb2xvciA9PSBsaWdodGluZ0Nv
bG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaAppbmRl
eCBkZmYyZTVlNzIwN2I2NDAwNDYwNzgwNThjMWRkNjY3ZWM0NDQ1MDNiLi42MWZhYjY1YjllMjQx
OTBjMmVmNjM4YzkwODIxNzIzY2FlMWJmNDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmgK
QEAgLTI4LDEyICsyOCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZFU3BlY3Vs
YXJMaWdodGluZyA6IHB1YmxpYyBGRUxpZ2h0aW5nIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PEZFU3BlY3VsYXJMaWdodGluZz4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxvYXQs
IGZsb2F0LAorICAgIHN0YXRpYyBSZWY8RkVTcGVjdWxhckxpZ2h0aW5nPiBjcmVhdGUoRmlsdGVy
JiwgY29uc3QgT3B0aW9uYWxSR0JBJiwgZmxvYXQsIGZsb2F0LAogICAgICAgICBmbG9hdCwgZmxv
YXQsIGZsb2F0LCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CiAgICAgdmlydHVhbCB+RkVTcGVj
dWxhckxpZ2h0aW5nKCk7CiAKLSAgICBDb2xvciBsaWdodGluZ0NvbG9yKCkgY29uc3Q7Ci0gICAg
Ym9vbCBzZXRMaWdodGluZ0NvbG9yKGNvbnN0IENvbG9yJik7CisgICAgT3B0aW9uYWxSR0JBIGxp
Z2h0aW5nQ29sb3IoKSBjb25zdDsKKyAgICBib29sIHNldExpZ2h0aW5nQ29sb3IoY29uc3QgT3B0
aW9uYWxSR0JBJik7CiAKICAgICBmbG9hdCBzdXJmYWNlU2NhbGUoKSBjb25zdDsKICAgICBib29s
IHNldFN1cmZhY2VTY2FsZShmbG9hdCk7CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYsIGlu
dCBpbmRlbnRpb24pIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEZFU3BlY3VsYXJMaWdodGluZyhG
aWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwg
UGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIEZFU3BlY3VsYXJMaWdodGluZyhGaWx0ZXIm
LCBjb25zdCBPcHRpb25hbFJHQkEmLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyT3BlcmF0aW9uLmNwcAppbmRleCBiMTg5ZTE0Y2RjYjY0ZGZhOWNhMmE5NWUxNWYw
NmE4NGE1OWY3YTIzLi5mODA5NTg5YzhjMWY2MDQ4MDBiZDNlYmIxODMzNGRlOTc2NDVlYTc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ck9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCkBAIC0xNzksMTIgKzE3OSwxMiBAQCBQYXNzUmVmUHRy
PEZpbHRlck9wZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3Qg
RmlsdGVyT3BlcmF0aQogICAgICAgICByZXR1cm4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6
Y3JlYXRlKAogICAgICAgICAgICAgV2ViQ29yZTo6YmxlbmQobV9sb2NhdGlvbiwgSW50UG9pbnQo
KSwgcHJvZ3Jlc3MpLAogICAgICAgICAgICAgV2ViQ29yZTo6YmxlbmQobV9zdGREZXZpYXRpb24s
IDAsIHByb2dyZXNzKSwKLSAgICAgICAgICAgIFdlYkNvcmU6OmJsZW5kKG1fY29sb3IsIENvbG9y
KENvbG9yOjp0cmFuc3BhcmVudCksIHByb2dyZXNzKSk7CisgICAgICAgICAgICBXZWJDb3JlOjpi
bGVuZChtX2NvbG9yLCBPcHRpb25hbFJHQkEoT3B0aW9uYWxSR0JBOjp0cmFuc3BhcmVudCksIHBy
b2dyZXNzKSk7CiAKICAgICBjb25zdCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKiBmcm9tT3Bl
cmF0aW9uID0gZG93bmNhc3Q8RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbj4oZnJvbSk7CiAgICAg
SW50UG9pbnQgZnJvbUxvY2F0aW9uID0gZnJvbU9wZXJhdGlvbiA/IGZyb21PcGVyYXRpb24tPmxv
Y2F0aW9uKCkgOiBJbnRQb2ludCgpOwogICAgIGludCBmcm9tU3RkRGV2aWF0aW9uID0gZnJvbU9w
ZXJhdGlvbiA/IGZyb21PcGVyYXRpb24tPnN0ZERldmlhdGlvbigpIDogMDsKLSAgICBDb2xvciBm
cm9tQ29sb3IgPSBmcm9tT3BlcmF0aW9uID8gZnJvbU9wZXJhdGlvbi0+Y29sb3IoKSA6IENvbG9y
KENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgT3B0aW9uYWxSR0JBIGZyb21Db2xvciA9IGZyb21P
cGVyYXRpb24gPyBmcm9tT3BlcmF0aW9uLT5jb2xvcigpIDogT3B0aW9uYWxSR0JBKE9wdGlvbmFs
UkdCQTo6dHJhbnNwYXJlbnQpOwogICAgIAogICAgIHJldHVybiBEcm9wU2hhZG93RmlsdGVyT3Bl
cmF0aW9uOjpjcmVhdGUoCiAgICAgICAgIFdlYkNvcmU6OmJsZW5kKGZyb21Mb2NhdGlvbiwgbV9s
b2NhdGlvbiwgcHJvZ3Jlc3MpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggZGZiNzQ2YThiMDVh
YzNkZWQ5Zjk5NmQyZjRmM2NkODRiMzM1ZDE0My4uMWZlMzhiZmQyNDM1ZTdhOWQ5Njc3NDc2ZTZi
OGMyOTY3YTEwOTRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCkBAIC0yOTksNyArMjk5LDcgQEAg
cHJpdmF0ZToKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlv
biA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShjb25zdCBJbnRQb2ludCYgbG9j
YXRpb24sIGludCBzdGREZXZpYXRpb24sIENvbG9yIGNvbG9yKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShjb25zdCBJbnRQb2ludCYgbG9j
YXRpb24sIGludCBzdGREZXZpYXRpb24sIE9wdGlvbmFsUkdCQSBjb2xvcikKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbihsb2NhdGlv
biwgc3RkRGV2aWF0aW9uLCBjb2xvcikpOwogICAgIH0KQEAgLTMxMyw3ICszMTMsNyBAQCBwdWJs
aWM6CiAgICAgaW50IHkoKSBjb25zdCB7IHJldHVybiBtX2xvY2F0aW9uLnkoKTsgfQogICAgIElu
dFBvaW50IGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbjsgfQogICAgIGludCBz
dGREZXZpYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0ZERldmlhdGlvbjsgfQotICAgIENvbG9y
IGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfQorICAgIE9wdGlvbmFsUkdCQSBjb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBhZmZlY3Rz
T3BhY2l0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJv
b2wgbW92ZXNQaXhlbHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC0zMjMs
NyArMzIzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKIAotICAgIERyb3BTaGFk
b3dGaWx0ZXJPcGVyYXRpb24oY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uLCBpbnQgc3RkRGV2aWF0
aW9uLCBDb2xvciBjb2xvcikKKyAgICBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKGNvbnN0IElu
dFBvaW50JiBsb2NhdGlvbiwgaW50IHN0ZERldmlhdGlvbiwgT3B0aW9uYWxSR0JBIGNvbG9yKQog
ICAgICAgICA6IEZpbHRlck9wZXJhdGlvbihEUk9QX1NIQURPVykKICAgICAgICAgLCBtX2xvY2F0
aW9uKGxvY2F0aW9uKQogICAgICAgICAsIG1fc3RkRGV2aWF0aW9uKHN0ZERldmlhdGlvbikKQEAg
LTMzMyw3ICszMzMsNyBAQCBwcml2YXRlOgogCiAgICAgSW50UG9pbnQgbV9sb2NhdGlvbjsgLy8g
RklYTUU6IHNob3VsZCBsb2NhdGlvbiBiZSBpbiBMZW5ndGhzPwogICAgIGludCBtX3N0ZERldmlh
dGlvbjsKLSAgICBDb2xvciBtX2NvbG9yOworICAgIE9wdGlvbmFsUkdCQSBtX2NvbG9yOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAppbmRleCAzYTdhNTAyODQz
YjUxNDJlNDU3YmFkNDdmMDQ5MmMzYjhlNTYxMWRiLi4xOTBiN2FkODJmYjdmODBlOWVhMjc1NzNh
ZjQwZmNhZjk5MDFmOTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lk
IFNvdXJjZUFscGhhOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIEFTU0VSVChpbWFnZUJ1
ZmZlcik7CiAKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVQ
YWludFJlY3QoKS5zaXplKCkpOwotICAgIGZpbHRlckNvbnRleHQtPmZpbGxSZWN0KGltYWdlUmVj
dCwgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBmaWx0ZXJDb250ZXh0
LT5maWxsUmVjdChpbWFnZVJlY3QsIE9wdGlvbmFsUkdCQTo6YmxhY2ssIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOwogICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwg
Q29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKaW5kZXggMTg3MDRmOGUxYjkw
NDlhY2E1YjYzNTA2MGM4NGJjOWJjNmFmNDViZi4uMTVhYzk4OTg2MGNiZjgwNTQ1ODFhOTMxYTc1
OTA4M2RkODBkYjFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAKQEAgLTE2
Niw3ICsxNjYsNyBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB3ZWJraXRWaWRlb1NpbmtSZW5kZXIo
R3N0QmFzZVNpbmsqIGJhc2VTaW5rLCBHc3RCdWZmZXIqIGJ1ZgogICAgICAgICAgICAgcmV0dXJu
IEdTVF9GTE9XX0VSUk9SOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gV2UgZG9uJ3QgdXNlIENv
bG9yOjpwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcigpIGhlcmUgYmVjYXVzZQorICAgICAgICAv
LyBXZSBkb24ndCB1c2UgT3B0aW9uYWxSR0JBOjpwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcigp
IGhlcmUgYmVjYXVzZQogICAgICAgICAvLyBvbmUgZnVuY3Rpb24gY2FsbCBwZXIgdmlkZW8gcGl4
ZWwgaXMganVzdCB0b28gZXhwZW5zaXZlOgogICAgICAgICAvLyBGb3IgNzIwcC9QQUwgZm9yIGV4
YW1wbGUgdGhpcyBtZWFucyAxMjgwKjcyMCoyNT0yMzA0MDAwMAogICAgICAgICAvLyBmdW5jdGlv
biBjYWxscyBwZXIgc2Vjb25kIQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL0NvbG9yR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2d0ay9Db2xvckd0ay5jcHAKaW5kZXggOGY1NmJhNmZiNGUwYjY1YTk5YzI3M2QzYjQ3MGJm
ZGI2YjM1YjlhZi4uOGY2NzQxN2EwYzBjY2ViNTQwZDFmZmE0MTIzZWZlOGUzYWQ3NWViNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0NvbG9yR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvQ29sb3JHdGsuY3Bw
CkBAIC0yNSwxNCArMjUsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Db2xvcjo6Q29s
b3IoY29uc3QgR2RrQ29sb3ImIGMpCitPcHRpb25hbFJHQkE6Ok9wdGlvbmFsUkdCQShjb25zdCBH
ZGtDb2xvciYgYykKICAgICA6IG1fY29sb3IobWFrZVJHQihjLnJlZCA+PiA4LCBjLmdyZWVuID4+
IDgsIGMuYmx1ZSA+PiA4KSkKICAgICAsIG1fdmFsaWQodHJ1ZSkKIHsKIH0KIAogI2lmbmRlZiBH
VEtfQVBJX1ZFUlNJT05fMgotQ29sb3I6OkNvbG9yKGNvbnN0IEdka1JHQkEmIGMpCitPcHRpb25h
bFJHQkE6Ok9wdGlvbmFsUkdCQShjb25zdCBHZGtSR0JBJiBjKQogICAgIDogbV9jb2xvcihtYWtl
UkdCQShzdGF0aWNfY2FzdDxpbnQ+KGMucmVkICogMjU1KSwKICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8aW50PihjLmdyZWVuICogMjU1KSwKICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8aW50PihjLmJsdWUgKiAyNTUpLApAQCAtNDEsNyArNDEsNyBAQCBDb2xv
cjo6Q29sb3IoY29uc3QgR2RrUkdCQSYgYykKIHsKIH0KIAotQ29sb3I6Om9wZXJhdG9yIEdka1JH
QkEoKSBjb25zdAorT3B0aW9uYWxSR0JBOjpvcGVyYXRvciBHZGtSR0JBKCkgY29uc3QKIHsKICAg
ICBkb3VibGUgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGE7CiAgICAgZ2V0UkdCQShyZWQsIGdyZWVu
LCBibHVlLCBhbHBoYSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvQ29sb3JNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Db2xvck1hYy5oCmluZGV4IDM3NmY3OWY4Mzk4MmUyYWJjZWUxNTNjN2Y2YTljMDAxNzljMzdh
MzAuLmRjMDIxN2E2ZmNlOTcwN2NmZGYwYTBmMTkxNzc2N2YwMjEwOGZlODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5oCkBAIC0zOSw4ICsz
OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKICNpZiBVU0UoQVBQS0lUKQogICAgIC8v
IFRoZXNlIGZ1bmN0aW9ucyBhc3N1bWUgTlNDb2xvcnMgYXJlIGluIERldmljZVJHQiBjb2xvcnNw
YWNlCi0gICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IgY29sb3JGcm9tTlNDb2xvcihOU0NvbG9yICop
OwotICAgIFdFQkNPUkVfRVhQT1JUIE5TQ29sb3IgKm5zQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbFJHQkEgY29sb3JGcm9tTlNDb2xvcihOU0NvbG9yICop
OworICAgIFdFQkNPUkVfRVhQT1JUIE5TQ29sb3IgKm5zQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JB
Jik7CiAjZW5kaWYKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdXNlc1Rlc3RNb2RlRm9jdXNS
aW5nQ29sb3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db2xvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9D
b2xvck1hYy5tbQppbmRleCA1YmJjNmIzZmFiYjE1NTczNjA4OGZjNjY1NWRkNDdmZjViZWJmMTNk
Li4wYmE2NjBjYmVmYWYzMWEyNzJlYzM4OTk5YzdhMTAzMTQxM2YzYjc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCkBAIC02NywxMiAr
NjcsMTIgQEAgc3RhdGljIFJHQkEzMiBtYWtlUkdCQUZyb21OU0NvbG9yKE5TQ29sb3IgKmMpCiAg
ICAgcmV0dXJuIG1ha2VSR0JBKDI1NSAqIHJlZENvbXBvbmVudCwgMjU1ICogZ3JlZW5Db21wb25l
bnQsIDI1NSAqIGJsdWVDb21wb25lbnQsIDI1NSAqIGFscGhhKTsKIH0KIAotQ29sb3IgY29sb3JG
cm9tTlNDb2xvcihOU0NvbG9yICpjKQorT3B0aW9uYWxSR0JBIGNvbG9yRnJvbU5TQ29sb3IoTlND
b2xvciAqYykKIHsKLSAgICByZXR1cm4gQ29sb3IobWFrZVJHQkFGcm9tTlNDb2xvcihjKSk7Cisg
ICAgcmV0dXJuIE9wdGlvbmFsUkdCQShtYWtlUkdCQUZyb21OU0NvbG9yKGMpKTsKIH0KIAotTlND
b2xvciAqbnNDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCitOU0NvbG9yICpuc0NvbG9yKGNvbnN0
IE9wdGlvbmFsUkdCQSYgY29sb3IpCiB7CiAgICAgUkdCQTMyIGMgPSBjb2xvci5yZ2IoKTsKICAg
ICBzd2l0Y2ggKGMpIHsKQEAgLTgxLDExICs4MSwxMSBAQCBOU0NvbG9yICpuc0NvbG9yKGNvbnN0
IENvbG9yJiBjb2xvcikKICAgICAgICAgICAgIHN0YXRpYyBOU0NvbG9yICpjbGVhckNvbG9yID0g
W1tOU0NvbG9yIGNvbG9yV2l0aERldmljZVJlZDowIGdyZWVuOjAgYmx1ZTowIGFscGhhOjBdIHJl
dGFpbl07CiAgICAgICAgICAgICByZXR1cm4gY2xlYXJDb2xvcjsKICAgICAgICAgfQotICAgICAg
ICBjYXNlIENvbG9yOjpibGFjazogeworICAgICAgICBjYXNlIE9wdGlvbmFsUkdCQTo6YmxhY2s6
IHsKICAgICAgICAgICAgIHN0YXRpYyBOU0NvbG9yICpibGFja0NvbG9yID0gW1tOU0NvbG9yIGNv
bG9yV2l0aERldmljZVJlZDowIGdyZWVuOjAgYmx1ZTowIGFscGhhOjFdIHJldGFpbl07CiAgICAg
ICAgICAgICByZXR1cm4gYmxhY2tDb2xvcjsKICAgICAgICAgfQotICAgICAgICBjYXNlIENvbG9y
Ojp3aGl0ZTogeworICAgICAgICBjYXNlIE9wdGlvbmFsUkdCQTo6d2hpdGU6IHsKICAgICAgICAg
ICAgIHN0YXRpYyBOU0NvbG9yICp3aGl0ZUNvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aERldmlj
ZVJlZDoxIGdyZWVuOjEgYmx1ZToxIGFscGhhOjFdIHJldGFpbl07CiAgICAgICAgICAgICByZXR1
cm4gd2hpdGVDb2xvcjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHRNYWMubW0KaW5kZXggOTM2NTg3
ODgzMDgyYTg1OTZmNTBhODYwMzZiMjNiNmYwNTU0M2IwYS4uMzM2MmM3NjM2NDdjMmFmYjJiMDlk
MjZkZGZlNjY2OWY4YTNiNzEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tCkBAIC03Miw3ICs3Miw3
IEBAIHN0YXRpYyBib29sIGRyYXdGb2N1c1JpbmdUb0NvbnRleHRBdFRpbWUoQ0dDb250ZXh0UmVm
IGNvbnRleHQsIENHUGF0aFJlZiBmb2N1c1JpCiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykK
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYgcGF0aCwg
aW50IC8qIHdpZHRoICovLCBpbnQgLyogb2Zmc2V0ICovLCBjb25zdCBDb2xvciYpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRoJiBwYXRoLCBpbnQgLyogd2lk
dGggKi8sIGludCAvKiBvZmZzZXQgKi8sIGNvbnN0IE9wdGlvbmFsUkdCQSYpCiB7CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgcGF0aC5pc051bGwoKSkK
QEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhj
b25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgd2lkdGgsIGludAogfQogI2VuZGlmCiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxJbnRSZWN0
PiYgcmVjdHMsIGludCB3aWR0aCwgaW50IG9mZnNldCwgY29uc3QgQ29sb3ImKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEludFJlY3Q+JiByZWN0cywg
aW50IHdpZHRoLCBpbnQgb2Zmc2V0LCBjb25zdCBPcHRpb25hbFJHQkEmKQogewogI2lmICFQTEFU
Rk9STShJT1MpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IGQ1MzQ3MDQ0ZTg4YzA4ZWRiYTRkNDYwNDY5
ZjNmOTA3YTAwYjlkYzEuLjdlOTNkN2VlMzk2NmM1OTNhODIzZGQzYzg3MjY3MTA2NGMxZWJmZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMjc0LDcg
KzI3NCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzUmVj
dChjb25zdCBGbG9hdFJlY3QmIHZhbHVlKQogICAgIG5vdGlmeUNoYW5nZShDb250ZW50c1JlY3RD
aGFuZ2UpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50
c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIGNv
bG9yKQogewogICAgIGlmIChjb2xvciA9PSBtX3NvbGlkQ29sb3IpCiAgICAgICAgIHJldHVybjsK
QEAgLTQwMCw3ICs0MDAsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRh
dGVEZWJ1Z0JvcmRlckFuZFJlcGFpbnRDb3VudCgpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYgY29sb3IsIGZs
b2F0IHdpZHRoKQordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0RGVidWdCb3Jk
ZXIoY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvciwgZmxvYXQgd2lkdGgpCiB7CiAgICAgbV9kZWJ1
Z0JvcmRlckNvbG9yID0gY29sb3I7CiAgICAgbV9kZWJ1Z0JvcmRlcldpZHRoID0gd2lkdGg7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4IGY1NmNmNTE4NTljZGM3
YWJkODBjMzZhNjlhZmQwNmMyODhhMzRjMzMuLjllMWFjMjA1MjRmNzM2ZjUwMDMxODgzYTQwYmZj
MDIwZjQ2MTYwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBA
IC03NCwxMyArNzQsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbmltYXRp
b24oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVu
dHNUb0ltYWdlKEltYWdlKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRz
VG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNl
dENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwg
Q29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCB1c2VzQ29u
dGVudHNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQog
ICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFNob3dE
ZWJ1Z0JvcmRlcihib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCb3Jk
ZXIoY29uc3QgQ29sb3ImLCBmbG9hdCB3aWR0aCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IHNldERlYnVnQm9yZGVyKGNvbnN0IE9wdGlvbmFsUkdCQSYsIGZsb2F0IHdpZHRoKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIG92ZXJyaWRl
OwogCiAgICAgdmlydHVhbCB2b2lkIGZsdXNoQ29tcG9zaXRpbmdTdGF0ZShjb25zdCBGbG9hdFJl
Y3QmLCBib29sKSBvdmVycmlkZTsKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wpOwogICAgIGJvb2wgZml4ZWRUb1ZpZXdwb3J0KCkgY29u
c3QgeyByZXR1cm4gbV9maXhlZFRvVmlld3BvcnQ7IH0KIAotICAgIENvbG9yIGRlYnVnQm9yZGVy
Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnQm9yZGVyQ29sb3I7IH0KKyAgICBPcHRpb25h
bFJHQkEgZGVidWdCb3JkZXJDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJDb2xv
cjsgfQogICAgIGZsb2F0IGRlYnVnQm9yZGVyV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2RlYnVn
Qm9yZGVyV2lkdGg7IH0KICAgICB2b2lkIHNldFJlcGFpbnRDb3VudChpbnQpOwogCkBAIC0xNzAs
OSArMTcwLDkgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9jaGFuZ2VNYXNrOwogICAgIGJvb2wgbV9u
ZWVkc0Rpc3BsYXk7CiAgICAgYm9vbCBtX2ZpeGVkVG9WaWV3cG9ydDsKLSAgICBDb2xvciBtX3Nv
bGlkQ29sb3I7CisgICAgT3B0aW9uYWxSR0JBIG1fc29saWRDb2xvcjsKIAotICAgIENvbG9yIG1f
ZGVidWdCb3JkZXJDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgbV9kZWJ1Z0JvcmRlckNvbG9yOwog
ICAgIGZsb2F0IG1fZGVidWdCb3JkZXJXaWR0aDsKIAogICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyKiBtX2NvbnRlbnRzTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAppbmRleCA2NWM5ODcyMjhkOGE5
OThjMjRjMTgzZDdiOTc2NDYxNzQwOTMzMjEyLi45NTllZDJlYTFiMjYyN2VhMjZhMThhNmZlNjdm
ZDQwYzg1ZDUwY2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKQEAgLTcyLDExICs3MiwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIEFsbEVkZ2VzID0gTGVmdEVkZ2UgfCBSaWdodEVkZ2UgfCBUb3BFZGdlIHwgQm90
dG9tRWRnZSwKICAgICB9OwogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29s
b3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdOdW1iZXIoaW50IG51bWJl
ciwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgT3B0aW9uYWxS
R0JBJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3TnVtYmVyKGludCBudW1i
ZXIsIGNvbnN0IE9wdGlvbmFsUkdCQSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25z
dCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBm
bG9hdCBvcGFjaXR5ID0gMS4wZiwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBjb25zdCBPcHRpb25hbFJHQkEmKSA9IDA7CiAKICAgICAvLyBtYWtlcyBhIHN1
cmZhY2UgdGhlIHRhcmdldCBmb3IgdGhlIGZvbGxvd2luZyBkcmF3VGV4dHVyZSBjYWxscy4KICAg
ICB2aXJ0dWFsIHZvaWQgYmluZFN1cmZhY2UoQml0bWFwVGV4dHVyZSogc3VyZmFjZSkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKaW5kZXggMDc2ZDAxYmU5NDA1ZTFj
MDQxNTg5MDU5NzlhZTY0ZGYxM2NmNTE1YS4uNjA5YTAzMzA0ZmUyMjFlOTRjZTdkODNkZTUwZGQy
OGUwODAwOWE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCkBAIC00
MCw3ICs0MCw3IEBAIGNsYXNzIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUgOiBwdWJsaWMgVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIsIHB1YmxpYyBSZWZDCiBwdWJsaWM6CiAgICAgdmlydHVh
bCBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1cmVNYXBwZXIqLCBpbnQgLyogcmVwYWludENv
dW50ICovLCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihUZXh0
dXJlTWFwcGVyKiwgaW50IC8qIHJlcGFpbnRDb3VudCAqLywgY29uc3QgT3B0aW9uYWxSR0JBJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSB7IH0KICAgICB2
aXJ0dWFsIH5UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlKCkgeyB9CiAKIHByb3RlY3RlZDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyRlBTQ291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCmluZGV4IDJkMzMzYWYzOTBlNTM4MmUx
YWVjOGU1MzY0YmI0MmZmZTBlMTg2ZTEuLmRiYWI3ODA2ZTJlNDFhMzYwMmVjZDEyOWZkYTBmOWUz
YThlYmZiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcApAQCAtNTks
NyArNTksNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjp1cGRhdGVGUFNBbmREaXNw
bGF5KFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsCiAgICAgICAgIG1fZnBzVGltZXN0YW1w
ICs9IGRlbHRhOwogICAgIH0KIAotICAgIHRleHR1cmVNYXBwZXItPmRyYXdOdW1iZXIobV9sYXN0
RlBTLCBDb2xvcjo6YmxhY2ssIGxvY2F0aW9uLCBtYXRyaXgpOworICAgIHRleHR1cmVNYXBwZXIt
PmRyYXdOdW1iZXIobV9sYXN0RlBTLCBPcHRpb25hbFJHQkE6OmJsYWNrLCBsb2NhdGlvbiwgbWF0
cml4KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApp
bmRleCA0YzU0ODA1NjIzNWUzOThmYWM5ODM2MGZlOWNiZjYyNWM3NWExZDA1Li5kMDU5ZTVjMmNm
YmIwZjdjOTQ4ZTk1Yjg2YTAzMjMyY2VlODE3OWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApA
QCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjplbmRQYWludGluZygpCiAg
ICAgICAgIG1fY29udGV4dDNELT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9URVNU
KTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdCb3JkZXIoY29uc3QgQ29sb3ImIGNv
bG9yLCBmbG9hdCB3aWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4KQordm9pZCBUZXh0dXJlTWFwcGVyR0w6
OmRyYXdCb3JkZXIoY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvciwgZmxvYXQgd2lkdGgsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVs
Vmlld01hdHJpeCkKIHsKICAgICBpZiAoY2xpcFN0YWNrKCkuaXNDdXJyZW50U2Npc3NvckJveEVt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwMiw3ICszMDIsNyBAQCB2b2lkIFRleHR1cmVN
YXBwZXJHTDo6ZHJhd0JvcmRlcihjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHdpZHRoLCBjb25z
dCBGbG9hdFJlYwogICAgIG1fY29udGV4dDNELT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW1J
RCgpKTsKIAogICAgIGZsb2F0IHIsIGcsIGIsIGE7Ci0gICAgQ29sb3IocHJlbXVsdGlwbGllZEFS
R0JGcm9tQ29sb3IoY29sb3IpKS5nZXRSR0JBKHIsIGcsIGIsIGEpOworICAgIE9wdGlvbmFsUkdC
QShwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcihjb2xvcikpLmdldFJHQkEociwgZywgYiwgYSk7
CiAgICAgbV9jb250ZXh0M0QtPnVuaWZvcm00Zihwcm9ncmFtLT5jb2xvckxvY2F0aW9uKCksIHIs
IGcsIGIsIGEpOwogICAgIG1fY29udGV4dDNELT5saW5lV2lkdGgod2lkdGgpOwogCkBAIC0zMTAs
NyArMzEwLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdCb3JkZXIoY29uc3QgQ29sb3Im
IGNvbG9yLCBmbG9hdCB3aWR0aCwgY29uc3QgRmxvYXRSZWMKIH0KIAogLy8gRklYTUU6IGRyYXdO
dW1iZXIoKSBzaG91bGQgc2F2ZSBhIG51bWJlciB0ZXh0dXJlLWF0bGFzIGFuZCByZS11c2Ugd2hl
bmV2ZXIgcG9zc2libGUuCi12b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd051bWJlcihpbnQgbnVt
YmVyLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4KQordm9pZCBUZXh0dXJl
TWFwcGVyR0w6OmRyYXdOdW1iZXIoaW50IG51bWJlciwgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xv
ciwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBtb2RlbFZpZXdNYXRyaXgpCiB7CiAgICAgaW50IHBvaW50U2l6ZSA9IDg7CiAKQEAgLTQ2
NCw3ICs0NjQsNyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlRmlsdGVyUHJvZ3JhbShUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3QgRmlsdAogICAgICAgICBjYXNlIDE6CiAg
ICAgICAgICAgICAvLyBTZWNvbmQgcGFzczogd2UgbmVlZCB0aGUgc2hhZG93IGNvbG9yIGFuZCB0
aGUgY29udGVudCB0ZXh0dXJlIGZvciBjb21wb3NpdGluZy4KICAgICAgICAgICAgIGZsb2F0IHIs
IGcsIGIsIGE7Ci0gICAgICAgICAgICBDb2xvcihwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcihz
aGFkb3cuY29sb3IoKSkpLmdldFJHQkEociwgZywgYiwgYSk7CisgICAgICAgICAgICBPcHRpb25h
bFJHQkEocHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3Ioc2hhZG93LmNvbG9yKCkpKS5nZXRSR0JB
KHIsIGcsIGIsIGEpOwogICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTRmKHByb2dyYW0tPmNv
bG9yTG9jYXRpb24oKSwgciwgZywgYiwgYSk7CiAgICAgICAgICAgICBjb250ZXh0LT51bmlmb3Jt
MmYocHJvZ3JhbS0+Ymx1clJhZGl1c0xvY2F0aW9uKCksIDAsIHNoYWRvdy5zdGREZXZpYXRpb24o
KSAvIGZsb2F0KHNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0y
Zihwcm9ncmFtLT5zaGFkb3dPZmZzZXRMb2NhdGlvbigpLCAwLCAwKTsKQEAgLTUzNCw3ICs1MzQs
NyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0
ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSQogICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJv
Z3JhbShwcm9ncmFtLmdldCgpLCB0ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdldFJl
Y3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlckdM
OjpkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBtYXRyaXgsIGNvbnN0IENvbG9yJiBjb2xvcikKK3ZvaWQgVGV4dHVyZU1hcHBl
ckdMOjpkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtYXRyaXgsIGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IpCiB7CiAgICAg
RmxhZ3MgZmxhZ3MgPSAwOwogICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25z
IG9wdGlvbnMgPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6U29saWRDb2xvcjsKQEAgLTU0
Nyw3ICs1NDcsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1NvbGlkQ29sb3IoY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbgogICAgIG1fY29udGV4dDNELT51
c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW1JRCgpKTsKIAogICAgIGZsb2F0IHIsIGcsIGIsIGE7
Ci0gICAgQ29sb3IocHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3IoY29sb3IpKS5nZXRSR0JBKHIs
IGcsIGIsIGEpOworICAgIE9wdGlvbmFsUkdCQShwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcihj
b2xvcikpLmdldFJHQkEociwgZywgYiwgYSk7CiAgICAgbV9jb250ZXh0M0QtPnVuaWZvcm00Zihw
cm9ncmFtLT5jb2xvckxvY2F0aW9uKCksIHIsIGcsIGIsIGEpOwogICAgIGlmIChhIDwgMSkKICAg
ICAgICAgZmxhZ3MgfD0gU2hvdWxkQmxlbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKaW5kZXggYmQ5YmY1
NTJmMjY4NzVlMTAyYjk0YzllMTJiMzY4YmUwZWVlZGNhMC4uYmU3NzVlNjM2MDFjYTBjYjQxMDJj
YWU0YzYxZGNlOGVkNmQ0ZTlhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaApAQCAtOTgsMTEgKzk4LDEx
IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIGludCBGbGFnczsKIAogICAgIC8vIFRleHR1cmVNYXBw
ZXIgaW1wbGVtZW50YXRpb24KLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihjb25zdCBDb2xv
ciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3TnVtYmVyKGludCBu
dW1iZXIsIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3Qg
T3B0aW9uYWxSR0JBJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdO
dW1iZXIoaW50IG51bWJlciwgY29uc3QgT3B0aW9uYWxSR0JBJiwgY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRF
ZGdlcykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKFBsYXRmb3JtM0RP
YmplY3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZp
ZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2Vz
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYsIGNvbnN0IE9wdGlvbmFsUkdCQSYpIG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCB2b2lkIGJpbmRTdXJmYWNlKEJpdG1hcFRleHR1cmUqIHN1cmZhY2UpIG92ZXJyaWRlOwog
ICAgIEJpdG1hcFRleHR1cmUqIGN1cnJlbnRTdXJmYWNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuY3BwCmluZGV4IDM0NTUzOTg3MDI0YTZlNzVmZDlkMWUzOTA2ODE3OGI5ZWQ3MjNhMmIuLjY2
NWI0MTkzMWI1YTI1MDUwOTdkODMwNDMzMzRjNzYyNDA3MDIzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuY3BwCkBAIC04NCwxMyArODQsMTMgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6
OnBhaW50KCkKICAgICBwYWludFJlY3Vyc2l2ZShvcHRpb25zKTsKIH0KIAotc3RhdGljIENvbG9y
IGJsZW5kV2l0aE9wYWNpdHkoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBvcGFjaXR5KQorc3Rh
dGljIE9wdGlvbmFsUkdCQSBibGVuZFdpdGhPcGFjaXR5KGNvbnN0IE9wdGlvbmFsUkdCQSYgY29s
b3IsIGZsb2F0IG9wYWNpdHkpCiB7CiAgICAgUkdCQTMyIHJnYmEgPSBjb2xvci5yZ2IoKTsKLSAg
ICAvLyBTZWUgQ29sb3I6OmdldFJHQkEoKSB0byBrbm93IGhvdyB0byBleHRyYWN0IGFscGhhIGZy
b20gY29sb3IuCisgICAgLy8gU2VlIE9wdGlvbmFsUkdCQTo6Z2V0UkdCQSgpIHRvIGtub3cgaG93
IHRvIGV4dHJhY3QgYWxwaGEgZnJvbSBjb2xvci4KICAgICBmbG9hdCBhbHBoYSA9IGFscGhhQ2hh
bm5lbChyZ2JhKSAvIDI1NS47CiAgICAgZmxvYXQgZWZmZWN0aXZlQWxwaGEgPSBhbHBoYSAqIG9w
YWNpdHk7Ci0gICAgcmV0dXJuIENvbG9yKGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEocmdiYSwgZWZm
ZWN0aXZlQWxwaGEpKTsKKyAgICByZXR1cm4gT3B0aW9uYWxSR0JBKGNvbG9yV2l0aE92ZXJyaWRl
QWxwaGEocmdiYSwgZWZmZWN0aXZlQWxwaGEpKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyTGF5
ZXI6OmNvbXB1dGVQYXR0ZXJuVHJhbnNmb3JtSWZOZWVkZWQoKQpAQCAtNTkyLDcgKzU5Miw3IEBA
IHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCiAgICAg
bV9zdGF0ZS5vcGFjaXR5ID0gb3BhY2l0eTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6
OnNldFNvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQordm9pZCBUZXh0dXJlTWFwcGVyTGF5
ZXI6OnNldFNvbGlkQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICBtX3N0
YXRlLnNvbGlkQ29sb3IgPSBjb2xvcjsKIH0KQEAgLTYwMiw3ICs2MDIsNyBAQCB2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJz
KQogICAgIG1fc3RhdGUuZmlsdGVycyA9IGZpbHRlcnM7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBl
ckxheWVyOjpzZXREZWJ1Z1Zpc3VhbHMoYm9vbCBzaG93RGVidWdCb3JkZXJzLCBjb25zdCBDb2xv
ciYgZGVidWdCb3JkZXJDb2xvciwgZmxvYXQgZGVidWdCb3JkZXJXaWR0aCwgYm9vbCBzaG93UmVw
YWludENvdW50ZXIpCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0RGVidWdWaXN1YWxzKGJv
b2wgc2hvd0RlYnVnQm9yZGVycywgY29uc3QgT3B0aW9uYWxSR0JBJiBkZWJ1Z0JvcmRlckNvbG9y
LCBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoLCBib29sIHNob3dSZXBhaW50Q291bnRlcikKIHsKICAg
ICBtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMgPSBzaG93RGVidWdCb3JkZXJzOwogICAgIG1fc3Rh
dGUuZGVidWdCb3JkZXJDb2xvciA9IGRlYnVnQm9yZGVyQ29sb3I7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxh
eWVyLmgKaW5kZXggMGM5ZGE3MWJiMTk1Y2I0ZGNkNzFmMTUwZjdmZTdhMmUyNjNhY2FkMi4uMjMx
YzYxYzAzM2JmYjE4M2QzY2IwMjJkMTZlYTMwMGUxMjBkMmFiYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
TGF5ZXIuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbnRlbnRz
T3BhcXVlKGJvb2wpOwogICAgIHZvaWQgc2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wpOwogICAg
IHZvaWQgc2V0T3BhY2l0eShmbG9hdCk7Ci0gICAgdm9pZCBzZXRTb2xpZENvbG9yKGNvbnN0IENv
bG9yJik7CisgICAgdm9pZCBzZXRTb2xpZENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYpOwogICAg
IHZvaWQgc2V0Q29udGVudHNUaWxlU2l6ZShjb25zdCBGbG9hdFNpemUmKTsKICAgICB2b2lkIHNl
dENvbnRlbnRzVGlsZVBoYXNlKGNvbnN0IEZsb2F0U2l6ZSYpOwogICAgIHZvaWQgc2V0RmlsdGVy
cyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gIW1fY3VycmVudEZpbHRlcnMuaXNFbXB0eSgpOwogICAgIH0KIAotICAg
IHZvaWQgc2V0RGVidWdWaXN1YWxzKGJvb2wgc2hvd0RlYnVnQm9yZGVycywgY29uc3QgQ29sb3Im
IGRlYnVnQm9yZGVyQ29sb3IsIGZsb2F0IGRlYnVnQm9yZGVyV2lkdGgsIGJvb2wgc2hvd1JlcGFp
bnRDb3VudGVyKTsKKyAgICB2b2lkIHNldERlYnVnVmlzdWFscyhib29sIHNob3dEZWJ1Z0JvcmRl
cnMsIGNvbnN0IE9wdGlvbmFsUkdCQSYgZGVidWdCb3JkZXJDb2xvciwgZmxvYXQgZGVidWdCb3Jk
ZXJXaWR0aCwgYm9vbCBzaG93UmVwYWludENvdW50ZXIpOwogICAgIGJvb2wgaXNTaG93aW5nUmVw
YWludENvdW50ZXIoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNob3dSZXBhaW50Q291bnRlcjsg
fQogICAgIHZvaWQgc2V0UmVwYWludENvdW50KGludCk7CiAgICAgdm9pZCBzZXRDb250ZW50c0xh
eWVyKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKik7CkBAIC0yMTIsOSArMjEyLDkgQEAgcHJp
dmF0ZToKICAgICAgICAgRmxvYXRTaXplIGNvbnRlbnRzVGlsZVBoYXNlOwogICAgICAgICBUZXh0
dXJlTWFwcGVyTGF5ZXIqIG1hc2tMYXllcjsKICAgICAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBy
ZXBsaWNhTGF5ZXI7Ci0gICAgICAgIENvbG9yIHNvbGlkQ29sb3I7CisgICAgICAgIE9wdGlvbmFs
UkdCQSBzb2xpZENvbG9yOwogICAgICAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0gICAg
ICAgIENvbG9yIGRlYnVnQm9yZGVyQ29sb3I7CisgICAgICAgIE9wdGlvbmFsUkdCQSBkZWJ1Z0Jv
cmRlckNvbG9yOwogICAgICAgICBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoOwogICAgICAgICBpbnQg
cmVwYWludENvdW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCmlu
ZGV4IDI0ODJlMGU5NDNkNzFmMWNkMDExNjM3NWFkZGU3ZjA0YmU4YTRhMWQuLjAzZTk0YjE0MmNm
N2M4MGQxMjY3Yzg0NzZhN2I1MjYwNDZmMmVkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllci5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4
KCksIGZsb2F0IG9wYWNpdHkgPSAxLjApID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZl
cnMoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyLCBjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm0pCisgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciwgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvciwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5z
Zm9ybSkKICAgICB7CiAgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIoY29sb3IsIGJv
cmRlcldpZHRoLCB0YXJnZXRSZWN0LCB0cmFuc2Zvcm0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMzYyNWMxNDg2NDMxZDQ0
NWEyYTk5MTMyMGVmNTEwMWY0NWZlMTZlZS4uODQ3MjViMDJjYzlhNDE5MmIxY2Q1MTVkYzcyNjg5
MzMxNjIwMTlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZS5jcHAKQEAgLTU1LDE0ICs1NSwxNCBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZQogICAg
ICAgICB0aWxlLnBhaW50KHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5
LCBjYWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QoKSwgdGlsZS5yZWN0KCkpKTsKIH0KIAot
dm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmRyYXdCb3JkZXIoVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgQ29sb3ImIGJvcmRlckNvbG9yLCBmbG9hdCBib3Jk
ZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtKQordm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6
OmRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgT3B0aW9uYWxS
R0JBJiBib3JkZXJDb2xvciwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKIHsKICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybSAqIGFkanVz
dGVkVHJhbnNmb3JtRm9yUmVjdCh0YXJnZXRSZWN0KTsKICAgICBmb3IgKGF1dG8mIHRpbGUgOiBt
X3RpbGVzKQogICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3Qm9yZGVyKGJvcmRlckNvbG9yLCBi
b3JkZXJXaWR0aCwgdGlsZS5yZWN0KCksIGFkanVzdGVkVHJhbnNmb3JtKTsKIH0KIAotdm9pZCBU
ZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJl
TWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYgYm9y
ZGVyQ29sb3IsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSkKK3ZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
OjpkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgaW50IHJl
cGFpbnRDb3VudCwgY29uc3QgT3B0aW9uYWxSR0JBJiBib3JkZXJDb2xvciwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQog
ewogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3Jt
ICogYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOwogICAgIGZvciAoYXV0byYg
dGlsZSA6IG1fdGlsZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlLmgKaW5kZXggNGYzY2NlODhjYWJkZmQyNDQ0NjgxZDVhN2ZjMTIyYmViYzM0YWRiMC4uNWE0
MDA0OWRmMzdlMTQ0MTI5YmJmYTNlMzZkY2U1MGM2MDI4OGMxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBw
ZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiwg
Y29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1Jl
cGFpbnRDb3VudGVyKFRleHR1cmVNYXBwZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xv
ciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IE9w
dGlvbmFsUkdCQSYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVw
YWludENvdW50ZXIoVGV4dHVyZU1hcHBlciosIGludCByZXBhaW50Q291bnQsIGNvbnN0IE9wdGlv
bmFsUkdCQSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jikg
b3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwgSW1hZ2Uq
LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRl
Q29udGVudHNGbGFnKTsKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBH
cmFwaGljc0xheWVyKiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRl
eHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggMGMzNzZlMDRkZWJlYTM5
YTgzZmM1NTdmZjgzY2I2NTY5NWEyNGQyYi4uMTY5N2RmZTRhYzIxNmY0MGNiNmE5N2I2YTFmZjVh
NjVmMTI4Yjk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTQyMyw3ICs0MjMsNyBAQCBib29sIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBuZXdGaWx0
ZXJzKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQordm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IE9wdGlv
bmFsUkdCQSYgY29sb3IpCiB7CiAgICAgaWYgKG1fbGF5ZXJTdGF0ZS5zb2xpZENvbG9yID09IGNv
bG9yKQogICAgICAgICByZXR1cm47CkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRlKCkKICAgICAgICAgdXBkYXRlRGVidWdJbmRp
Y2F0b3JzKCk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXREZWJ1Z0Jv
cmRlcihjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHdpZHRoKQordm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OnNldERlYnVnQm9yZGVyKGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IsIGZs
b2F0IHdpZHRoKQogewogICAgIEFTU0VSVChtX2xheWVyU3RhdGUuc2hvd0RlYnVnQm9yZGVycyk7
CiAgICAgaWYgKG1fbGF5ZXJTdGF0ZS5kZWJ1Z0JvcmRlckNvbG9yICE9IGNvbG9yKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5k
ZXggZjA1NGFmNWQ3NWI5MTIwNzVkNGIwNDcwNjVmMTQxZmZjYzZiMDY3OC4uMmI2M2IzNTEyZGIy
OGQwOGNlNDdkOWI5N2M2NWUwM2JjNmY2MzU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtODgsNyArODgsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVGlsZVBoYXNlKGNvbnN0IEZsb2F0U2l6
ZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RpbGVTaXplKGNvbnN0
IEZsb2F0U2l6ZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvSW1h
Z2UoSW1hZ2UqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb1NvbGlk
Q29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVu
dHNUb1NvbGlkQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcihib29sKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGREaXJlY3RseUNvbXBvc2l0ZUltYWdlKEltYWdlKikgY29uc3Qgb3ZlcnJpZGU7CkBA
IC0xNjEsNyArMTYxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVBsYXRmb3JtTGF5ZXJJ
Zk5lZWRlZCgpOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCb3JkZXIoY29u
c3QgQ29sb3ImLCBmbG9hdCB3aWR0aCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldERl
YnVnQm9yZGVyKGNvbnN0IE9wdGlvbmFsUkdCQSYsIGZsb2F0IHdpZHRoKSBvdmVycmlkZTsKIAog
ICAgIGJvb2wgZml4ZWRUb1ZpZXdwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9maXhlZFRvVmlld3Bv
cnQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTdGF0ZS5oCmluZGV4IDE0ZjJiNzc1MDQ2NzhmMDk3NjI3ODE4MDIyZGZiZWZhMjcyNDJkZjYu
LjEyMGFmNzQ2OTVmMWM0ZDI4YmRjNGYxNjkyYjE2ZTA2MTE1MGI4YmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgKQEAgLTE0Miw4
ICsxNDIsOCBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUgewogICAgIEZs
b2F0U2l6ZSBjb250ZW50c1RpbGVQaGFzZTsKICAgICBGbG9hdFNpemUgY29udGVudHNUaWxlU2l6
ZTsKICAgICBmbG9hdCBvcGFjaXR5OwotICAgIENvbG9yIHNvbGlkQ29sb3I7Ci0gICAgQ29sb3Ig
ZGVidWdCb3JkZXJDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgc29saWRDb2xvcjsKKyAgICBPcHRp
b25hbFJHQkEgZGVidWdCb3JkZXJDb2xvcjsKICAgICBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoOwog
ICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKICAgICBUZXh0dXJlTWFwcGVyQW5pbWF0aW9u
cyBhbmltYXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5n
U3RvcmVDbGllbnQuaAppbmRleCBhZTk0NTFmYjYwZTlhYjg4MjdmYzY2YWY0ODFhY2Q2OWI4NDE5
NzczLi44Yzc4ODZhMTRlNTFmZGQwM2U5MmM2NjNkZTM2NzE5MjMyMmI0OGVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGls
ZWRCYWNraW5nU3RvcmVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaApAQCAtMjYs
NyArMjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCiAKLWNsYXNzIENvbG9yOworY2xhc3MgT3B0aW9uYWxSR0JBOwogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0OwogY2xhc3MgU3VyZmFjZVVwZGF0ZUluZm87CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxh
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvVXBkYXRlQXRsYXMuY3BwCmluZGV4IDVmZjYxMjVmNDFlNTYyZTU2Y2Y5YTVkNjMxNTU1ZGVl
ZDhkMGMyNWEuLjkzMjYyODUzMGUwNDg3NzIzMmNjYTQzNDNlZDEzMjU5MjIzMThmNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9VcGRhdGVBdGxhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNwcApAQCAtNDMsNyArNDMsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBpZiAobV9zdXBwb3J0c0FscGhhKSB7CiAgICAgICAgICAgICBj
b250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5maWxsUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIG1fc2l6ZSksIENv
bG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250
ZXh0LT5maWxsUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIG1fc2l6ZSksIE9wdGlvbmFs
UkdCQTo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICAgICAgY29u
dGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
R1dpbi5jcHAKaW5kZXggYzQ5MGIxMTE2MWZkOGUyNzIzYWE5NjYyZDFiNTAwMzk0NjMxNjY4Yi4u
ZjA2M2UyZDgxNTc1OWE4YTEwOGI4NDBlMDAyYmI0MDIwNTE1YWZiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKQEAgLTE4Miw3
ICsxODIsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGb250KiBmb250LAogCiAgICAgRmxvYXRTaXplIHNoYWRv
d09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwotICAgIENvbG9yIHNoYWRvd0NvbG9yOwor
ICAgIE9wdGlvbmFsUkdCQSBzaGFkb3dDb2xvcjsKICAgICBDb2xvclNwYWNlIHNoYWRvd0NvbG9y
U3BhY2U7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFk
b3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CiAKQEAgLTE5MCw5ICsxOTAs
OSBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0LCBjb25zdCBGb250KiBmb250LAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpIHsK
ICAgICAgICAgLy8gUGFpbnQgc2ltcGxlIHNoYWRvd3Mgb3Vyc2VsdmVzIGluc3RlYWQgb2YgcmVs
eWluZyBvbiBDRyBzaGFkb3dzLCB0byBhdm9pZCBsb3Npbmcgc3VicGl4ZWwgYW50aWFsaWFzaW5n
LgogICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93KCk7Ci0gICAgICAgIENvbG9y
IGZpbGxDb2xvciA9IGdyYXBoaWNzQ29udGV4dC0+ZmlsbENvbG9yKCk7CisgICAgICAgIE9wdGlv
bmFsUkdCQSBmaWxsQ29sb3IgPSBncmFwaGljc0NvbnRleHQtPmZpbGxDb2xvcigpOwogICAgICAg
ICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlID0gZ3JhcGhpY3NDb250ZXh0LT5maWxsQ29sb3JT
cGFjZSgpOwotICAgICAgICBDb2xvciBzaGFkb3dGaWxsQ29sb3Ioc2hhZG93Q29sb3IucmVkKCks
IHNoYWRvd0NvbG9yLmdyZWVuKCksIHNoYWRvd0NvbG9yLmJsdWUoKSwgc2hhZG93Q29sb3IuYWxw
aGEoKSAqIGZpbGxDb2xvci5hbHBoYSgpIC8gMjU1KTsKKyAgICAgICAgT3B0aW9uYWxSR0JBIHNo
YWRvd0ZpbGxDb2xvcihzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hh
ZG93Q29sb3IuYmx1ZSgpLCBzaGFkb3dDb2xvci5hbHBoYSgpICogZmlsbENvbG9yLmFscGhhKCkg
LyAyNTUpOwogICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldEZpbGxDb2xvcihzaGFkb3dGaWxs
Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBv
aW50LngoKSArIHRyYW5zbGF0aW9uLndpZHRoKCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKTsKICAg
ICAgICAgLy8gSWYgc2hhZG93cyBhcmUgaWdub3JpbmcgdHJhbnNmb3JtcywgdGhlbiB3ZSBoYXZl
bid0IGFwcGxpZWQgdGhlIFkgY29vcmRpbmF0ZSBmbGlwIHlldCwgc28gZG93biBpcyBuZWdhdGl2
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCmluZGV4IDI3NDIyN2I5NmFlZGYwOGEzNDFiNGMy
MzA4MWNjMDNiOGI2ZTQxNzguLmY3NTk5NWUxNTA1ZTgyYjVkYzM5NGNkMjg0Yzc2NDkyMTdkNWZj
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcApAQCAtMTMwLDE0ICsxMzAsMTQgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdXaW5kb3dzQml0bWFwKFdpbmRvd3NCaXRtYXAqIGltYWdl
LCBjb25zdCBJbnRQb2ludCYgcG8KICAgICBDR0NvbnRleHREcmF3SW1hZ2UobV9kYXRhLT5tX2Nn
Q29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZShwb2ludC54KCksIHBvaW50LnkoKSwgaW1hZ2UtPnNp
emUoKS53aWR0aCgpLCBpbWFnZS0+c2l6ZSgpLmhlaWdodCgpKSwgY2dJbWFnZS5nZXQoKSk7ICAg
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmIHBh
dGgsIGludCB3aWR0aCwgaW50IG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYgcGF0aCwgaW50IHdpZHRoLCBp
bnQgb2Zmc2V0LCBjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yKQogewogICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKIH0KIAogLy8gRklYTUU6IFRoaXMgaXMgbmVhcmx5IGlkZW50aWNhbCB0byB0aGUg
R3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nIGZ1bmN0aW9uIGluIEdyYXBoaWNzQ29udGV4
dE1hYy5tbS4KIC8vIFRoZSBjb2RlIGNvdWxkIG1vdmUgdG8gR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
IGFuZCBiZSBzaGFyZWQuCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25z
dCBWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgd2lkdGgsIGludCBvZmZzZXQsIGNvbnN0IENv
bG9yJiBjb2xvcikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZl
Y3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB3aWR0aCwgaW50IG9mZnNldCwgY29uc3QgT3B0aW9u
YWxSR0JBJiBjb2xvcikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0xNjUsMjAgKzE2NSwyMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0Zv
Y3VzUmluZyhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgd2lkdGgsIGludAogfQog
CiAvLyBQdWxsZWQgZnJvbSBHcmFwaGljc0NvbnRleHRDRwotc3RhdGljIHZvaWQgc2V0Q0dTdHJv
a2VDb2xvcihDR0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgQ29sb3ImIGNvbG9yKQorc3RhdGlj
IHZvaWQgc2V0Q0dTdHJva2VDb2xvcihDR0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgT3B0aW9u
YWxSR0JBJiBjb2xvcikKIHsKICAgICBDR0Zsb2F0IHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhOwog
ICAgIGNvbG9yLmdldFJHQkEocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogICAgIENHQ29udGV4
dFNldFJHQlN0cm9rZUNvbG9yKGNvbnRleHQsIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKIH0K
IAotc3RhdGljIGNvbnN0IENvbG9yJiBzcGVsbGluZ1BhdHRlcm5Db2xvcigpIHsKLSAgICBzdGF0
aWMgY29uc3QgQ29sb3Igc3BlbGxpbmdDb2xvcigyNTUsIDAsIDApOworc3RhdGljIGNvbnN0IE9w
dGlvbmFsUkdCQSYgc3BlbGxpbmdQYXR0ZXJuQ29sb3IoKSB7CisgICAgc3RhdGljIGNvbnN0IE9w
dGlvbmFsUkdCQSBzcGVsbGluZ0NvbG9yKDI1NSwgMCwgMCk7CiAgICAgcmV0dXJuIHNwZWxsaW5n
Q29sb3I7CiB9CiAKLXN0YXRpYyBjb25zdCBDb2xvciYgZ3JhbW1hclBhdHRlcm5Db2xvcigpIHsK
LSAgICBzdGF0aWMgY29uc3QgQ29sb3IgZ3JhbW1hckNvbG9yKDAsIDEyOCwgMCk7CitzdGF0aWMg
Y29uc3QgT3B0aW9uYWxSR0JBJiBncmFtbWFyUGF0dGVybkNvbG9yKCkgeworICAgIHN0YXRpYyBj
b25zdCBPcHRpb25hbFJHQkEgZ3JhbW1hckNvbG9yKDAsIDEyOCwgMCk7CiAgICAgcmV0dXJuIGdy
YW1tYXJDb2xvcjsKIH0KIApAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3TGluZUZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9h
dCB3CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKICAgICBD
R0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwogCi0gICAgY29uc3QgQ29sb3ImIHBhdHRlcm5D
b2xvciA9IHN0eWxlID09IERvY3VtZW50TWFya2VyR3JhbW1hckxpbmVTdHlsZSA/IGdyYW1tYXJQ
YXR0ZXJuQ29sb3IoKSA6IHNwZWxsaW5nUGF0dGVybkNvbG9yKCk7CisgICAgY29uc3QgT3B0aW9u
YWxSR0JBJiBwYXR0ZXJuQ29sb3IgPSBzdHlsZSA9PSBEb2N1bWVudE1hcmtlckdyYW1tYXJMaW5l
U3R5bGUgPyBncmFtbWFyUGF0dGVybkNvbG9yKCkgOiBzcGVsbGluZ1BhdHRlcm5Db2xvcigpOwog
ICAgIHNldENHU3Ryb2tlQ29sb3IoY29udGV4dCwgcGF0dGVybkNvbG9yKTsKIAogICAgIHdrU2V0
UGF0dGVyblBoYXNlSW5Vc2VyU3BhY2UoY29udGV4dCwgcG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAKaW5kZXggNTk4YzQ0NDMwOGVjNTY2OTdhOWY1
ZGUyZDVhZmMxOTNiZTllM2Y4MC4uZDFmOTA3ODdmMzAyMGZhZjczODVmNjI4NmQ2Y2MxOTQyNGZi
MWQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwCkBA
IC01Niw5ICs1Niw5IEBAIFN0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoKSBjb25zdAogICAg
IHJldHVybiBtX3BsYXRmb3JtRHJhZ0RhdGEtPnRleHQoKTsKIH0KIAotQ29sb3IgRHJhZ0RhdGE6
OmFzQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIERyYWdEYXRhOjphc0NvbG9yKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gQ29sb3IoKTsKKyAgICByZXR1cm4gT3B0aW9uYWxSR0JBKCk7CiB9CiAK
IGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oCmluZGV4IDQ0YmFiY2Nj
NDkwYmY4NDlhZjE5OWJlY2RjNDJiYzRhYjIxYzg1YTcuLmJhNmNjZDQ1YTMyOWUxNGM0MzBhMjI3
NzkxOTQwZjA4YTAwODk4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9MZWdhY3lUaWxlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVn
YWN5VGlsZUNhY2hlLmgKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0
IHZpc2libGVSZWN0SW5MYXllcihDQUxheWVyICopIGNvbnN0OwogICAgIENBTGF5ZXIqIGhvc3RM
YXllcigpIGNvbnN0OwogICAgIHVuc2lnbmVkIHRpbGVDYXBhY2l0eUZvckdyaWQoTGVnYWN5VGls
ZUdyaWQqKTsKLSAgICBDb2xvciBjb2xvckZvckdyaWRUaWxlQm9yZGVyKExlZ2FjeVRpbGVHcmlk
KikgY29uc3Q7CisgICAgT3B0aW9uYWxSR0JBIGNvbG9yRm9yR3JpZFRpbGVCb3JkZXIoTGVnYWN5
VGlsZUdyaWQqKSBjb25zdDsKICAgICB2b2lkIHNldE92ZXJyaWRlVmlzaWJsZVJlY3QoT3B0aW9u
YWw8RmxvYXRSZWN0Pik7CiAKICAgICB2b2lkIGRvUGVuZGluZ1JlcGFpbnRzKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQppbmRleCA5MjdlOWE4
YjdiNDMwZWIyMTcwYjBlOWNkYWEyMDI4NDFiN2IyOGIyLi45MmRhMGQ3OGUwMzc1YjE4ZjFhMmY4
YWQ2MDRmZTVmNTZiMzc2ZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvTGVnYWN5VGlsZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9M
ZWdhY3lUaWxlQ2FjaGUubW0KQEAgLTQ3MiwxMiArNDcyLDEyIEBAIHVuc2lnbmVkIExlZ2FjeVRp
bGVDYWNoZTo6dGlsZUNhcGFjaXR5Rm9yR3JpZChMZWdhY3lUaWxlR3JpZCogZ3JpZCkKICAgICBy
ZXR1cm4gZ3JpZENhcGFjaXR5ICogMyAvIDQ7CiB9CiAKLUNvbG9yIExlZ2FjeVRpbGVDYWNoZTo6
Y29sb3JGb3JHcmlkVGlsZUJvcmRlcihMZWdhY3lUaWxlR3JpZCogZ3JpZCkgY29uc3QKK09wdGlv
bmFsUkdCQSBMZWdhY3lUaWxlQ2FjaGU6OmNvbG9yRm9yR3JpZFRpbGVCb3JkZXIoTGVnYWN5VGls
ZUdyaWQqIGdyaWQpIGNvbnN0CiB7CiAgICAgaWYgKGdyaWQgPT0gbV96b29tZWRPdXRUaWxlR3Jp
ZC5nZXQoKSkKLSAgICAgICAgcmV0dXJuIENvbG9yKC4zZiwgLjBmLCAwLjRmLCAwLjVmKTsKKyAg
ICAgICAgcmV0dXJuIE9wdGlvbmFsUkdCQSguM2YsIC4wZiwgMC40ZiwgMC41Zik7CiAKLSAgICBy
ZXR1cm4gQ29sb3IoLjBmLCAuMGYsIDAuNGYsIDAuNWYpOworICAgIHJldHVybiBPcHRpb25hbFJH
QkEoLjBmLCAuMGYsIDAuNGYsIDAuNWYpOwogfQogCiBzdGF0aWMgYm9vbCBzaG91bGRSZXBhaW50
SW5QaWVjZXMoY29uc3QgQ0dSZWN0JiBkaXJ0eVJlY3QsIENHU1JlZ2lvbk9iaiBkaXJ0eVJlZ2lv
biwgQ0dGbG9hdCBjb250ZW50c1NjYWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggZmEyNTZlNjQ2ZTdlMjE0YzVm
NTA4NGQ5NmMxYmIyODY2ZWVkMWQ1My4uMjIzN2VjNjEzZGQwYjYzMjAyZGFlNzk0YjIwNjEyNzYw
NWNhYWI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3Jt
UGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC0xMDAsOSArMTAwLDkgQEAgU3RyaW5nIFBsYXRmb3JtUGFz
dGVib2FyZDo6c3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmKQogICAgIHJldHVybiBTdHJpbmco
KTsKIH0KIAotQ29sb3IgUGxhdGZvcm1QYXN0ZWJvYXJkOjpjb2xvcigpCitPcHRpb25hbFJHQkEg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpjb2xvcigpCiB7Ci0gICAgcmV0dXJuIENvbG9yKCk7CisgICAg
cmV0dXJuIE9wdGlvbmFsUkdCQSgpOwogfQogCiBVUkwgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1cmwo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KaW5kZXggOGYwYmU1ZTRlYjNjZDdjN2Vl
OWFmZjYyMjU3MjBlNjNkYTM0M2E3ZC4uOGY0Nzg0NmI4OGQxMzdhOTc3YjEzNGIzNmUzOTgxMWEx
MDBjNmI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCkBAIC0xNjUsNyArMTY1
LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkU2V0dXBG
dWxsc2NyZWVuKCkKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ+IHN0cm9uZ1RoaXModGhpcyk7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IHZpZGVvRnVsbHNj
cmVlbkxheWVyID0gW21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl07CiAgICAgV2ViVGhyZWFk
UnVuKFtzdHJvbmdUaGlzLCB0aGlzLCB2aWRlb0Z1bGxzY3JlZW5MYXllcl0gewotICAgICAgICBb
dmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoV2Vi
Q29yZTo6Q29sb3I6OnRyYW5zcGFyZW50LCBXZWJDb3JlOjpDb2xvclNwYWNlRGV2aWNlUkdCKV07
CisgICAgICAgIFt2aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVk
Q0dDb2xvcihXZWJDb3JlOjpPcHRpb25hbFJHQkE6OnRyYW5zcGFyZW50LCBXZWJDb3JlOjpDb2xv
clNwYWNlRGV2aWNlUkdCKV07CiAgICAgICAgIG1fbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxh
eWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLmdldCgpKTsKICAgICAgICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXNdIHsKICAgICAgICAg
ICAgIG1faW50ZXJmYWNlLT5lbnRlckZ1bGxzY3JlZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9EcmFnRGF0YU1hYy5tbQppbmRleCA5Y2IyMDhhMDIyNWQ5NjczMmU2Y2YzYjE5ZTFm
ODkyMzVlYjNhYzIyLi44MDIyODkxY2YwODJmZTFlODYzZDE4ZDU2MzFmNDIwN2FhZDdiMzBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBAIC0xMTYsNyAr
MTE2LDcgQEAgU3RyaW5nIERyYWdEYXRhOjphc1BsYWluVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJu
IFsoTlNTdHJpbmcgKilzdHJpbmcgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGlu
Z107CiB9CiAKLUNvbG9yIERyYWdEYXRhOjphc0NvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBE
cmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Y29sb3IobV9wYXN0ZWJvYXJkTmFtZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJk
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1h
Yy5tbQppbmRleCBlODIyOTlmZmM5YTViZjhjNjI0MWMxODZlNjNjMGE4ODhhMzJkMzQzLi4xOTEz
NzFmYzM3OTM4MWE5YTY0ZTJhZWQ4ZmNiNDFmNmZjMDVmOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTgyLDcg
KzgyLDcgQEAgU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6dW5pcXVlTmFtZSgpCiAgICAgcmV0
dXJuIFtbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoVW5pcXVlTmFtZV0gbmFtZV07CiB9CiAK
LUNvbG9yIFBsYXRmb3JtUGFzdGVib2FyZDo6Y29sb3IoKQorT3B0aW9uYWxSR0JBIFBsYXRmb3Jt
UGFzdGVib2FyZDo6Y29sb3IoKQogewogICAgIE5TQ29sb3IgKmNvbG9yID0gW05TQ29sb3IgY29s
b3JGcm9tUGFzdGVib2FyZDptX3Bhc3RlYm9hcmQuZ2V0KCldOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaAppbmRleCBkY2Q4NjE5ZWJj
NDA1Y2U3MWUzNzZlYmY2YmI0ODFjMTEzY2FmYzYxLi4yNTgwYmUyZGQ0MWZmZWU2YzQyODI0ZDI5
OGQyM2M4MTFiNjcwNjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsYmFyVGhlbWVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsYmFyVGhlbWVNYWMuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZv
aWQgc2V0SXNDdXJyZW50bHlEcmF3aW5nSW50b0xheWVyKGJvb2wpOwogCiAjaWYgRU5BQkxFKFJV
QkJFUl9CQU5ESU5HKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFVwT3Zlcmhh
bmdBcmVhQmFja2dyb3VuZChDQUxheWVyICosIGNvbnN0IENvbG9yJiBjdXN0b21CYWNrZ3JvdW5k
Q29sb3IgPSBDb2xvcigpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRVcE92
ZXJoYW5nQXJlYUJhY2tncm91bmQoQ0FMYXllciAqLCBjb25zdCBPcHRpb25hbFJHQkEmIGN1c3Rv
bUJhY2tncm91bmRDb2xvciA9IE9wdGlvbmFsUkdCQSgpKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdm9pZCByZW1vdmVPdmVyaGFuZ0FyZWFCYWNrZ3JvdW5kKENBTGF5ZXIgKik7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRVcE92ZXJoYW5nQXJlYVNoYWRvdyhDQUxh
eWVyICopOwpAQCAtODksNyArODksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgaW50IHNjcm9sbGJhclBh
cnRUb0hJUHJlc3NlZFN0YXRlKFNjcm9sbGJhclBhcnQpOwogCiAjaWYgRU5BQkxFKFJVQkJFUl9C
QU5ESU5HKQotICAgIHZpcnR1YWwgdm9pZCBzZXRVcE92ZXJoYW5nQXJlYXNMYXllckNvbnRlbnRz
KEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBDb2xvciYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRVcE92ZXJoYW5nQXJlYXNMYXllckNvbnRlbnRzKEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBP
cHRpb25hbFJHQkEmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VXBDb250ZW50U2hh
ZG93TGF5ZXIoR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCmluZGV4IDc3ZjJk
ODA4Y2M2NDg1NzExYjFhOTJlYzhmOGJjYjk3YzM4YzY4NjYuLjkxYzgyZGFhNDE1NDYwZmE0NDgy
NGY1NDQ2MGUyNGI1NThmYmU5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KQEAgLTU0MCw3ICs1NDAsNyBAQCBzdGF0aWMgUmV0YWlu
UHRyPENHQ29sb3JSZWY+IGxpbmVuQmFja2dyb3VuZENvbG9yKCkKICAgICByZXR1cm4gYWRvcHRD
RihDR0NvbG9yQ3JlYXRlV2l0aFBhdHRlcm4oY29sb3JTcGFjZS5nZXQoKSwgcGF0dGVybi5nZXQo
KSwgJmFscGhhKSk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnNldFVwT3ZlcmhhbmdB
cmVhQmFja2dyb3VuZChDQUxheWVyICpsYXllciwgY29uc3QgQ29sb3ImIGN1c3RvbUJhY2tncm91
bmRDb2xvcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnNldFVwT3ZlcmhhbmdBcmVhQmFja2dy
b3VuZChDQUxheWVyICpsYXllciwgY29uc3QgT3B0aW9uYWxSR0JBJiBjdXN0b21CYWNrZ3JvdW5k
Q29sb3IpCiB7CiAgICAgc3RhdGljIENHQ29sb3JSZWYgY2FjaGVkTGluZW5CYWNrZ3JvdW5kQ29s
b3IgPSBsaW5lbkJhY2tncm91bmRDb2xvcigpLmxlYWtSZWYoKTsKICAgICAvLyBXZSBvcGVyYXRl
IG9uIHRoZSBDQUxheWVyIGRpcmVjdGx5IGhlcmUsIHNpbmNlIEdyYXBoaWNzTGF5ZXIgZG9lc24n
dCBoYXZlIHRoZSBjb25jZXB0CkBAIC01NzYsNyArNTc2LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVt
ZU1hYzo6cmVtb3ZlT3ZlcmhhbmdBcmVhU2hhZG93KENBTGF5ZXIgKmxheWVyKQogICAgIGxheWVy
LnNoYWRvd09wYWNpdHkgPSAwOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpzZXRVcE92
ZXJoYW5nQXJlYXNMYXllckNvbnRlbnRzKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIGNv
bnN0IENvbG9yJiBjdXN0b21CYWNrZ3JvdW5kQ29sb3IpCit2b2lkIFNjcm9sbGJhclRoZW1lTWFj
OjpzZXRVcE92ZXJoYW5nQXJlYXNMYXllckNvbnRlbnRzKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNz
TGF5ZXIsIGNvbnN0IE9wdGlvbmFsUkdCQSYgY3VzdG9tQmFja2dyb3VuZENvbG9yKQogewogICAg
IFNjcm9sbGJhclRoZW1lTWFjOjpzZXRVcE92ZXJoYW5nQXJlYUJhY2tncm91bmQoZ3JhcGhpY3NM
YXllci0+cGxhdGZvcm1MYXllcigpLCBjdXN0b21CYWNrZ3JvdW5kQ29sb3IpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwCmlu
ZGV4IDk5NTQ0N2I1NjgwMTAzOGNmZmUzMzE1ODljNzc2NDBiY2ZmYzgxNGEuLjRlN2Y0M2FmZGM2
Y2RlZWM5YTQ3MWVlNzY4ZDY0NzI0ZTk2MDE5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAKQEAgLTQ0LDEzICs0NCwxMyBA
QCBpbnQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29u
dHJvbFNpemUgY29udHJvbFNpemUpCiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRy
YWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QpCiB7Ci0gICAgY29udGV4dC5maWxsUmVjdCh0
cmFja1JlY3QsIHNjcm9sbGJhci5lbmFibGVkKCkgPyBDb2xvcjo6bGlnaHRHcmF5IDogQ29sb3Io
MHhGRkUwRTBFMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuZmlsbFJlY3Qo
dHJhY2tSZWN0LCBzY3JvbGxiYXIuZW5hYmxlZCgpID8gT3B0aW9uYWxSR0JBOjpsaWdodEdyYXkg
OiBPcHRpb25hbFJHQkEoMHhGRkUwRTBFMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogfQogCiB2
b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJlY3QpCiB7CiAg
ICAgaWYgKHNjcm9sbGJhci5lbmFibGVkKCkpCi0gICAgICAgIGNvbnRleHQuZmlsbFJlY3QodGh1
bWJSZWN0LCBDb2xvcjo6ZGFya0dyYXksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBj
b250ZXh0LmZpbGxSZWN0KHRodW1iUmVjdCwgT3B0aW9uYWxSR0JBOjpkYXJrR3JheSwgQ29sb3JT
cGFjZURldmljZVJHQik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJh
Z0RhdGFXaW4uY3BwCmluZGV4IDcwMDU3MGFkNTQwODUyNDk4ZGExMDZjNmU2NWE2Zjk5ZjNkMGY1
MjYuLjVmNjA4MWU0MTJlYTQxZTI1MGMzNWJlNzM2MWI1YTA3NWRiZjQzNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcApAQCAtMjAyLDkgKzIwMiw5IEBA
IGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogICAgICAg
ICB8fCBjb250YWluc0NvbG9yKCk7CiB9CiAKLUNvbG9yIERyYWdEYXRhOjphc0NvbG9yKCkgY29u
c3QKK09wdGlvbmFsUkdCQSBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IENvbG9yKCk7CisgICAgcmV0dXJuIE9wdGlvbmFsUkdCQSgpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCmluZGV4IDVlMGRkNmE1YWM0YWMw
MzAyMzNiNzFjYjExOTlkODg0MTkwMzIyZTQuLmRlZWYzYjE2ZGVhOGJkZGViNDhhY2UyMWIyZGZi
YWM3MjJhZWNmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFn
SW1hZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VX
aW4uY3BwCkBAIC0xODksMTQgKzE4OSwxNCBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdl
Rm9yTGluayhVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBpbkxhYmVsLCBGb250UmVuZGVyaQogICAg
IEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KGNvbnRleHRSZWYpOwogICAgIC8vIE9uIE1hYyBhbHBo
YSBpcyB7MC43LCAwLjcsIDAuNywgMC44fSwgaG93ZXZlciB3ZSBjYW4ndCBjb250cm9sIGFscGhh
CiAgICAgLy8gZm9yIGRyYWcgaW1hZ2VzIG9uIHdpbiwgc28gd2UgdXNlIDEKLSAgICBzdGF0aWMg
Y29uc3QgQ29sb3IgYmFja2dyb3VuZENvbG9yKDE0MCwgMTQwLCAxNDApOworICAgIHN0YXRpYyBj
b25zdCBPcHRpb25hbFJHQkEgYmFja2dyb3VuZENvbG9yKDE0MCwgMTQwLCAxNDApOwogICAgIHN0
YXRpYyBjb25zdCBJbnRTaXplIHJhZGlpKERyYWdMYWJlbFJhZGl1cywgRHJhZ0xhYmVsUmFkaXVz
KTsKICAgICBJbnRSZWN0IHJlY3QoMCwgMCwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5o
ZWlnaHQoKSk7CiAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChy
ZWN0LCByYWRpaSwgcmFkaWksIHJhZGlpLCByYWRpaSksIGJhY2tncm91bmRDb2xvciwgQ29sb3JT
cGFjZURldmljZVJHQik7CiAgCiAgICAgLy8gRHJhdyB0aGUgdGV4dAotICAgIHN0YXRpYyBjb25z
dCBDb2xvciB0b3BDb2xvcigwLCAwLCAwLCAyNTUpOyAvLyBvcmlnaW5hbCBhbHBoYSA9IDAuNzUK
LSAgICBzdGF0aWMgY29uc3QgQ29sb3IgYm90dG9tQ29sb3IoMjU1LCAyNTUsIDI1NSwgMTI3KTsg
Ly8gb3JpZ2luYWwgYWxwaGEgPSAwLjUKKyAgICBzdGF0aWMgY29uc3QgT3B0aW9uYWxSR0JBIHRv
cENvbG9yKDAsIDAsIDAsIDI1NSk7IC8vIG9yaWdpbmFsIGFscGhhID0gMC43NQorICAgIHN0YXRp
YyBjb25zdCBPcHRpb25hbFJHQkEgYm90dG9tQ29sb3IoMjU1LCAyNTUsIDI1NSwgMTI3KTsgLy8g
b3JpZ2luYWwgYWxwaGEgPSAwLjUKICAgICBpZiAoZHJhd1VSTFN0cmluZykgewogICAgICAgICBp
ZiAoY2xpcFVSTFN0cmluZykKICAgICAgICAgICAgIHVybFN0cmluZyA9IFN0cmluZ1RydW5jYXRv
cjo6cmlnaHRUcnVuY2F0ZSh1cmxTdHJpbmcsIGltYWdlU2l6ZS53aWR0aCgpIC0gKERyYWdMYWJl
bEJvcmRlclggKiAyLjBmKSwgKnVybEZvbnQsIFN0cmluZ1RydW5jYXRvcjo6RW5hYmxlUm91bmRp
bmdIYWNrcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBN
ZW51V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3Bw
CmluZGV4IDE5NjdmYWVkNDQwZjI2YmUxNmQxMDc5NmRlMGIxNWIzNGMyMzhiZDUuLmNkZDdmODRm
NGQzN2EwYjU3YjI1MjUwODkzMjZkNDFjNWNjNzA0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCkBAIC02MTUsNyArNjE1LDcgQEAgdm9pZCBQb3B1
cE1lbnVXaW46OnBhaW50KGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIEhEQyBoZGMpCiAgICAg
Zm9yIChpbnQgeSA9IGxpc3RSZWN0LnkoKTsgeSA8IGxpc3RSZWN0Lm1heFkoKTsgeSArPSBtX2l0
ZW1IZWlnaHQpIHsKICAgICAgICAgaW50IGluZGV4ID0geSAvIG1faXRlbUhlaWdodDsKIAotICAg
ICAgICBDb2xvciBvcHRpb25CYWNrZ3JvdW5kQ29sb3IsIG9wdGlvblRleHRDb2xvcjsKKyAgICAg
ICAgT3B0aW9uYWxSR0JBIG9wdGlvbkJhY2tncm91bmRDb2xvciwgb3B0aW9uVGV4dENvbG9yOwog
ICAgICAgICBQb3B1cE1lbnVTdHlsZSBpdGVtU3R5bGUgPSBjbGllbnQoKS0+aXRlbVN0eWxlKGlu
ZGV4KTsKICAgICAgICAgaWYgKGluZGV4ID09IGZvY3VzZWRJbmRleCgpKSB7CiAgICAgICAgICAg
ICBvcHRpb25CYWNrZ3JvdW5kQ29sb3IgPSBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPmFj
dGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcAppbmRleCA5NGUwOTQ5
MTBlMjhmMzA5ZTAzYzVlMDMzM2VhYjFkNGY0OGYwYzZjLi4zNjA2Y2MwNTgxOTJhMDcxYWQ4YmZi
ZmUzODU3ZjFlMWNhMjRlNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyBib29s
IGlzT25lTGVmdFRvUmlnaHRSdW4oY29uc3QgVGV4dFJ1biYgcnVuKQogICAgIHJldHVybiB0cnVl
OwogfQogCi1zdGF0aWMgdm9pZCBkb0RyYXdUZXh0QXRQb2ludChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgSW50UG9pbnQmIHBvaW50LCBjb25zdCBG
b250Q2FzY2FkZSYgZm9udCwgY29uc3QgQ29sb3ImIGNvbG9yLCBpbnQgdW5kZXJsaW5lZEluZGV4
KQorc3RhdGljIHZvaWQgZG9EcmF3VGV4dEF0UG9pbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEludFBvaW50JiBwb2ludCwgY29uc3QgRm9udENh
c2NhZGUmIGZvbnQsIGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IsIGludCB1bmRlcmxpbmVkSW5k
ZXgpCiB7CiAgICAgVGV4dFJ1biBydW4odGV4dCk7CiAKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGlj
IHZvaWQgZG9EcmF3VGV4dEF0UG9pbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnMKICAgICB9CiB9CiAKLXZvaWQgV2ViQ29yZURyYXdEb3VibGVkVGV4
dEF0UG9pbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IEludFBvaW50JiBwb2ludCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IENvbG9y
JiB0b3BDb2xvciwgY29uc3QgQ29sb3ImIGJvdHRvbUNvbG9yLCBpbnQgdW5kZXJsaW5lZEluZGV4
KQordm9pZCBXZWJDb3JlRHJhd0RvdWJsZWRUZXh0QXRQb2ludChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgSW50UG9pbnQmIHBvaW50LCBjb25zdCBG
b250Q2FzY2FkZSYgZm9udCwgY29uc3QgT3B0aW9uYWxSR0JBJiB0b3BDb2xvciwgY29uc3QgT3B0
aW9uYWxSR0JBJiBib3R0b21Db2xvciwgaW50IHVuZGVybGluZWRJbmRleCkKIHsKICAgICBjb250
ZXh0LnNhdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dl
YkNvcmVUZXh0UmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3Jl
VGV4dFJlbmRlcmVyLmgKaW5kZXggYjg0M2Y3NjBiZjBjZDQ1OTgzY2YwYTg1YjM3MTkyZTQ4ZWNk
MmQ3Ni4uYzAzMzM1ODQ0OGU5ZTU4OTVhNDJlODJmMWNhZDI3NjhmNTk4MjRmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5oCkBAIC0z
MCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgQ29sb3I7
CisgICAgY2xhc3MgT3B0aW9uYWxSR0JBOwogICAgIGNsYXNzIEZvbnRDYXNjYWRlOwogICAgIGNs
YXNzIEdyYXBoaWNzQ29udGV4dDsKICAgICBjbGFzcyBJbnRQb2ludDsKIAotICAgIHZvaWQgV2Vi
Q29yZURyYXdEb3VibGVkVGV4dEF0UG9pbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IENvbG9yJiB0b3BD
b2xvciwgY29uc3QgQ29sb3ImIGJvdHRvbUNvbG9yLCBpbnQgdW5kZXJsaW5lZEluZGV4ID0gLTEp
OworICAgIHZvaWQgV2ViQ29yZURyYXdEb3VibGVkVGV4dEF0UG9pbnQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBGb250Q2FzY2FkZSYsIGNv
bnN0IE9wdGlvbmFsUkdCQSYgdG9wQ29sb3IsIGNvbnN0IE9wdGlvbmFsUkdCQSYgYm90dG9tQ29s
b3IsIGludCB1bmRlcmxpbmVkSW5kZXggPSAtMSk7CiAgICAgZmxvYXQgV2ViQ29yZVRleHRGbG9h
dFdpZHRoKGNvbnN0IFN0cmluZyYsIGNvbnN0IEZvbnRDYXNjYWRlJik7CiAKICAgICB2b2lkIFdl
YkNvcmVTZXRTaG91bGRVc2VGb250U21vb3RoaW5nKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0JvcmRlckVkZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0JvcmRlckVkZ2UuY3BwCmluZGV4IGU2MTJkZTVmNmQ0N2UyZjAwYjQ5OTQyNDljZDIyODcz
OTA5ZTViMjEuLjVhNGJlZDNkMTYxZmMwODdhZTFjOTY3ZTA0YzcyOWY1MjRjMGU3NjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Cb3JkZXJFZGdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQm9yZGVyRWRnZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1Cb3JkZXJFZGdlOjpCb3JkZXJFZGdlKExheW91dFVuaXQg
ZWRnZVdpZHRoLCBDb2xvciBlZGdlQ29sb3IsIEVCb3JkZXJTdHlsZSBlZGdlU3R5bGUsIGJvb2wg
ZWRnZUlzVHJhbnNwYXJlbnQsIGJvb2wgZWRnZUlzUHJlc2VudCwgZmxvYXQgZGV2aWNlUGl4ZWxS
YXRpbykKK0JvcmRlckVkZ2U6OkJvcmRlckVkZ2UoTGF5b3V0VW5pdCBlZGdlV2lkdGgsIE9wdGlv
bmFsUkdCQSBlZGdlQ29sb3IsIEVCb3JkZXJTdHlsZSBlZGdlU3R5bGUsIGJvb2wgZWRnZUlzVHJh
bnNwYXJlbnQsIGJvb2wgZWRnZUlzUHJlc2VudCwgZmxvYXQgZGV2aWNlUGl4ZWxSYXRpbykKICAg
ICA6IG1fd2lkdGgoZWRnZVdpZHRoKQogICAgICwgbV9jb2xvcihlZGdlQ29sb3IpCiAgICAgLCBt
X3N0eWxlKGVkZ2VTdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9C
b3JkZXJFZGdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQm9yZGVyRWRnZS5oCmluZGV4
IDlkM2NkM2Q5YTkyMjVjMTdkZjg4Y2YzM2ZlYWJiZTVlNjFlYzZhYzkuLjc0YTE2MDYyNjczMTJi
MzZmNGY2Mjc2ZDJiMGEzYmI0MWIyYTg2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9Cb3JkZXJFZGdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JvcmRl
ckVkZ2UuaApAQCAtNDYsMTIgKzQ2LDEyIEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgQm9yZGVy
RWRnZSgpOwotICAgIEJvcmRlckVkZ2UoTGF5b3V0VW5pdCBlZGdlV2lkdGgsIENvbG9yIGVkZ2VD
b2xvciwgRUJvcmRlclN0eWxlIGVkZ2VTdHlsZSwgYm9vbCBlZGdlSXNUcmFuc3BhcmVudCwgYm9v
bCBlZGdlSXNQcmVzZW50LCBmbG9hdCBkZXZpY2VQaXhlbFJhdGlvKTsKKyAgICBCb3JkZXJFZGdl
KExheW91dFVuaXQgZWRnZVdpZHRoLCBPcHRpb25hbFJHQkEgZWRnZUNvbG9yLCBFQm9yZGVyU3R5
bGUgZWRnZVN0eWxlLCBib29sIGVkZ2VJc1RyYW5zcGFyZW50LCBib29sIGVkZ2VJc1ByZXNlbnQs
IGZsb2F0IGRldmljZVBpeGVsUmF0aW8pOwogCiAgICAgc3RhdGljIHZvaWQgZ2V0Qm9yZGVyRWRn
ZUluZm8oQm9yZGVyRWRnZSBlZGdlc1tdLCBjb25zdCBSZW5kZXJTdHlsZSYsIGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29sIGlu
Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1ZSk7CiAKICAgICBFQm9yZGVyU3R5bGUgc3R5bGUo
KSBjb25zdCB7IHJldHVybiBtX3N0eWxlOyB9Ci0gICAgQ29sb3IgY29sb3IoKSBjb25zdCB7IHJl
dHVybiBtX2NvbG9yOyB9CisgICAgT3B0aW9uYWxSR0JBIGNvbG9yKCkgY29uc3QgeyByZXR1cm4g
bV9jb2xvcjsgfQogICAgIGJvb2wgaXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNU
cmFuc3BhcmVudDsgfQogICAgIGJvb2wgaXNQcmVzZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc1By
ZXNlbnQ7IH0KIApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIGlubGluZSBmbG9hdCBi
b3JkZXJXaWR0aEluRGV2aWNlUGl4ZWwoaW50IGxvZ2ljYWxQaXhlbHMpIGNvbnN0IHsgcmV0dXJu
IExheW91dFVuaXQobG9naWNhbFBpeGVscyAvIG1fZGV2aWNlUGl4ZWxSYXRpbykudG9GbG9hdCgp
OyB9CiAKICAgICBMYXlvdXRVbml0IG1fd2lkdGg7Ci0gICAgQ29sb3IgbV9jb2xvcjsKKyAgICBP
cHRpb25hbFJHQkEgbV9jb2xvcjsKICAgICBFQm9yZGVyU3R5bGUgbV9zdHlsZTsKICAgICBib29s
IG1faXNUcmFuc3BhcmVudDsKICAgICBib29sIG1faXNQcmVzZW50OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FbGxpcHNpc0JveC5jcHAKaW5kZXggNDY5ZjdlZmVlODdmNzUyMTQyMjUyNmRjNjY1
YTZjNDE2ZDRlZjgzNS4uYmNlYzk1ZWRiMmQ5M2I3ODhjZGU1ZGZjMjI5MzY0YTY1NzU5ZmE1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCkBAIC00NCw3ICs0NCw3
IEBAIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExhCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHls
ZSA9IHRoaXMtPmxpbmVTdHlsZSgpOwotICAgIENvbG9yIHRleHRDb2xvciA9IGxpbmVTdHlsZS52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yKTsKKyAg
ICBPcHRpb25hbFJHQkEgdGV4dENvbG9yID0gbGluZVN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IpOwogICAgIGlmICh0ZXh0Q29sb3IgIT0g
Y29udGV4dC0+ZmlsbENvbG9yKCkpCiAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcih0ZXh0
Q29sb3IsIGxpbmVTdHlsZS5jb2xvclNwYWNlKCkpOwogICAgIGJvb2wgc2V0U2hhZG93ID0gZmFs
c2U7CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExhCiAgICAgICAgIHBh
aW50U2VsZWN0aW9uKGNvbnRleHQsIHBhaW50T2Zmc2V0LCBsaW5lU3R5bGUsIGZvbnQpOwogCiAg
ICAgICAgIC8vIFNlbGVjdCB0aGUgY29ycmVjdCBjb2xvciBmb3IgcGFpbnRpbmcgdGhlIHRleHQu
Ci0gICAgICAgIENvbG9yIGZvcmVncm91bmQgPSBwYWludEluZm8uZm9yY2VUZXh0Q29sb3IoKSA/
IHBhaW50SW5mby5mb3JjZWRUZXh0Q29sb3IoKSA6IGJsb2NrRmxvdygpLnNlbGVjdGlvbkZvcmVn
cm91bmRDb2xvcigpOworICAgICAgICBPcHRpb25hbFJHQkEgZm9yZWdyb3VuZCA9IHBhaW50SW5m
by5mb3JjZVRleHRDb2xvcigpID8gcGFpbnRJbmZvLmZvcmNlZFRleHRDb2xvcigpIDogYmxvY2tG
bG93KCkuc2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7CiAgICAgICAgIGlmIChmb3JlZ3JvdW5k
LmlzVmFsaWQoKSAmJiBmb3JlZ3JvdW5kICE9IHRleHRDb2xvcikKICAgICAgICAgICAgIGNvbnRl
eHQtPnNldEZpbGxDb2xvcihmb3JlZ3JvdW5kLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKICAg
ICB9CkBAIC0xMjEsMTUgKzEyMSwxNSBAQCBJbnRSZWN0IEVsbGlwc2lzQm94OjpzZWxlY3Rpb25S
ZWN0KCkKIAogdm9pZCBFbGxpcHNpc0JveDo6cGFpbnRTZWxlY3Rpb24oR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQpCiB7Ci0gICAgQ29sb3IgdGV4dENv
bG9yID0gc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpOwotICAg
IENvbG9yIGMgPSBibG9ja0Zsb3coKS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICBP
cHRpb25hbFJHQkEgdGV4dENvbG9yID0gc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1By
b3BlcnR5Q29sb3IpOworICAgIE9wdGlvbmFsUkdCQSBjID0gYmxvY2tGbG93KCkuc2VsZWN0aW9u
QmFja2dyb3VuZENvbG9yKCk7CiAgICAgaWYgKCFjLmlzVmFsaWQoKSB8fCAhYy5hbHBoYSgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBJZiB0aGUgdGV4dCBjb2xvciBlbmRzIHVwIGJlaW5n
IHRoZSBzYW1lIGFzIHRoZSBzZWxlY3Rpb24gYmFja2dyb3VuZCwgaW52ZXJ0IHRoZSBzZWxlY3Rp
b24KICAgICAvLyBiYWNrZ3JvdW5kLgogICAgIGlmICh0ZXh0Q29sb3IgPT0gYykKLSAgICAgICAg
YyA9IENvbG9yKDB4ZmYgLSBjLnJlZCgpLCAweGZmIC0gYy5ncmVlbigpLCAweGZmIC0gYy5ibHVl
KCkpOworICAgICAgICBjID0gT3B0aW9uYWxSR0JBKDB4ZmYgLSBjLnJlZCgpLCAweGZmIC0gYy5n
cmVlbigpLCAweGZmIC0gYy5ibHVlKCkpOwogCiAgICAgY29uc3QgUm9vdElubGluZUJveCYgcm9v
dEJveCA9IHJvb3QoKTsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
KmNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZs
b3dCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCmlu
ZGV4IDJkNmZiNjk0NDhmOGYxYmI1OTQ0YzEwYmE1NDkwMTE1NjdkNjc3MzcuLjVkYWJkNzA1MTMx
NzIyNzVjNzIwN2ZhNWNkZTI4MTczZTg5YjA4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lRmxvd0JveC5jcHAKQEAgLTExOTUsNyArMTE5NSw3IEBAIHZvaWQgSW5saW5lRmxv
d0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mZnNldCwKICAgICB9CiB9CiAKLXZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXJz
KGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgY29uc3QgRmlsbExh
eWVyKiBmaWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wKQordm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IE9wdGlvbmFsUkdCQSYgYywgY29uc3QgRmlsbExheWVyKiBmaWxs
TGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogewog
ICAgIGlmICghZmlsbExheWVyKQogICAgICAgICByZXR1cm47CkBAIC0xMjEyLDcgKzEyMTIsNyBA
QCBib29sIElubGluZUZsb3dCb3g6OmJveFNoYWRvd0NhbkJlQXBwbGllZFRvQmFja2dyb3VuZChj
b25zdCBGaWxsTGF5ZXImIGxhc3RCYWNrZwogICAgIHJldHVybiAoIWhhc0ZpbGxJbWFnZSAmJiAh
cmVuZGVyZXIoKS5zdHlsZSgpLmhhc0JvcmRlclJhZGl1cygpKSB8fCAoIXByZXZMaW5lQm94KCkg
JiYgIW5leHRMaW5lQm94KCkpIHx8ICFwYXJlbnQoKTsKIH0KIAotdm9pZCBJbmxpbmVGbG93Qm94
OjpwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3Im
IGMsIGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBD
b21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIo
Y29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IE9wdGlvbmFsUkdCQSYgYywgY29uc3Qg
RmlsbExheWVyKiBmaWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wKQogewogICAgIFN0eWxlSW1hZ2UqIGltZyA9IGZpbGxMYXllci0+aW1hZ2UoKTsK
ICAgICBib29sIGhhc0ZpbGxJbWFnZSA9IGltZyAmJiBpbWctPmNhblJlbmRlcigmcmVuZGVyZXIo
KSwgcmVuZGVyZXIoKS5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CkBAIC0xMzQzLDcgKzEzNDMs
NyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JgogICAgIGlmICghcmVuZGVyZXIoKS5ib3hTaGFk
b3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoYWRqdXN0ZWRQYWludG9mZnNldCwgQmFja2dy
b3VuZEJsZWVkTm9uZSwgdGhpcykpCiAgICAgICAgIHBhaW50Qm94U2hhZG93KHBhaW50SW5mbywg
bGluZVN0eWxlLCBOb3JtYWwsIHBhaW50UmVjdCk7CiAKLSAgICBDb2xvciBjID0gbGluZVN0eWxl
LnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CisgICAg
T3B0aW9uYWxSR0JBIGMgPSBsaW5lU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yKTsKICAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBjLCBs
aW5lU3R5bGUuYmFja2dyb3VuZExheWVycygpLCBwYWludFJlY3QpOwogICAgIHBhaW50Qm94U2hh
ZG93KHBhaW50SW5mbywgbGluZVN0eWxlLCBJbnNldCwgcGFpbnRSZWN0KTsKIApAQCAtMTQyMiw3
ICsxNDIyLDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludE1hc2soUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMKICAgICB9CiAKICAgICBMYXlvdXRS
ZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldCwgZnJhbWVSZWN0
LnNpemUoKSk7Ci0gICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgQ29sb3IoKSwgcmVuZGVy
ZXIoKS5zdHlsZSgpLm1hc2tMYXllcnMoKSwgcGFpbnRSZWN0LCBjb21wb3NpdGVPcCk7CisgICAg
cGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgT3B0aW9uYWxSR0JBKCksIHJlbmRlcmVyKCkuc3R5
bGUoKS5tYXNrTGF5ZXJzKCksIHBhaW50UmVjdCwgY29tcG9zaXRlT3ApOwogICAgIAogICAgIGJv
b2wgaGFzQm94SW1hZ2UgPSBtYXNrQm94SW1hZ2UgJiYgbWFza0JveEltYWdlLT5jYW5SZW5kZXIo
JnJlbmRlcmVyKCksIHJlbmRlcmVyKCkuc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOwogICAgIGlm
ICghaGFzQm94SW1hZ2UgfHwgIW1hc2tCb3hJbWFnZS0+aXNMb2FkZWQoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKaW5kZXggYWY3ODQ3NGRjNDExYTAyMzkwMWQ4
ZTkyYjM0NDgxZWNkMzhiOTIzOC4uZjE3N2RlMDk0MmYzNWQ3Y2U4NTAxMmFjNGM3YzRjMTE1ZjUx
MmYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCkBAIC0xMTYs
OCArMTE2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBwYWludEJveERlY29yYXRpb25zKFBhaW50
SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgdm9pZCBwYWludE1hc2soUGFpbnRJbmZv
JiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKLSAgICB2b2lkIHBhaW50RmlsbExheWVycyhjb25zdCBQ
YWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJl
Y3QmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgIHZvaWQg
cGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3ImLCBjb25zdCBGaWxs
TGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVT
b3VyY2VPdmVyKTsKKyAgICB2b2lkIHBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mLCBj
b25zdCBPcHRpb25hbFJHQkEmLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0Jiwg
Q29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICB2b2lkIHBhaW50
RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IE9wdGlvbmFsUkdCQSYsIGNvbnN0IEZp
bGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0
ZVNvdXJjZU92ZXIpOwogICAgIHZvaWQgcGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgUmVuZGVyU3R5bGUmLCBTaGFkb3dTdHlsZSwgY29uc3QgTGF5b3V0UmVjdCYpOwogICAg
IHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIExheW91
dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0
JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlv
dXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5p
dCBsaW5lQm90dG9tLCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCA0MGI0ZDJlMzk5Y2Y0MDZjZWJlODMxNjk2
YzJkZDMyMDQxZDdjOTRhLi4zYzQ3ODE0YjVjZjcxMGIxMTMyYTA0ZWQyODA4MmYxODIzMmMwYzBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC02NzUs
NyArNjc1LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFydEVuZChpbnQmIHNQ
b3MsIGludCYgZVBvcykKICAgICBlUG9zID0gc3RkOjptaW4oZW5kUG9zIC0gbV9zdGFydCwgKGlu
dCltX2xlbik7CiB9CiAKLXZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb24oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIENvbG9yIHRleHRDb2xv
cikKK3ZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb24oR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIE9wdGlvbmFsUkdCQSB0ZXh0Q29sb3IpCiB7
CiAjaWYgRU5BQkxFKFRFWFRfU0VMRUNUSU9OKQogICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlz
YWJsZWQoKSkKQEAgLTY4NywxNCArNjg3LDE0IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRT
ZWxlY3Rpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBiCiAg
ICAgaWYgKHNQb3MgPj0gZVBvcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ29sb3IgYyA9IHJl
bmRlcmVyKCkuc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7CisgICAgT3B0aW9uYWxSR0JBIGMg
PSByZW5kZXJlcigpLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOwogICAgIGlmICghYy5pc1Zh
bGlkKCkgfHwgYy5hbHBoYSgpID09IDApCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElmIHRo
ZSB0ZXh0IGNvbG9yIGVuZHMgdXAgYmVpbmcgdGhlIHNhbWUgYXMgdGhlIHNlbGVjdGlvbiBiYWNr
Z3JvdW5kLCBpbnZlcnQgdGhlIHNlbGVjdGlvbgogICAgIC8vIGJhY2tncm91bmQuCiAgICAgaWYg
KHRleHRDb2xvciA9PSBjKQotICAgICAgICBjID0gQ29sb3IoMHhmZiAtIGMucmVkKCksIDB4ZmYg
LSBjLmdyZWVuKCksIDB4ZmYgLSBjLmJsdWUoKSk7CisgICAgICAgIGMgPSBPcHRpb25hbFJHQkEo
MHhmZiAtIGMucmVkKCksIDB4ZmYgLSBjLmdyZWVuKCksIDB4ZmYgLSBjLmJsdWUoKSk7CiAKICAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgdXBk
YXRlR3JhcGhpY3NDb250ZXh0KGNvbnRleHQsIFRleHRQYWludFN0eWxlKGMsIHN0eWxlLmNvbG9y
U3BhY2UoKSkpOyAvLyBEb24ndCBkcmF3IHRleHQgYXQgYWxsIQpAQCAtNzQ0LDcgKzc0NCw3IEBA
IHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRDb21wb3NpdGlvbkJhY2tncm91bmQoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBDb2xvciBjb21wb3Np
dGlvbkNvbG9yID0gQ29sb3I6OmNvbXBvc2l0aW9uRmlsbDsKKyAgICBPcHRpb25hbFJHQkEgY29t
cG9zaXRpb25Db2xvciA9IE9wdGlvbmFsUkdCQTo6Y29tcG9zaXRpb25GaWxsOwogICAgIHVwZGF0
ZUdyYXBoaWNzQ29udGV4dChjb250ZXh0LCBUZXh0UGFpbnRTdHlsZShjb21wb3NpdGlvbkNvbG9y
LCBzdHlsZS5jb2xvclNwYWNlKCkpKTsgLy8gRG9uJ3QgZHJhdyB0ZXh0IGF0IGFsbCEKIAogICAg
IExheW91dFVuaXQgZGVsdGFZID0gcmVuZGVyZXIoKS5zdHlsZSgpLmlzRmxpcHBlZExpbmVzV3Jp
dGluZ01vZGUoKSA/IHNlbGVjdGlvbkJvdHRvbSgpIC0gbG9naWNhbEJvdHRvbSgpIDogbG9naWNh
bFRvcCgpIC0gc2VsZWN0aW9uVG9wKCk7CkBAIC05MTEsNyArOTExLDcgQEAgdm9pZCBJbmxpbmVU
ZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFBvaW50JgogICAgIH0KICAgICAKICAgICAvLyBHZXQgdGhlIHRleHQgZGVjb3JhdGlvbiBj
b2xvcnMuCi0gICAgQ29sb3IgdW5kZXJsaW5lQ29sb3IsIG92ZXJsaW5lQ29sb3IsIGxpbmV0aHJv
dWdoQ29sb3I7CisgICAgT3B0aW9uYWxSR0JBIHVuZGVybGluZUNvbG9yLCBvdmVybGluZUNvbG9y
LCBsaW5ldGhyb3VnaENvbG9yOwogICAgIFRleHREZWNvcmF0aW9uU3R5bGUgdW5kZXJsaW5lU3R5
bGUsIG92ZXJsaW5lU3R5bGUsIGxpbmV0aHJvdWdoU3R5bGU7CiAgICAgcmVuZGVyZXIoKS5nZXRU
ZXh0RGVjb3JhdGlvbkNvbG9yc0FuZFN0eWxlcyhkZWNvcmF0aW9uLCB1bmRlcmxpbmVDb2xvciwg
b3ZlcmxpbmVDb2xvciwgbGluZXRocm91Z2hDb2xvciwgdW5kZXJsaW5lU3R5bGUsIG92ZXJsaW5l
U3R5bGUsIGxpbmV0aHJvdWdoU3R5bGUpOwogICAgIGlmIChpc0ZpcnN0TGluZSgpKQpAQCAtMTE0
Niw3ICsxMTQ2LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFRleHRNYXRjaE1hcmtlcihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG8KICAgICAKICAgICAvLyBPcHRp
b25hbGx5IGhpZ2hsaWdodCB0aGUgdGV4dAogICAgIGlmIChyZW5kZXJlcigpLmZyYW1lKCkuZWRp
dG9yKCkubWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCgpKSB7Ci0gICAgICAgIENvbG9y
IGNvbG9yID0gbWFya2VyLmFjdGl2ZU1hdGNoKCkgPyByZW5kZXJlcigpLnRoZW1lKCkucGxhdGZv
cm1BY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSA6IHJlbmRlcmVyKCkudGhlbWUoKS5w
bGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCk7CisgICAgICAgIE9wdGlv
bmFsUkdCQSBjb2xvciA9IG1hcmtlci5hY3RpdmVNYXRjaCgpID8gcmVuZGVyZXIoKS50aGVtZSgp
LnBsYXRmb3JtQWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgOiByZW5kZXJlcigpLnRo
ZW1lKCkucGxhdGZvcm1JbmFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpOwogICAgICAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgICAg
IHVwZGF0ZUdyYXBoaWNzQ29udGV4dChjb250ZXh0LCBUZXh0UGFpbnRTdHlsZShjb2xvciwgc3R5
bGUuY29sb3JTcGFjZSgpKSk7IC8vIERvbid0IGRyYXcgdGV4dCBhdCBhbGwhCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCmluZGV4IDc0MDlkNmQwNGRmZmQ4MmEzMTU3
MWQxOTRkM2FkNWI1ZTU4MDA0ZWEuLmQxNzQ1MmQ1YTMzODE0Y2RiYzMxNDdlY2Y4ZWY1Y2Y1NjMy
YjMyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaApAQCAtMTYw
LDcgKzE2MCw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICB2b2lkIHBhaW50RGVjb3Jh
dGlvbihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIFRleHRE
ZWNvcmF0aW9uLCBjb25zdCBTaGFkb3dEYXRhKiwgVGV4dFBhaW50ZXImKTsKLSAgICB2b2lkIHBh
aW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdp
biwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGb250Q2FzY2FkZSYsIENvbG9yIHRleHRDb2xv
cik7CisgICAgdm9pZCBwYWludFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFBvaW50JiBib3hPcmlnaW4sIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udENhc2NhZGUm
LCBPcHRpb25hbFJHQkEgdGV4dENvbG9yKTsKICAgICB2b2lkIHBhaW50RG9jdW1lbnRNYXJrZXIo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBSZW5kZXJlZERv
Y3VtZW50TWFya2VyJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGb250Q2FzY2FkZSYsIGJv
b2wgZ3JhbW1hcik7CiAgICAgdm9pZCBwYWludFRleHRNYXRjaE1hcmtlcihHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIm
LCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnRDYXNjYWRlJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9QYWludEluZm8uaAppbmRleCAxNWIxZjI0MTI4Mjc0NGRjNWJkNmRiNWMyZjljZGYx
Nzg4NWI4OTg0Li5iMWE2ZWE2MjZmMmY3MmU3MmY4YzllMTczODRhMjc0ZTcxOTk4ODAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCkBAIC04Myw3ICs4Myw3IEBAIHN0cnVjdCBQ
YWludEluZm8gewogICAgIGJvb2wgZm9yY2VUZXh0Q29sb3IoKSBjb25zdCB7IHJldHVybiBmb3Jj
ZUJsYWNrVGV4dCgpIHx8IGZvcmNlV2hpdGVUZXh0KCk7IH0KICAgICBib29sIGZvcmNlQmxhY2tU
ZXh0KCkgY29uc3QgeyByZXR1cm4gcGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3JGb3JjZUJs
YWNrVGV4dDsgfQogICAgIGJvb2wgZm9yY2VXaGl0ZVRleHQoKSBjb25zdCB7IHJldHVybiBwYWlu
dEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckZvcmNlV2hpdGVUZXh0OyB9Ci0gICAgQ29sb3IgZm9y
Y2VkVGV4dENvbG9yKCkgY29uc3QgeyByZXR1cm4gKGZvcmNlQmxhY2tUZXh0KCkpID8gQ29sb3I6
OmJsYWNrIDogQ29sb3I6OndoaXRlOyB9CisgICAgT3B0aW9uYWxSR0JBIGZvcmNlZFRleHRDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIChmb3JjZUJsYWNrVGV4dCgpKSA/IE9wdGlvbmFsUkdCQTo6Ymxh
Y2sgOiBPcHRpb25hbFJHQkE6OndoaXRlOyB9CiAKICAgICBib29sIHNraXBSb290QmFja2dyb3Vu
ZCgpIGNvbnN0IHsgcmV0dXJuIHBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yU2tpcFJvb3RC
YWNrZ3JvdW5kOyB9CiAgICAgYm9vbCBwYWludFJvb3RCYWNrZ3JvdW5kT25seSgpIGNvbnN0IHsg
cmV0dXJuIHBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yUm9vdEJhY2tncm91bmRPbmx5OyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDVhY2VhNjkyYjk2ZWRl
YmIzN2JmNzMwM2EzN2IzY2ZkZTE0YzA2ZmQuLmVkZTg3YzM5MTY2OGI0MDk3YWM3NjUyN2Q1NTIx
MzRmMTU1Yjk0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0x
MjM1LDcgKzEyMzUsNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRSb290Qm94RmlsbExheWVycyhj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbykKICAgICBhdXRvJiByb290QmFja2dyb3VuZFJlbmRl
cmVyID0gcmVuZGVyZXJGb3JSb290QmFja2dyb3VuZCgpOwogICAgIAogICAgIGNvbnN0IEZpbGxM
YXllciogYmdMYXllciA9IHJvb3RCYWNrZ3JvdW5kUmVuZGVyZXIuc3R5bGUoKS5iYWNrZ3JvdW5k
TGF5ZXJzKCk7Ci0gICAgQ29sb3IgYmdDb2xvciA9IHJvb3RCYWNrZ3JvdW5kUmVuZGVyZXIuc3R5
bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwor
ICAgIE9wdGlvbmFsUkdCQSBiZ0NvbG9yID0gcm9vdEJhY2tncm91bmRSZW5kZXJlci5zdHlsZSgp
LnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAKICAg
ICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBiZ0NvbG9yLCBiZ0xheWVyLCB2aWV3KCkuYmFj
a2dyb3VuZFJlY3QoKSwgQmFja2dyb3VuZEJsZWVkTm9uZSwgQ29tcG9zaXRlU291cmNlT3Zlciwg
JnJvb3RCYWNrZ3JvdW5kUmVuZGVyZXIpOwogfQpAQCAtMTM2MSw3ICsxMzYxLDcgQEAgYm9vbCBS
ZW5kZXJCb3g6OmdldEJhY2tncm91bmRQYWludGVkRXh0ZW50KGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCwgTGF5b3UKICAgICBBU1NFUlQoaGFzQmFja2dyb3VuZCgpKTsKICAgICBMYXlv
dXRSZWN0IGJhY2tncm91bmRSZWN0ID0gc25hcHBlZEludFJlY3QoYm9yZGVyQm94UmVjdCgpKTsK
IAotICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKKyAgICBPcHRpb25hbFJHQkEgYmFja2dy
b3VuZENvbG9yID0gc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3IpOwogICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpICYmIGJhY2tn
cm91bmRDb2xvci5hbHBoYSgpKSB7CiAgICAgICAgIHBhaW50ZWRFeHRlbnQgPSBiYWNrZ3JvdW5k
UmVjdDsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzgyLDcgKzEzODIsNyBAQCBib29sIFJl
bmRlckJveDo6YmFja2dyb3VuZElzS25vd25Ub0JlT3BhcXVlSW5SZWN0KGNvbnN0IExheW91dFJl
Y3QmIGxvY2FsUmVjdCkgYwogICAgIGlmIChpc0JvZHkoKSAmJiBza2lwQm9keUJhY2tncm91bmQo
dGhpcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIENvbG9yIGJhY2tncm91bmRDb2xv
ciA9IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yKTsKKyAgICBPcHRpb25hbFJHQkEgYmFja2dyb3VuZENvbG9yID0gc3R5bGUoKS52aXNpdGVk
RGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogICAgIGlmICghYmFj
a2dyb3VuZENvbG9yLmlzVmFsaWQoKSB8fCBiYWNrZ3JvdW5kQ29sb3IuaGFzQWxwaGEoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xNTA3LDcgKzE1MDcsNyBAQCBib29sIFJlbmRlckJv
eDo6YmFja2dyb3VuZEhhc09wYXF1ZVRvcExheWVyKCkgY29uc3QKIAogICAgIC8vIElmIHRoZXJl
IGlzIG9ubHkgb25lIGxheWVyIGFuZCBubyBpbWFnZSwgY2hlY2sgd2hldGhlciB0aGUgYmFja2dy
b3VuZCBjb2xvciBpcyBvcGFxdWUKICAgICBpZiAoIWZpbGxMYXllci0+bmV4dCgpICYmICFmaWxs
TGF5ZXItPmhhc0ltYWdlKCkpIHsKLSAgICAgICAgQ29sb3IgYmdDb2xvciA9IHN0eWxlKCkudmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAg
T3B0aW9uYWxSR0JBIGJnQ29sb3IgPSBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgICAgIGlmIChiZ0NvbG9yLmlzVmFsaWQoKSAm
JiBiZ0NvbG9yLmFscGhhKCkgPT0gMjU1KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpAQCAtMTUzMCw3ICsxNTMwLDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Q2xpcHBpbmdNYXNr
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnQKICAgICAgICAg
cmV0dXJuOwogCiAgICAgTGF5b3V0UmVjdCBwYWludFJlY3QgPSBMYXlvdXRSZWN0KHBhaW50T2Zm
c2V0LCBzaXplKCkpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdChzbmFwcGVkSW50
UmVjdChwYWludFJlY3QpLCBDb2xvcjo6YmxhY2ssIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAg
ICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJlY3Qoc25hcHBlZEludFJlY3QocGFpbnRSZWN0KSwg
T3B0aW9uYWxSR0JBOjpibGFjaywgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogfQogCiB2b2lkIFJl
bmRlckJveDo6cGFpbnRNYXNrSW1hZ2VzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRSZWN0JiBwYWludFJlY3QpCkBAIC0xNTYxLDcgKzE1NjEsNyBAQCB2b2lkIFJlbmRl
ckJveDo6cGFpbnRNYXNrSW1hZ2VzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRSZWN0JiBwYQogICAgIH0KIAogICAgIGlmIChhbGxNYXNrSW1hZ2VzTG9hZGVkKSB7Ci0g
ICAgICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8sIENvbG9yKCksIHN0eWxlKCkubWFza0xh
eWVycygpLCBwYWludFJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUsIGNvbXBvc2l0ZU9wKTsKKyAg
ICAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgT3B0aW9uYWxSR0JBKCksIHN0eWxlKCku
bWFza0xheWVycygpLCBwYWludFJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUsIGNvbXBvc2l0ZU9w
KTsKICAgICAgICAgcGFpbnROaW5lUGllY2VJbWFnZShwYWludEluZm8uY29udGV4dCwgcGFpbnRS
ZWN0LCBzdHlsZSgpLCBzdHlsZSgpLm1hc2tCb3hJbWFnZSgpLCBjb21wb3NpdGVPcCk7CiAgICAg
fQogICAgIApAQCAtMTU5Miw3ICsxNTkyLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6Om1hc2tD
bGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OnBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGMsIGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyLCBj
b25zdCBMYXlvdXRSZWN0JiByZWN0LAordm9pZCBSZW5kZXJCb3g6OnBhaW50RmlsbExheWVycyhj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgT3B0aW9uYWxSR0JBJiBjLCBjb25zdCBG
aWxsTGF5ZXIqIGZpbGxMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwKICAgICBCYWNrZ3Jv
dW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBS
ZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0KQogewogICAgIFZlY3Rvcjxjb25zdCBGaWxs
TGF5ZXIqLCA4PiBsYXllcnM7CkBAIC0xNjM3LDcgKzE2MzcsNyBAQCB2b2lkIFJlbmRlckJveDo6
cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYg
YywgY29ucwogICAgICAgICBjb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogfQogCi12
b2lkIFJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IENvbG9yJiBjLCBjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciwgY29uc3QgTGF5b3V0
UmVjdCYgcmVjdCwKK3ZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXllcihjb25zdCBQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgT3B0aW9uYWxSR0JBJiBjLCBjb25zdCBGaWxsTGF5ZXIqIGZp
bGxMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwKICAgICBCYWNrZ3JvdW5kQmxlZWRBdm9p
ZGFuY2UgYmxlZWRBdm9pZGFuY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBSZW5kZXJFbGVtZW50
KiBiYWNrZ3JvdW5kT2JqZWN0LCBCYXNlQmFja2dyb3VuZENvbG9yVXNhZ2UgYmFzZUJnQ29sb3JV
c2FnZSkKIHsKICAgICBwYWludEZpbGxMYXllckV4dGVuZGVkKHBhaW50SW5mbywgYywgZmlsbExh
eWVyLCByZWN0LCBibGVlZEF2b2lkYW5jZSwgbnVsbHB0ciwgTGF5b3V0U2l6ZSgpLCBvcCwgYmFj
a2dyb3VuZE9iamVjdCwgYmFzZUJnQ29sb3JVc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmgKaW5kZXggZTVjMDMzYjRmNDYxYmJhOTlmNGNmYjhmMWY2NTk3ODZiZDYxZDE5NS4u
OWVlMjU2MDZiNDUzMDc3NmUzZmYwOWNmMDc0NGM1ZjI4YzZjZjJhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guaApAQCAtNjQ0LDggKzY0NCw4IEBAIHByb3RlY3RlZDoKIAogICAg
IHZvaWQgcGFpbnRCYWNrZ3JvdW5kKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJlY3Qm
LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgPSBCYWNrZ3JvdW5kQmxlZWROb25lKTsKICAgICAK
LSAgICB2b2lkIHBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwg
Y29uc3QgRmlsbExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lk
YW5jZSwgQ29tcG9zaXRlT3BlcmF0b3IsIFJlbmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmplY3Qs
IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2UpOwotICAg
IHZvaWQgcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29u
c3QgRmlsbExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5j
ZSA9IEJhY2tncm91bmRCbGVlZE5vbmUsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291
cmNlT3ZlciwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCA9IG51bGxwdHIpOworICAg
IHZvaWQgcGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgT3B0aW9uYWxSR0JB
JiwgY29uc3QgRmlsbExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2
b2lkYW5jZSwgQ29tcG9zaXRlT3BlcmF0b3IsIFJlbmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmpl
Y3QsIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2UpOwor
ICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IE9wdGlvbmFs
UkdCQSYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxl
ZWRBdm9pZGFuY2UgPSBCYWNrZ3JvdW5kQmxlZWROb25lLCBDb21wb3NpdGVPcGVyYXRvciA9IENv
bXBvc2l0ZVNvdXJjZU92ZXIsIFJlbmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmplY3QgPSBudWxs
cHRyKTsKIAogICAgIHZvaWQgcGFpbnRNYXNrSW1hZ2VzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IExheW91dFJlY3QmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAKaW5kZXggYTVhYzM0OTg4MDc4YTBjMTM4YjQ2NjQ2OTk5YmMwOGMw
YWY1MzVkMS4uNjYyNDMxMDYwNjYwMWNmYjkxZWViYjQ1ZTcyMTNlYzE2MGYzZTdjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBA
IC02MjcsNyArNjI3LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9y
VGV4dEZpbGxCb3goSW1hZ2VCdWZmZXIqIG1hc2tJbWFnZSwgY29uc3QKICAgICB9CiB9CiAKLXZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmlsbExheWVyKiBi
Z0xheWVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LAordm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgT3B0aW9uYWxSR0JBJiBjb2xvciwgY29uc3QgRmlsbExheWVyKiBiZ0xheWVyLCBjb25zdCBM
YXlvdXRSZWN0JiByZWN0LAogICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lk
YW5jZSwgSW5saW5lRmxvd0JveCogYm94LCBjb25zdCBMYXlvdXRTaXplJiBib3hTaXplLCBDb21w
b3NpdGVPcGVyYXRvciBvcCwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCwgQmFzZUJh
Y2tncm91bmRDb2xvclVzYWdlIGJhc2VCZ0NvbG9yVXNhZ2UpCiB7CiAgICAgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CkBAIC02NDIsNyArNjQyLDcgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY28KICAgICBib29sIGlzQm9yZGVyRmlsbCA9IGJnTGF5ZXItPmNs
aXAoKSA9PSBCb3JkZXJGaWxsQm94OwogICAgIGJvb2wgaXNSb290ID0gdGhpcy0+aXNSb290KCk7
CiAKLSAgICBDb2xvciBiZ0NvbG9yID0gY29sb3I7CisgICAgT3B0aW9uYWxSR0JBIGJnQ29sb3Ig
PSBjb2xvcjsKICAgICBTdHlsZUltYWdlKiBiZ0ltYWdlID0gYmdMYXllci0+aW1hZ2UoKTsKICAg
ICBib29sIHNob3VsZFBhaW50QmFja2dyb3VuZEltYWdlID0gYmdJbWFnZSAmJiBiZ0ltYWdlLT5j
YW5SZW5kZXIodGhpcywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOwogICAgIApAQCAtNjY1LDcg
KzY2NSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5k
ZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgIC8vIE5vdGUgdGhhdCB3
ZSBjYW4ndCByZXVzZSB0aGlzIHZhcmlhYmxlIGJlbG93IGJlY2F1c2UgdGhlIGJnQ29sb3IgbWln
aHQgYmUgY2hhbmdlZAogICAgICAgICBib29sIHNob3VsZFBhaW50QmFja2dyb3VuZENvbG9yID0g
IWJnTGF5ZXItPm5leHQoKSAmJiBiZ0NvbG9yLmlzVmFsaWQoKSAmJiBiZ0NvbG9yLmFscGhhKCk7
CiAgICAgICAgIGlmIChzaG91bGRQYWludEJhY2tncm91bmRJbWFnZSB8fCBzaG91bGRQYWludEJh
Y2tncm91bmRDb2xvcikgewotICAgICAgICAgICAgYmdDb2xvciA9IENvbG9yOjp3aGl0ZTsKKyAg
ICAgICAgICAgIGJnQ29sb3IgPSBPcHRpb25hbFJHQkE6OndoaXRlOwogICAgICAgICAgICAgc2hv
dWxkUGFpbnRCYWNrZ3JvdW5kSW1hZ2UgPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTgx
Miw3ICs4MTIsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4
dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgICAgIGJh
Y2tncm91bmRSZWN0LmludGVyc2VjdChwYWludEluZm8ucmVjdCk7CiAKICAgICAgICAgICAgIC8v
IElmIHdlIGhhdmUgYW4gYWxwaGEgYW5kIHdlIGFyZSBwYWludGluZyB0aGUgcm9vdCBlbGVtZW50
LCBibGVuZCB3aXRoIHRoZSBiYXNlIGJhY2tncm91bmQgY29sb3IuCi0gICAgICAgICAgICBDb2xv
ciBiYXNlQ29sb3I7CisgICAgICAgICAgICBPcHRpb25hbFJHQkEgYmFzZUNvbG9yOwogICAgICAg
ICAgICAgYm9vbCBzaG91bGRDbGVhckJhY2tncm91bmQgPSBmYWxzZTsKICAgICAgICAgICAgIGlm
ICgoYmFzZUJnQ29sb3JVc2FnZSAhPSBCYXNlQmFja2dyb3VuZENvbG9yU2tpcCkgJiYgaXNPcGFx
dWVSb290KSB7CiAgICAgICAgICAgICAgICAgYmFzZUNvbG9yID0gdmlldygpLmZyYW1lVmlldygp
LmJhc2VCYWNrZ3JvdW5kQ29sb3IoKTsKQEAgLTE0NDAsNyArMTQ0MCw3IEBAIHN0YXRpYyBib29s
IGpvaW5SZXF1aXJlc01pdHJlKEJveFNpZGUgc2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUsIGNv
bnN0IEJvcmRlckVkCiAKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50T25lQm9yZGVy
U2lkZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0
JiBpbm5lckJvcmRlciwKICAgICBjb25zdCBMYXlvdXRSZWN0JiBzaWRlUmVjdCwgQm94U2lkZSBz
aWRlLCBCb3hTaWRlIGFkamFjZW50U2lkZTEsIEJveFNpZGUgYWRqYWNlbnRTaWRlMiwgY29uc3Qg
Qm9yZGVyRWRnZSBlZGdlc1tdLCBjb25zdCBQYXRoKiBwYXRoLAotICAgIEJhY2tncm91bmRCbGVl
ZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBi
b29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBib29sIGFudGlhbGlhcywgY29uc3QgQ29sb3Iq
IG92ZXJyaWRlQ29sb3IpCisgICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRh
bmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UsIGJvb2wgYW50aWFsaWFzLCBjb25zdCBPcHRpb25hbFJHQkEqIG92ZXJyaWRlQ29sb3Ip
CiB7CiAgICAgY29uc3QgQm9yZGVyRWRnZSYgZWRnZVRvUmVuZGVyID0gZWRnZXNbc2lkZV07CiAg
ICAgQVNTRVJUKGVkZ2VUb1JlbmRlci53aWR0aEZvclBhaW50aW5nKCkpOwpAQCAtMTQ1Myw3ICsx
NDUzLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRPbmVCb3JkZXJTaWRlKEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgIGJvb2wgYWRqYWNlbnRTaWRlMVN0
eWxlc01hdGNoID0gY29sb3JzTWF0Y2hBdENvcm5lcihzaWRlLCBhZGphY2VudFNpZGUxLCBlZGdl
cyk7CiAgICAgYm9vbCBhZGphY2VudFNpZGUyU3R5bGVzTWF0Y2ggPSBjb2xvcnNNYXRjaEF0Q29y
bmVyKHNpZGUsIGFkamFjZW50U2lkZTIsIGVkZ2VzKTsKIAotICAgIGNvbnN0IENvbG9yJiBjb2xv
clRvUGFpbnQgPSBvdmVycmlkZUNvbG9yID8gKm92ZXJyaWRlQ29sb3IgOiBlZGdlVG9SZW5kZXIu
Y29sb3IoKTsKKyAgICBjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yVG9QYWludCA9IG92ZXJyaWRl
Q29sb3IgPyAqb3ZlcnJpZGVDb2xvciA6IGVkZ2VUb1JlbmRlci5jb2xvcigpOwogCiAgICAgaWYg
KHBhdGgpIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpn
cmFwaGljc0NvbnRleHQpOwpAQCAtMTUwMiw3ICsxNTAyLDcgQEAgc3RhdGljIExheW91dFJlY3Qg
Y2FsY3VsYXRlU2lkZVJlY3QoY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBC
b3JkZXIKIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBj
b25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJv
cmRlciwKICAgICBjb25zdCBJbnRQb2ludCYgaW5uZXJCb3JkZXJBZGp1c3RtZW50LCBjb25zdCBC
b3JkZXJFZGdlIGVkZ2VzW10sIEJvcmRlckVkZ2VGbGFncyBlZGdlU2V0LCBCYWNrZ3JvdW5kQmxl
ZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UsCi0gICAgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRF
ZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBib29sIGFudGlhbGlhcywgY29uc3Qg
Q29sb3IqIG92ZXJyaWRlQ29sb3IpCisgICAgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBi
b29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBib29sIGFudGlhbGlhcywgY29uc3QgT3B0aW9u
YWxSR0JBKiBvdmVycmlkZUNvbG9yKQogewogICAgIGJvb2wgcmVuZGVyUmFkaWkgPSBvdXRlckJv
cmRlci5pc1JvdW5kZWQoKTsKIApAQCAtMTU1Nyw3ICsxNTU3LDcgQEAgdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3MKIAogICAgIHdoaWxlIChlZGdlc1RvRHJhdykgewogICAgICAgICAvLyBGaW5kIHVu
ZHJhd24gZWRnZXMgc2hhcmluZyBhIGNvbG9yLgotICAgICAgICBDb2xvciBjb21tb25Db2xvcjsK
KyAgICAgICAgT3B0aW9uYWxSR0JBIGNvbW1vbkNvbG9yOwogICAgICAgICAKICAgICAgICAgQm9y
ZGVyRWRnZUZsYWdzIGNvbW1vbkNvbG9yRWRnZVNldCA9IDA7CiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2l6ZW9mKHBhaW50T3JkZXIpIC8gc2l6ZW9mKHBhaW50T3JkZXJbMF0pOyAr
K2kpIHsKQEAgLTE1NzksNyArMTU3OSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50VHJhbnNsdWNlbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzCiAgICAg
ICAgIGJvb2wgdXNlVHJhbnNwYXJlbmN5TGF5ZXIgPSBpbmNsdWRlc0FkamFjZW50RWRnZXMoY29t
bW9uQ29sb3JFZGdlU2V0KSAmJiBjb21tb25Db2xvci5oYXNBbHBoYSgpOwogICAgICAgICBpZiAo
dXNlVHJhbnNwYXJlbmN5TGF5ZXIpIHsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YmVn
aW5UcmFuc3BhcmVuY3lMYXllcihzdGF0aWNfY2FzdDxmbG9hdD4oY29tbW9uQ29sb3IuYWxwaGEo
KSkgLyAyNTUpOwotICAgICAgICAgICAgY29tbW9uQ29sb3IgPSBDb2xvcihjb21tb25Db2xvci5y
ZWQoKSwgY29tbW9uQ29sb3IuZ3JlZW4oKSwgY29tbW9uQ29sb3IuYmx1ZSgpKTsKKyAgICAgICAg
ICAgIGNvbW1vbkNvbG9yID0gT3B0aW9uYWxSR0JBKGNvbW1vbkNvbG9yLnJlZCgpLCBjb21tb25D
b2xvci5ncmVlbigpLCBjb21tb25Db2xvci5ibHVlKCkpOwogICAgICAgICB9CiAKICAgICAgICAg
cGFpbnRCb3JkZXJTaWRlcyhncmFwaGljc0NvbnRleHQsIHN0eWxlLCBvdXRlckJvcmRlciwgaW5u
ZXJCb3JkZXIsIGlubmVyQm9yZGVyQWRqdXN0bWVudCwgZWRnZXMsIGNvbW1vbkNvbG9yRWRnZVNl
dCwgYmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlLCBhbnRpYWxpYXMsICZjb21tb25Db2xvcik7CkBAIC0xNzYyLDcgKzE3NjIsNyBA
QCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihjb25zdCBQYWludEluZm8m
IGluZm8sIGNvbnN0IExheW91dFJlY3QmCiB9CiAKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNv
bnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIGNvbnN0IFBhdGgmIGJvcmRlclBhdGgsIGNvbnN0
IEJvcmRlckVkZ2UgZWRnZXNbXSwKLSAgICBmbG9hdCB0aGlja25lc3MsIGZsb2F0IGRyYXdUaGlj
a25lc3MsIEJveFNpZGUgc2lkZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBDb2xvciBjb2xv
ciwgRUJvcmRlclN0eWxlIGJvcmRlclN0eWxlLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxl
ZWRBdm9pZGFuY2UsCisgICAgZmxvYXQgdGhpY2tuZXNzLCBmbG9hdCBkcmF3VGhpY2tuZXNzLCBC
b3hTaWRlIHNpZGUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgT3B0aW9uYWxSR0JBIGNvbG9y
LCBFQm9yZGVyU3R5bGUgYm9yZGVyU3R5bGUsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVl
ZEF2b2lkYW5jZSwKICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVk
ZUxvZ2ljYWxSaWdodEVkZ2UpCiB7CiAgICAgaWYgKHRoaWNrbmVzcyA8PSAwKQpAQCAtMjIwMiw3
ICsyMjAyLDcgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Ym94U2hhZG93U2hvdWxkQmVB
cHBsaWVkVG9CYWNrZ3JvdW5kKGNvbnN0IExheW91dFBvaW4KICAgICBpZiAoIWhhc09uZU5vcm1h
bEJveFNoYWRvdykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ29sb3IgYmFja2dyb3Vu
ZENvbG9yID0gc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kQ29sb3IpOworICAgIE9wdGlvbmFsUkdCQSBiYWNrZ3JvdW5kQ29sb3IgPSBzdHlsZSgpLnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgaWYg
KCFiYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpIHx8IGJhY2tncm91bmRDb2xvci5oYXNBbHBoYSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTIyNjgsNyArMjI2OCw3IEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywg
Y29uc3QgTGF5b3V0UmVjCiAgICAgICAgIGlmIChzaGFkb3dPZmZzZXQuaXNaZXJvKCkgJiYgIXNo
YWRvd1JhZGl1cyAmJiAhc2hhZG93U3ByZWFkKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIAotICAgICAgICBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IgPSBzaGFkb3ctPmNvbG9yKCk7
CisgICAgICAgIGNvbnN0IE9wdGlvbmFsUkdCQSYgc2hhZG93Q29sb3IgPSBzaGFkb3ctPmNvbG9y
KCk7CiAKICAgICAgICAgaWYgKHNoYWRvdy0+c3R5bGUoKSA9PSBOb3JtYWwpIHsKICAgICAgICAg
ICAgIFJvdW5kZWRSZWN0IGZpbGxSZWN0ID0gYm9yZGVyOwpAQCAtMjMxMCwxMiArMjMxMCwxMiBA
QCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludElu
Zm8mIGluZm8sIGNvbnN0IExheW91dFJlYwogICAgICAgICAgICAgICAgIGluZmx1ZW5jZVJlY3Qu
ZXhwYW5kUmFkaWkoMiAqIHNoYWRvd1BhaW50aW5nRXh0ZW50ICsgc2hhZG93U3ByZWFkKTsKIAog
ICAgICAgICAgICAgICAgIGlmIChhbGxDb3JuZXJzQ2xpcHBlZE91dChpbmZsdWVuY2VSZWN0LCBp
bmZvLnJlY3QpKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChwaXhlbFNu
YXBwZWRGaWxsUmVjdC5yZWN0KCksIENvbG9yOjpibGFjaywgc3R5bGUuY29sb3JTcGFjZSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJl
Y3QucmVjdCgpLCBPcHRpb25hbFJHQkE6OmJsYWNrLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogICAg
ICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBwaXhlbFNuYXBwZWRGaWxs
UmVjdC5leHBhbmRSYWRpaShzaGFkb3dTcHJlYWQpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
IXBpeGVsU25hcHBlZEZpbGxSZWN0LmlzUmVuZGVyYWJsZSgpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgcGl4ZWxTbmFwcGVkRmlsbFJlY3QuYWRqdXN0UmFkaWkoKTsKLSAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LCBDb2xv
cjo6YmxhY2ssIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmZpbGxSb3VuZGVkUmVjdChwaXhlbFNuYXBwZWRGaWxsUmVjdCwgT3B0aW9uYWxSR0JBOjpi
bGFjaywgc3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBib3ggaXMgb3BhcXVlLCBpdCBp
cyB1bm5lY2Vzc2FyeSB0byBjbGlwIGl0IG91dC4gSG93ZXZlciwgZG9pbmcgc28gc2F2ZXMgdGlt
ZQpAQCAtMjMzMiw3ICsyMzMyLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRC
b3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKIAogICAgICAg
ICAgICAgICAgIGlmICghcmVjdFRvQ2xpcE91dC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmNsaXBPdXQocmVjdFRvQ2xpcE91dC5yZWN0KCkpOwotICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LnJlY3QoKSwgQ29sb3I6
OmJsYWNrLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmZp
bGxSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LnJlY3QoKSwgT3B0aW9uYWxSR0JBOjpibGFjaywg
c3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIC8vIEluc2V0IHNoYWRvdy4KQEAgLTIzNjQsNyArMjM2NCw3IEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywg
Y29uc3QgTGF5b3V0UmVjCiAgICAgICAgICAgICAgICAgICAgIHBpeGVsU25hcHBlZEhvbGVSZWN0
LnNldEhlaWdodChwaXhlbFNuYXBwZWRIb2xlUmVjdC5oZWlnaHQoKSAtIHN0ZDo6bWluKHNoYWRv
d09mZnNldC5oZWlnaHQoKSwgMCkgKyBzaGFkb3dQYWludGluZ0V4dGVudCk7CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIENvbG9yIGZpbGxDb2xvcihzaGFkb3dDb2xvci5yZWQoKSwgc2hh
ZG93Q29sb3IuZ3JlZW4oKSwgc2hhZG93Q29sb3IuYmx1ZSgpLCAyNTUpOworICAgICAgICAgICAg
T3B0aW9uYWxSR0JBIGZpbGxDb2xvcihzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3IuZ3Jl
ZW4oKSwgc2hhZG93Q29sb3IuYmx1ZSgpLCAyNTUpOwogCiAgICAgICAgICAgICBGbG9hdFJlY3Qg
cGl4ZWxTbmFwcGVkT3V0ZXJSZWN0ID0gc25hcFJlY3RUb0RldmljZVBpeGVscyhhcmVhQ2FzdGlu
Z1NoYWRvd0luSG9sZShMYXlvdXRSZWN0KHBpeGVsU25hcHBlZEJvcmRlclJlY3QucmVjdCgpKSwg
c2hhZG93UGFpbnRpbmdFeHRlbnQsIHNoYWRvd1NwcmVhZCwgc2hhZG93T2Zmc2V0KSwgZGV2aWNl
U2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgRmxvYXRSb3VuZGVkUmVjdCBwaXhlbFNuYXBwZWRS
b3VuZGVkSG9sZSA9IEZsb2F0Um91bmRlZFJlY3QocGl4ZWxTbmFwcGVkSG9sZVJlY3QsIHBpeGVs
U25hcHBlZEJvcmRlclJlY3QucmFkaWkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IGVjMjg1ODc5OWIzZDJlNWIyZDE2NjQxNjBj
NDY4OTc2NjFkZDIxYzkuLjNmZTc3OWI4YjIyZDMwODBmZjQ2MTI4Y2VlMzYxZDMzODk2ZDMxOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5o
CkBAIC0yMTIsNyArMjEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcGFpbnRCb3JkZXIoY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgQmFja2dy
b3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3VuZEJsZWVkTm9uZSwgYm9vbCBpbmNsdWRlTG9n
aWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUp
OwogICAgIGJvb2wgcGFpbnROaW5lUGllY2VJbWFnZShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBM
YXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBOaW5lUGllY2VJbWFnZSYsIENv
bXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgdm9pZCBwYWludEJv
eFNoYWRvdyhjb25zdCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVy
U3R5bGUmLCBTaGFkb3dTdHlsZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwg
Ym9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpOwotICAgIHZvaWQgcGFpbnRGaWxs
TGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxM
YXllciosIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGlu
ZUZsb3dCb3gqID0gbnVsbHB0ciwgY29uc3QgTGF5b3V0U2l6ZSYgPSBMYXlvdXRTaXplKCksIENv
bXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgUmVuZGVyRWxlbWVudCogYmFj
a2dyb3VuZE9iamVjdCA9IG51bGxwdHIsIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2FnZSA9IEJhc2VC
YWNrZ3JvdW5kQ29sb3JVc2UpOworICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25z
dCBQYWludEluZm8mLCBjb25zdCBPcHRpb25hbFJHQkEmLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25z
dCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KiA9
IG51bGxwdHIsIGNvbnN0IExheW91dFNpemUmID0gTGF5b3V0U2l6ZSgpLCBDb21wb3NpdGVPcGVy
YXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIFJlbmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmpl
Y3QgPSBudWxscHRyLCBCYXNlQmFja2dyb3VuZENvbG9yVXNhZ2UgPSBCYXNlQmFja2dyb3VuZENv
bG9yVXNlKTsKIAogICAgIHZpcnR1YWwgYm9vbCBib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0Jh
Y2tncm91bmQoY29uc3QgTGF5b3V0UG9pbnQmIGFic29sdXRlUGFpbnRQb3N0aW9uLCBCYWNrZ3Jv
dW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqID0gbnVsbHB0cikgY29uc3Q7CiAKQEAg
LTMxNywxNSArMzE3LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGlwQm9yZGVyU2lkZUZvckNv
bXBsZXhJbm5lclBhdGgoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUm91bmRlZFJlY3QmLCBjb25z
dCBSb3VuZGVkUmVjdCYsIEJveFNpZGUsIGNvbnN0IEJvcmRlckVkZ2VbXSk7CiAgICAgdm9pZCBw
YWludE9uZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUmLCBj
b25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJv
cmRlciwKICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCYgc2lkZVJlY3QsIEJveFNpZGUsIEJveFNp
ZGUgYWRqYWNlbnRTaWRlMSwgQm94U2lkZSBhZGphY2VudFNpZGUyLCBjb25zdCBCb3JkZXJFZGdl
W10sCi0gICAgICAgIGNvbnN0IFBhdGgqLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIGJvb2wg
aW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9v
bCBhbnRpYWxpYXMsIGNvbnN0IENvbG9yKiBvdmVycmlkZUNvbG9yID0gbnVsbHB0cik7CisgICAg
ICAgIGNvbnN0IFBhdGgqLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVkZUxv
Z2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBhbnRpYWxp
YXMsIGNvbnN0IE9wdGlvbmFsUkdCQSogb3ZlcnJpZGVDb2xvciA9IG51bGxwdHIpOwogICAgIHZv
aWQgcGFpbnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJl
bmRlclN0eWxlJiwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVk
UmVjdCYgaW5uZXJCb3JkZXIsIGNvbnN0IEludFBvaW50JiBpbm5lckJvcmRlckFkanVzdG1lbnQs
CiAgICAgICAgIGNvbnN0IEJvcmRlckVkZ2VbXSwgQm9yZGVyRWRnZUZsYWdzLCBCYWNrZ3JvdW5k
QmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRl
TG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMgPSBmYWxzZSk7CiAgICAgdm9pZCBwYWlu
dEJvcmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3Qg
Um91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIs
CiAgICAgICAgIGNvbnN0IEludFBvaW50JiBpbm5lckJvcmRlckFkanVzdG1lbnQsIGNvbnN0IEJv
cmRlckVkZ2VbXSwgQm9yZGVyRWRnZUZsYWdzLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsCi0g
ICAgICAgIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJp
Z2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMgPSBmYWxzZSwgY29uc3QgQ29sb3IqIG92ZXJyaWRlQ29s
b3IgPSBudWxscHRyKTsKKyAgICAgICAgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29s
IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBib29sIGFudGlhbGlhcyA9IGZhbHNlLCBjb25zdCBP
cHRpb25hbFJHQkEqIG92ZXJyaWRlQ29sb3IgPSBudWxscHRyKTsKICAgICB2b2lkIGRyYXdCb3hT
aWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFBh
dGgmLCBjb25zdCBCb3JkZXJFZGdlW10sCiAgICAgICAgIGZsb2F0IHRoaWNrbmVzcywgZmxvYXQg
ZHJhd1RoaWNrbmVzcywgQm94U2lkZSwgY29uc3QgUmVuZGVyU3R5bGUmLAotICAgICAgICBDb2xv
ciwgRUJvcmRlclN0eWxlLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVkZUxv
Z2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CisgICAgICAgIE9w
dGlvbmFsUkdCQSwgRUJvcmRlclN0eWxlLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIGJvb2wg
aW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAg
ICAgdm9pZCBwYWludE1hc2tGb3JUZXh0RmlsbEJveChJbWFnZUJ1ZmZlciosIGNvbnN0IEludFJl
Y3QmLCBJbmxpbmVGbG93Qm94KiwgY29uc3QgTGF5b3V0UmVjdCYpOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCmluZGV4IGNlZjM0
ZDI5ODBiYjBiZDg3ODAwOGJlODA4NjAyYjk3OTQ0NmRiNTUuLjIwNjg3YzhmMGFkZjVlNmQ4MDgx
OWYxNmU0MTgwYjVjZTIwZDE5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRGV0YWlsc01hcmtlci5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFJlbmRlckRl
dGFpbHNNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZgogICAgIGlmICghcGFpbnRJbmZvLnJlY3QuaW50ZXJzZWN0cyhzbmFwcGVkSW50
UmVjdChvdmVyZmxvd1JlY3QpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgQ29sb3Ig
Y29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwor
ICAgIGNvbnN0IE9wdGlvbmFsUkdCQSBjb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUNvbG9yKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNv
bG9yKGNvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKICAgICBwYWludEluZm8uY29udGV4dC0+c2V0
U3Ryb2tlVGhpY2tuZXNzKDEuMGYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCmluZGV4IDQ2NTQ5ZmUyNzljOTkzMmE0NDlhZWY4ZmY4OTQyZmViNjRiMGRiZmEu
LjBiNmIyMDMwMTMzNGI4YjIwYWNhMWY5M2FkNTc4ZTllNjRhMWRiZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTE1OTAsMTYgKzE1OTAsMTYgQEAg
UmVuZGVyQmxvY2sqIFJlbmRlckVsZW1lbnQ6OmNvbnRhaW5pbmdCbG9ja0Zvck9iamVjdEluRmxv
dygpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyQmxvY2sqPihkb3duY2FzdDxS
ZW5kZXJCbG9jaz4ob2JqZWN0KSk7CiB9CiAKLUNvbG9yIFJlbmRlckVsZW1lbnQ6OnNlbGVjdGlv
bkNvbG9yKGludCBjb2xvclByb3BlcnR5KSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlckVsZW1l
bnQ6OnNlbGVjdGlvbkNvbG9yKGludCBjb2xvclByb3BlcnR5KSBjb25zdAogewogICAgIC8vIElm
IHRoZSBlbGVtZW50IGlzIHVuc2VsZWN0YWJsZSwgb3Igd2UgYXJlIG9ubHkgcGFpbnRpbmcgdGhl
IHNlbGVjdGlvbiwKICAgICAvLyBkb24ndCBvdmVycmlkZSB0aGUgZm9yZWdyb3VuZCBjb2xvciB3
aXRoIHRoZSBzZWxlY3Rpb24gZm9yZWdyb3VuZCBjb2xvci4KICAgICBpZiAoc3R5bGUoKS51c2Vy
U2VsZWN0KCkgPT0gU0VMRUNUX05PTkUKICAgICAgICAgfHwgKHZpZXcoKS5mcmFtZVZpZXcoKS5w
YWludEJlaGF2aW9yKCkgJiAoUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkgfCBQYWludEJlaGF2
aW9yU2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5KSkpCi0gICAgICAgIHJldHVybiBDb2xvcigp
OworICAgICAgICByZXR1cm4gT3B0aW9uYWxSR0JBKCk7CiAKICAgICBpZiAoUmVmUHRyPFJlbmRl
clN0eWxlPiBwc2V1ZG9TdHlsZSA9IHNlbGVjdGlvblBzZXVkb1N0eWxlKCkpIHsKLSAgICAgICAg
Q29sb3IgY29sb3IgPSBwc2V1ZG9TdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGNvbG9yUHJv
cGVydHkpOworICAgICAgICBPcHRpb25hbFJHQkEgY29sb3IgPSBwc2V1ZG9TdHlsZS0+dmlzaXRl
ZERlcGVuZGVudENvbG9yKGNvbG9yUHJvcGVydHkpOwogICAgICAgICBpZiAoIWNvbG9yLmlzVmFs
aWQoKSkKICAgICAgICAgICAgIGNvbG9yID0gcHNldWRvU3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICAgICAgcmV0dXJuIGNvbG9yOwpAQCAtMTYyNSwy
MCArMTYyNSwyMCBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJFbGVtZW50OjpzZWxl
Y3Rpb25Qc2V1ZG9TdHlsZSgpIGNvbnN0CiAgICAgcmV0dXJuIGdldFVuY2FjaGVkUHNldWRvU3R5
bGUoUHNldWRvU3R5bGVSZXF1ZXN0KFNFTEVDVElPTikpOwogfQogCi1Db2xvciBSZW5kZXJFbGVt
ZW50OjpzZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRl
ckVsZW1lbnQ6OnNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHNlbGVjdGlvbkNvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcik7CiB9CiAKLUNv
bG9yIFJlbmRlckVsZW1lbnQ6OnNlbGVjdGlvbkVtcGhhc2lzTWFya0NvbG9yKCkgY29uc3QKK09w
dGlvbmFsUkdCQSBSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25FbXBoYXNpc01hcmtDb2xvcigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIHNlbGVjdGlvbkNvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dEVt
cGhhc2lzQ29sb3IpOwogfQogCi1Db2xvciBSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlckVsZW1lbnQ6OnNlbGVjdGlvbkJh
Y2tncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgaWYgKHN0eWxlKCkudXNlclNlbGVjdCgpID09
IFNFTEVDVF9OT05FKQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAgICAgcmV0dXJuIE9w
dGlvbmFsUkdCQSgpOwogCiAgICAgaWYgKGZyYW1lKCkuc2VsZWN0aW9uKCkuc2hvdWxkU2hvd0Js
b2NrQ3Vyc29yKCkgJiYgZnJhbWUoKS5zZWxlY3Rpb24oKS5pc0NhcmV0KCkpCiAgICAgICAgIHJl
dHVybiBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKS5ibGVu
ZFdpdGhXaGl0ZSgpOwpAQCAtMTc4NCw3ICsxNzg0LDcgQEAgY29uc3QgUmVuZGVyRWxlbWVudCog
UmVuZGVyRWxlbWVudDo6ZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24oVGV4dERl
Y28KICAgICByZXR1cm4gY3VycmVudDsKIH0KIAotdm9pZCBSZW5kZXJFbGVtZW50OjpkcmF3TGlu
ZUZvckJveFNpZGUoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgQm94U2lkZSBzaWRlLCBDb2xvciBjb2xvciwgRUJvcmRlclN0eWxlIGJvcmRl
clN0eWxlLCBmbG9hdCBhZGphY2VudFdpZHRoMSwgZmxvYXQgYWRqYWNlbnRXaWR0aDIsIGJvb2wg
YW50aWFsaWFzKSBjb25zdAordm9pZCBSZW5kZXJFbGVtZW50OjpkcmF3TGluZUZvckJveFNpZGUo
R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Qm94U2lkZSBzaWRlLCBPcHRpb25hbFJHQkEgY29sb3IsIEVCb3JkZXJTdHlsZSBib3JkZXJTdHls
ZSwgZmxvYXQgYWRqYWNlbnRXaWR0aDEsIGZsb2F0IGFkamFjZW50V2lkdGgyLCBib29sIGFudGlh
bGlhcykgY29uc3QKIHsKICAgICBmbG9hdCB4MSA9IHJlY3QueCgpOwogICAgIGZsb2F0IHgyID0g
cmVjdC5tYXhYKCk7CkBAIC0yMDgzLDcgKzIwODMsNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnBh
aW50T3V0bGluZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRS
ZQogICAgICAgICByZXR1cm47CiAKICAgICBFQm9yZGVyU3R5bGUgb3V0bGluZVN0eWxlID0gc3R5
bGVUb1VzZS5vdXRsaW5lU3R5bGUoKTsKLSAgICBDb2xvciBvdXRsaW5lQ29sb3IgPSBzdHlsZVRv
VXNlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcik7CisgICAg
T3B0aW9uYWxSR0JBIG91dGxpbmVDb2xvciA9IHN0eWxlVG9Vc2UudmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgZ3Jh
cGhpY3NDb250ZXh0ID0gKnBhaW50SW5mby5jb250ZXh0OwogICAgIGJvb2wgdXNlVHJhbnNwYXJl
bmN5TGF5ZXIgPSBvdXRsaW5lQ29sb3IuaGFzQWxwaGEoKTsKQEAgLTIwOTgsNyArMjA5OCw3IEBA
IHZvaWQgUmVuZGVyRWxlbWVudDo6cGFpbnRPdXRsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRSZWN0JiBwYWludFJlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoc3RhdGljX2Nh
c3Q8ZmxvYXQ+KG91dGxpbmVDb2xvci5hbHBoYSgpKSAvIDI1NSk7Ci0gICAgICAgIG91dGxpbmVD
b2xvciA9IENvbG9yKG91dGxpbmVDb2xvci5yZWQoKSwgb3V0bGluZUNvbG9yLmdyZWVuKCksIG91
dGxpbmVDb2xvci5ibHVlKCkpOworICAgICAgICBvdXRsaW5lQ29sb3IgPSBPcHRpb25hbFJHQkEo
b3V0bGluZUNvbG9yLnJlZCgpLCBvdXRsaW5lQ29sb3IuZ3JlZW4oKSwgb3V0bGluZUNvbG9yLmJs
dWUoKSk7CiAgICAgfQogCiAgICAgaW50IGxlZnRPdXRlciA9IG91dGVyLngoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IDg5NjFlMGNlZGZhODQzOWI1M2Qy
NGEwMDk1YzQ2ZjkxZDNiMzZjZjIuLjMzNTBlMWM0NDE3YmRiOGQ4YjE1MDI1YzI2OTg3MjMwZmJi
ZjE5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaApAQCAtNzQs
MTMgKzc0LDEzIEBAIHB1YmxpYzoKICAgICBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrRm9y
QWJzb2x1dGVQb3NpdGlvbigpIGNvbnN0OwogICAgIFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxv
Y2tGb3JPYmplY3RJbkZsb3coKSBjb25zdDsKIAotICAgIENvbG9yIHNlbGVjdGlvbkNvbG9yKGlu
dCBjb2xvclByb3BlcnR5KSBjb25zdDsKKyAgICBPcHRpb25hbFJHQkEgc2VsZWN0aW9uQ29sb3Io
aW50IGNvbG9yUHJvcGVydHkpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHNl
bGVjdGlvblBzZXVkb1N0eWxlKCkgY29uc3Q7CiAKICAgICAvLyBPYnRhaW5zIHRoZSBzZWxlY3Rp
b24gY29sb3JzIHRoYXQgc2hvdWxkIGJlIHVzZWQgd2hlbiBwYWludGluZyBhIHNlbGVjdGlvbi4K
LSAgICBDb2xvciBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICBDb2xvciBz
ZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICBDb2xvciBzZWxlY3Rpb25FbXBo
YXNpc01hcmtDb2xvcigpIGNvbnN0OworICAgIE9wdGlvbmFsUkdCQSBzZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdDsKKyAgICBPcHRpb25hbFJHQkEgc2VsZWN0aW9uRm9yZWdyb3VuZENv
bG9yKCkgY29uc3Q7CisgICAgT3B0aW9uYWxSR0JBIHNlbGVjdGlvbkVtcGhhc2lzTWFya0NvbG9y
KCkgY29uc3Q7CiAKICAgICAvLyBGSVhNRTogTWFrZSB0aGVzZSBzdGFuZGFsb25lIGFuZCBtb3Zl
IHRvIHJlbGV2YW50IGZpbGVzLgogICAgIGJvb2wgaXNSZW5kZXJMYXllck1vZGVsT2JqZWN0KCkg
Y29uc3Q7CkBAIC0yMDgsNyArMjA4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNDU1NBbmlt
YXRpbmcoYm9vbCBiKSB7IG1faXNDU1NBbmltYXRpbmcgPSBiOyB9CiAgICAgCiAgICAgY29uc3Qg
UmVuZGVyRWxlbWVudCogZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24oVGV4dERl
Y29yYXRpb24sIGJvb2wgZmlyc3RMaW5lKSBjb25zdDsKLSAgICB2b2lkIGRyYXdMaW5lRm9yQm94
U2lkZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBCb3hTaWRlLCBDb2xvciwg
RUJvcmRlclN0eWxlLCBmbG9hdCBhZGphY2VudFdpZHRoMSwgZmxvYXQgYWRqYWNlbnRXaWR0aDIs
IGJvb2wgYW50aWFsaWFzID0gZmFsc2UpIGNvbnN0OworICAgIHZvaWQgZHJhd0xpbmVGb3JCb3hT
aWRlKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIEJveFNpZGUsIE9wdGlvbmFs
UkdCQSwgRUJvcmRlclN0eWxlLCBmbG9hdCBhZGphY2VudFdpZHRoMSwgZmxvYXQgYWRqYWNlbnRX
aWR0aDIsIGJvb2wgYW50aWFsaWFzID0gZmFsc2UpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAg
ZW51bSBCYXNlVHlwZUZsYWdzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRW1iZWRkZWRPYmplY3QuY3BwCmluZGV4IDMxNWRjMTQ1ZGRmYjg1MDE0NWNhMjBiZDlmMGEx
NTBhMWI2NTdlZTQuLjk5NWI2MjBlY2U0MzJiYjA4ZGNhZDA0YTY5MzZhY2RlYTEyMTY5MTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNw
cApAQCAtNzIsMjcgKzcyLDI3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCByZXBsYWNlbWVudEFycm93
TGVmdE1hcmdpbiA9IC00Owogc3RhdGljIGNvbnN0IGZsb2F0IHJlcGxhY2VtZW50QXJyb3dQYWRk
aW5nID0gNDsKIHN0YXRpYyBjb25zdCBmbG9hdCByZXBsYWNlbWVudEFycm93Q2lyY2xlUGFkZGlu
ZyA9IDM7CiAKLXN0YXRpYyBjb25zdCBDb2xvciYgcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RQ
cmVzc2VkQ29sb3IoKQorc3RhdGljIGNvbnN0IE9wdGlvbmFsUkdCQSYgcmVwbGFjZW1lbnRUZXh0
Um91bmRlZFJlY3RQcmVzc2VkQ29sb3IoKQogewotICAgIHN0YXRpYyBjb25zdCBDb2xvciBwcmVz
c2VkKDEwNSwgMTA1LCAxMDUsIDI0Mik7CisgICAgc3RhdGljIGNvbnN0IE9wdGlvbmFsUkdCQSBw
cmVzc2VkKDEwNSwgMTA1LCAxMDUsIDI0Mik7CiAgICAgcmV0dXJuIHByZXNzZWQ7CiB9CiAKLXN0
YXRpYyBjb25zdCBDb2xvciYgcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RDb2xvcigpCitzdGF0
aWMgY29uc3QgT3B0aW9uYWxSR0JBJiByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdENvbG9yKCkK
IHsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3Igc3RhbmRhcmQoMTI1LCAxMjUsIDEyNSwgMjQyKTsK
KyAgICBzdGF0aWMgY29uc3QgT3B0aW9uYWxSR0JBIHN0YW5kYXJkKDEyNSwgMTI1LCAxMjUsIDI0
Mik7CiAgICAgcmV0dXJuIHN0YW5kYXJkOwogfQogCi1zdGF0aWMgY29uc3QgQ29sb3ImIHJlcGxh
Y2VtZW50VGV4dENvbG9yKCkKK3N0YXRpYyBjb25zdCBPcHRpb25hbFJHQkEmIHJlcGxhY2VtZW50
VGV4dENvbG9yKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3Igc3RhbmRhcmQoMjQwLCAyNDAs
IDI0MCwgMjU1KTsKKyAgICBzdGF0aWMgY29uc3QgT3B0aW9uYWxSR0JBIHN0YW5kYXJkKDI0MCwg
MjQwLCAyNDAsIDI1NSk7CiAgICAgcmV0dXJuIHN0YW5kYXJkOwogfQogCi1zdGF0aWMgY29uc3Qg
Q29sb3ImIHVuYXZhaWxhYmxlUGx1Z2luQm9yZGVyQ29sb3IoKQorc3RhdGljIGNvbnN0IE9wdGlv
bmFsUkdCQSYgdW5hdmFpbGFibGVQbHVnaW5Cb3JkZXJDb2xvcigpCiB7Ci0gICAgc3RhdGljIGNv
bnN0IENvbG9yIHN0YW5kYXJkKDI1NSwgMjU1LCAyNTUsIDIxNik7CisgICAgc3RhdGljIGNvbnN0
IE9wdGlvbmFsUkdCQSBzdGFuZGFyZCgyNTUsIDI1NSwgMjU1LCAyMTYpOwogICAgIHJldHVybiBz
dGFuZGFyZDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZyYW1lU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5j
cHAKaW5kZXggMzMzMTc3NmFjNDNjODRiODg0OGIzMmM0MjNlNzRlOWU3MWZkYzYwNC4uZThkNDJh
Njg5YTcxNTRhZGE0MjI0N2ZlZDQyMjlhYzRjYTNiZmZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCkBAIC02NywxOSArNjcsMTkgQEAgUmVuZGVyRnJh
bWVTZXQ6OkdyaWRBeGlzOjpHcmlkQXhpcygpCiB7CiB9CiAKLXN0YXRpYyBDb2xvciBib3JkZXJT
dGFydEVkZ2VDb2xvcigpCitzdGF0aWMgT3B0aW9uYWxSR0JBIGJvcmRlclN0YXJ0RWRnZUNvbG9y
KCkKIHsKLSAgICByZXR1cm4gQ29sb3IoMTcwLCAxNzAsIDE3MCk7CisgICAgcmV0dXJuIE9wdGlv
bmFsUkdCQSgxNzAsIDE3MCwgMTcwKTsKIH0KIAotc3RhdGljIENvbG9yIGJvcmRlckVuZEVkZ2VD
b2xvcigpCitzdGF0aWMgT3B0aW9uYWxSR0JBIGJvcmRlckVuZEVkZ2VDb2xvcigpCiB7Ci0gICAg
cmV0dXJuIENvbG9yOjpibGFjazsKKyAgICByZXR1cm4gT3B0aW9uYWxSR0JBOjpibGFjazsKIH0K
IAotc3RhdGljIENvbG9yIGJvcmRlckZpbGxDb2xvcigpCitzdGF0aWMgT3B0aW9uYWxSR0JBIGJv
cmRlckZpbGxDb2xvcigpCiB7Ci0gICAgcmV0dXJuIENvbG9yKDIwOCwgMjA4LCAyMDgpOworICAg
IHJldHVybiBPcHRpb25hbFJHQkEoMjA4LCAyMDgsIDIwOCk7CiB9CiAKIHZvaWQgUmVuZGVyRnJh
bWVTZXQ6OnBhaW50Q29sdW1uQm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBJbnRSZWN0JiBib3JkZXJSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZ1bGxTY3JlZW4uY3BwCmluZGV4IDJjZjk5NTQyOWI2YTYxNTIwMGE5ODIyMjM4OTBhY2VhZmMx
ZTUwM2EuLmY3ODJhZTdkN2NkYTJmMzMxNTkzMWU1MTI2NGVhM2ZmOTQ5MTIzMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAKQEAgLTk5LDcgKzk5
LDcgQEAgc3RhdGljIFJlZjxSZW5kZXJTdHlsZT4gY3JlYXRlRnVsbFNjcmVlblN0eWxlKCkKICAg
ICBmdWxsc2NyZWVuU3R5bGUuZ2V0KCkuc2V0TGVmdChMZW5ndGgoMCwgV2ViQ29yZTo6Rml4ZWQp
KTsKICAgICBmdWxsc2NyZWVuU3R5bGUuZ2V0KCkuc2V0VG9wKExlbmd0aCgwLCBXZWJDb3JlOjpG
aXhlZCkpOwogICAgIAotICAgIGZ1bGxzY3JlZW5TdHlsZS5nZXQoKS5zZXRCYWNrZ3JvdW5kQ29s
b3IoQ29sb3I6OmJsYWNrKTsKKyAgICBmdWxsc2NyZWVuU3R5bGUuZ2V0KCkuc2V0QmFja2dyb3Vu
ZENvbG9yKE9wdGlvbmFsUkdCQTo6YmxhY2spOwogCiAgICAgcmV0dXJuIGZ1bGxzY3JlZW5TdHls
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDI5ODRk
NTdjYWI3ZjMwN2Q5OWY4ZmUwMDA2MjcxNzEwNjIxMTAzYmQuLjE5MmRkN2YzMzEyMzdlYjlhYzVm
MGRjMDA4YmRkNmJhZDdlMzk1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcApAQCAtMzkyLDggKzM5Miw4IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFj
ZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAKICAg
ICAgICAgICAgIC8vIERyYXcgYW4gb3V0bGluZSByZWN0IHdoZXJlIHRoZSBpbWFnZSBzaG91bGQg
YmUuCiAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcjo6bGlnaHRHcmF5LCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29s
b3I6OnRyYW5zcGFyZW50LCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250
ZXh0LT5zZXRTdHJva2VDb2xvcihPcHRpb25hbFJHQkE6OmxpZ2h0R3JheSwgc3R5bGUoKS5jb2xv
clNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKE9wdGlvbmFsUkdC
QTo6dHJhbnNwYXJlbnQsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgIGNvbnRl
eHQtPmRyYXdSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNl
dC54KCkgKyBsZWZ0Qm9yZGVyICsgbGVmdFBhZCwgcGFpbnRPZmZzZXQueSgpICsgdG9wQm9yZGVy
ICsgdG9wUGFkLCBjV2lkdGgsIGNIZWlnaHQpLCBkZXZpY2VTY2FsZUZhY3RvciksIGJvcmRlcldp
ZHRoKTsKIAogICAgICAgICAgICAgYm9vbCBlcnJvclBpY3R1cmVEcmF3biA9IGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCA0OWQ0NTIwNWMwYTlj
OGIxZDYxNDUwMjU2MmU1NWJmMGE4MzQ2M2M1Li4yNzI3ZmJjM2Y3MTZhMzEzMmMyNjg2YWNiNGFk
ZmUzNWZkY2NmMTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNw
cApAQCAtMTU3OCwxMSArMTU3OCwxMSBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5l
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgIH0K
ICAgICByZWN0cy5hcHBlbmQoTGF5b3V0UmVjdCgpKTsKIAotICAgIENvbG9yIG91dGxpbmVDb2xv
ciA9IHN0eWxlVG9Vc2UudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5T3V0bGluZUNv
bG9yKTsKKyAgICBPcHRpb25hbFJHQkEgb3V0bGluZUNvbG9yID0gc3R5bGVUb1VzZS52aXNpdGVk
RGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpOwogICAgIGJvb2wgdXNlVHJh
bnNwYXJlbmN5TGF5ZXIgPSBvdXRsaW5lQ29sb3IuaGFzQWxwaGEoKTsKICAgICBpZiAodXNlVHJh
bnNwYXJlbmN5TGF5ZXIpIHsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5iZWdpblRyYW5zcGFy
ZW5jeUxheWVyKHN0YXRpY19jYXN0PGZsb2F0PihvdXRsaW5lQ29sb3IuYWxwaGEoKSkgLyAyNTUp
OwotICAgICAgICBvdXRsaW5lQ29sb3IgPSBDb2xvcihvdXRsaW5lQ29sb3IucmVkKCksIG91dGxp
bmVDb2xvci5ncmVlbigpLCBvdXRsaW5lQ29sb3IuYmx1ZSgpKTsKKyAgICAgICAgb3V0bGluZUNv
bG9yID0gT3B0aW9uYWxSR0JBKG91dGxpbmVDb2xvci5yZWQoKSwgb3V0bGluZUNvbG9yLmdyZWVu
KCksIG91dGxpbmVDb2xvci5ibHVlKCkpOwogICAgIH0KIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDE7IGkgPCByZWN0cy5zaXplKCkgLSAxOyBpKyspCkBAIC0xNTk0LDcgKzE1OTQsNyBAQCB2b2lk
IFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZgogCiB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9y
TGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgTGF5b3V0UmVjdCYgbGFzdGxpbmUsIGNvbnN0IExheW91dFJlY3QmIHRoaXNsaW5lLCBjb25z
dCBMYXlvdXRSZWN0JiBuZXh0bGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IENvbG9yIG91dGxpbmVDb2xvcikKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IE9wdGlvbmFsUkdCQSBvdXRsaW5lQ29sb3IpCiB7CiAgICAg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlVG9Vc2UgPSBzdHlsZSgpOwogICAgIGludCBvdXRsaW5l
V2lkdGggPSBzdHlsZVRvVXNlLm91dGxpbmVXaWR0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5oCmluZGV4IDRlMGZlYTlmNGMwZjUxY2JjNzJmMjEyODc4ZmNjZmFlZTVm
MDIyZWEuLjI4ZDMyODUyYmVkZTEyZjQ4ZTBmNGUxYzRjZGUyMTMzZjVhZWE2MGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKQEAgLTE3NCw3ICsxNzQsNyBAQCBwcml2
YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJJbmxpbmU+IGNsb25lKCkgY29uc3Q7CiAKICAgICB2
b2lkIHBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UG9p
bnQmLCBjb25zdCBMYXlvdXRSZWN0JiBwcmV2TGluZSwgY29uc3QgTGF5b3V0UmVjdCYgdGhpc0xp
bmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExheW91dFJlY3QmIG5leHRM
aW5lLCBjb25zdCBDb2xvcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExh
eW91dFJlY3QmIG5leHRMaW5lLCBjb25zdCBPcHRpb25hbFJHQkEpOwogICAgIFJlbmRlckJveE1v
ZGVsT2JqZWN0KiBjb250aW51YXRpb25CZWZvcmUoUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7
CiAKICAgICBSZW5kZXJMaW5lQm94TGlzdCBtX2xpbmVCb3hlczsgICAvLyBBbGwgb2YgdGhlIGxp
bmUgYm94ZXMgY3JlYXRlZCBmb3IgdGhpcyBpbmxpbmUgZmxvdy4gIEZvciBleGFtcGxlLCA8aT5I
ZWxsbzxicj53b3JsZC48L2k+IHdpbGwgaGF2ZSB0d28gPGk+IGxpbmUgYm94ZXMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA4MTBhZGExY2E1OTUyNjRkODgw
ZjBmMDVhY2QyYzlhZDU2ZmUyMTlmLi5jNDNhYWQ1NmZjZjhlZmZkMjRhNTQwMDg1M2U2YjZiNzY5
ODkzMmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTE4
MTYsNyArMTgxNiw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJz
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQCiAjZW5kaWYKIAogI2lmZGVm
IFJFVkVBTF9UUkFOU1BBUkVOQ1lfTEFZRVJTCi0gICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xv
cihDb2xvcigwLjBmLCAwLjBmLCAwLjVmLCAwLjJmKSwgQ29sb3JTcGFjZURldmljZVJHQik7Cisg
ICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihPcHRpb25hbFJHQkEoMC4wZiwgMC4wZiwgMC41
ZiwgMC4yZiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBjb250ZXh0LT5maWxsUmVj
dChwaXhlbFNuYXBwZWRDbGlwUmVjdCk7CiAjZW5kaWYKICAgICB9CkBAIC0zNjI2LDcgKzM2MjYs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBwYQogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGFp
bnQgd2hpdGUgaWYgd2UgaGF2ZSBvdmVybGF5IHNjcm9sbGJhcnMsIHNpbmNlIHdlIG5lZWQKICAg
ICAvLyB0byBzZWUgd2hhdCBpcyBiZWhpbmQgaXQuCiAgICAgaWYgKCFoYXNPdmVybGF5U2Nyb2xs
YmFycygpKQotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChhYnNSZWN0LCBDb2xvcjo6d2hpdGUs
IGJveC0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LT5maWxsUmVjdChh
YnNSZWN0LCBPcHRpb25hbFJHQkE6OndoaXRlLCBib3gtPnN0eWxlKCkuY29sb3JTcGFjZSgpKTsK
IH0KIAogdm9pZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVzaXplckNvcm5lclJlY3QpCkBA
IC0zNjg4LDkgKzM2ODgsOSBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgogICAgICAgICBjb250
ZXh0LT5jbGlwKGFic1JlY3QpOwogICAgICAgICBMYXlvdXRSZWN0IGxhcmdlckNvcm5lciA9IGFi
c1JlY3Q7CiAgICAgICAgIGxhcmdlckNvcm5lci5zZXRTaXplKExheW91dFNpemUobGFyZ2VyQ29y
bmVyLndpZHRoKCkgKyBMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoMSksIGxhcmdlckNvcm5lci5oZWln
aHQoKSArIExheW91dFVuaXQ6OmZyb21QaXhlbCgxKSkpOwotICAgICAgICBjb250ZXh0LT5zZXRT
dHJva2VDb2xvcihDb2xvcihtYWtlUkdCKDIxNywgMjE3LCAyMTcpKSwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CisgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKE9wdGlvbmFsUkdCQShtYWtl
UkdCKDIxNywgMjE3LCAyMTcpKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGNvbnRl
eHQtPnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENv
bG9yKENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNv
bnRleHQtPnNldEZpbGxDb2xvcihPcHRpb25hbFJHQkE6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKICAgICAgICAgY29udGV4dC0+ZHJhd1JlY3Qoc25hcHBlZEludFJlY3QobGFy
Z2VyQ29ybmVyKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA4MzkwZjA5YmMxYTIzNTM1YzM1OGE5YTM0ODViMjM5
Nzc3OTMyZDI2Li45ZDg0Y2VjZDcxNTBjOTU1MjhiMWI2NWZjNWI4NzY2NmYyZTI4NjFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAt
MTY2Niw3ICsxNjY2LDcgQEAgc3RhdGljIGJvb2wgY2FuQ3JlYXRlVGlsZWRJbWFnZShjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgaWYgKGZpbGxMYXllci0+YXR0YWNobWVudCgpICE9IFNj
cm9sbEJhY2tncm91bmRBdHRhY2htZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBD
b2xvciBjb2xvciA9IHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvcik7CisgICAgT3B0aW9uYWxSR0JBIGNvbG9yID0gc3R5bGUudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKIAogICAgIC8vIEZJWE1FOiBB
bGxvdyBjb2xvcitpbWFnZSBjb21wb3NpdGluZyB3aGVuIGl0IG1ha2VzIHNlbnNlLgogICAgIC8v
IEZvciBub3cgYmFpbGluZyBvdXQuCkBAIC0xNzAyLDcgKzE3MDIsNyBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgaGFzUGVyc3BlY3RpdmVPclByZXNlcnZlczNEKGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSkKICAgICByZXR1cm4gc3R5bGUuaGFzUGVyc3BlY3RpdmUoKSB8fCBzdHlsZS5wcmVzZXJ2ZXMz
RCgpOwogfQogCi1Db2xvciBSZW5kZXJMYXllckJhY2tpbmc6OnJlbmRlcmVyQmFja2dyb3VuZENv
bG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5kZXJMYXllckJhY2tpbmc6OnJlbmRlcmVyQmFj
a2dyb3VuZENvbG9yKCkgY29uc3QKIHsKICAgICBjb25zdCBhdXRvJiBiYWNrZ3JvdW5kUmVuZGVy
ZXIgPSByZW5kZXJlcigpLmlzUm9vdCgpID8gcmVuZGVyZXIoKS5yZW5kZXJlckZvclJvb3RCYWNr
Z3JvdW5kKCkgOiByZW5kZXJlcigpOwogICAgIHJldHVybiBiYWNrZ3JvdW5kUmVuZGVyZXIuc3R5
bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwpA
QCAtMTcxMSwxMSArMTcxMSwxMSBAQCBDb2xvciBSZW5kZXJMYXllckJhY2tpbmc6OnJlbmRlcmVy
QmFja2dyb3VuZENvbG9yKCkgY29uc3QKIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVE
aXJlY3RseUNvbXBvc2l0ZWRCYWNrZ3JvdW5kQ29sb3IoYm9vbCBpc1NpbXBsZUNvbnRhaW5lciwg
Ym9vbCYgZGlkVXBkYXRlQ29udGVudHNSZWN0KQogewogICAgIGlmICghaXNTaW1wbGVDb250YWlu
ZXIpIHsKLSAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvU29saWRDb2xvcihD
b2xvcigpKTsKKyAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvU29saWRDb2xv
cihPcHRpb25hbFJHQkEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBDb2xvciBi
YWNrZ3JvdW5kQ29sb3IgPSByZW5kZXJlckJhY2tncm91bmRDb2xvcigpOworICAgIE9wdGlvbmFs
UkdCQSBiYWNrZ3JvdW5kQ29sb3IgPSByZW5kZXJlckJhY2tncm91bmRDb2xvcigpOwogCiAgICAg
Ly8gQW4gdW5zZXQgKGludmFsaWQpIGNvbG9yIHdpbGwgcmVtb3ZlIHRoZSBzb2xpZCBjb2xvci4K
ICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGJhY2tncm91bmRD
b2xvcik7CkBAIC0xNzYwLDE0ICsxNzYwLDE0IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVSb290TGF5ZXJDb25maWd1cmF0aW9uKCkKICAgICBpZiAoIW1fdXNpbmdUaWxlZENhY2hl
TGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIENvbG9yIGJhY2tncm91bmRDb2xvcjsKKyAg
ICBPcHRpb25hbFJHQkEgYmFja2dyb3VuZENvbG9yOwogICAgIGJvb2wgdmlld0lzVHJhbnNwYXJl
bnQgPSBjb21wb3NpdG9yKCkudmlld0hhc1RyYW5zcGFyZW50QmFja2dyb3VuZCgmYmFja2dyb3Vu
ZENvbG9yKTsKIAogICAgIGlmIChtX2JhY2tncm91bmRMYXllclBhaW50c0ZpeGVkUm9vdEJhY2tn
cm91bmQgJiYgbV9iYWNrZ3JvdW5kTGF5ZXIpIHsKICAgICAgICAgbV9iYWNrZ3JvdW5kTGF5ZXIt
PnNldEJhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOwogICAgICAgICBtX2JhY2tncm91
bmRMYXllci0+c2V0Q29udGVudHNPcGFxdWUoIXZpZXdJc1RyYW5zcGFyZW50KTsKIAotICAgICAg
ICBtX2dyYXBoaWNzTGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihDb2xvcigpKTsKKyAgICAgICAg
bV9ncmFwaGljc0xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoT3B0aW9uYWxSR0JBKCkpOwogICAg
ICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzT3BhcXVlKGZhbHNlKTsKICAgICB9IGVs
c2UgewogICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihiYWNrZ3Jv
dW5kQ29sb3IpOwpAQCAtMjQzMSw3ICsyNDMxLDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6
OnNob3VsZER1bXBQcm9wZXJ0eUZvckxheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGxheWVyLAog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIEJhY2tncm91bmQgY29sb3Ig
Y291bGQgYmUgb2YgaW50ZXJlc3QgdG8gdGVzdHMgb3Igb3RoZXIgZHVtcGVycyBpZiBpdCdzIG5v
bi13aGl0ZS4KLSAgICAgICAgaWYgKCFzdHJjbXAocHJvcGVydHlOYW1lLCAiYmFja2dyb3VuZENv
bG9yIikgJiYgbGF5ZXItPmJhY2tncm91bmRDb2xvcigpID09IENvbG9yOjp3aGl0ZSkKKyAgICAg
ICAgaWYgKCFzdHJjbXAocHJvcGVydHlOYW1lLCAiYmFja2dyb3VuZENvbG9yIikgJiYgbGF5ZXIt
PmJhY2tncm91bmRDb2xvcigpID09IE9wdGlvbmFsUkdCQTo6d2hpdGUpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8gVGhlIHJvb3QgdGlsZSBjYWNoZSdzIHJlcGFpbnRz
IHdpbGwgc2hvdyB1cCBhdCB0aGUgdG9wIHdpdGggRnJhbWVWaWV3J3MsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggZDRkMjIzODk2ZGNmNmE1
MjI4N2QzMzZkNmFlMjQyMjdkNzk3Nzk3Ni4uNTBhOGRhMWI5ZmZmYjJkZDY1NTFjMjE3MTMxZTA2
ZWJhZTI0ZmQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuaApAQCAtMzExLDcgKzMxMSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0RpcmVjdGx5
Q29tcG9zaXRlZEltYWdlKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVJbWFnZUNvbnRlbnRzKCk7
CiAKLSAgICBDb2xvciByZW5kZXJlckJhY2tncm91bmRDb2xvcigpIGNvbnN0OworICAgIE9wdGlv
bmFsUkdCQSByZW5kZXJlckJhY2tncm91bmRDb2xvcigpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRl
RGlyZWN0bHlDb21wb3NpdGVkQmFja2dyb3VuZENvbG9yKGJvb2wgaXNTaW1wbGVDb250YWluZXIs
IGJvb2wmIGRpZFVwZGF0ZUNvbnRlbnRzUmVjdCk7CiAgICAgdm9pZCB1cGRhdGVEaXJlY3RseUNv
bXBvc2l0ZWRCYWNrZ3JvdW5kSW1hZ2UoYm9vbCBpc1NpbXBsZUNvbnRhaW5lciwgYm9vbCYgZGlk
VXBkYXRlQ29udGVudHNSZWN0KTsKICAgICB2b2lkIHVwZGF0ZURpcmVjdGx5Q29tcG9zaXRlZENv
bnRlbnRzKGJvb2wgaXNTaW1wbGVDb250YWluZXIsIGJvb2wmIGRpZFVwZGF0ZUNvbnRlbnRzUmVj
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwCmluZGV4IDJjM2JiOWYzZTk5MDAwNGY2MTljMmIyMWY5NTMwNjBlMTQ1YjAyNTcuLmUz
NmE2YTM5YzAwMWM1NjZjOTI5Mzk3ZjBjNjU3ZmViYjk0N2JhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0zMTk0LDE3
ICszMTk0LDE3IEBAIEdyYXBoaWNzTGF5ZXIqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRl
TGF5ZXJGb3JGb290ZXIoYm9vbCB3YW50c0xheWVyKQogCiAjZW5kaWYKIAotYm9vbCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnZpZXdIYXNUcmFuc3BhcmVudEJhY2tncm91bmQoQ29sb3IqIGJhY2tn
cm91bmRDb2xvcikgY29uc3QKK2Jvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp2aWV3SGFzVHJh
bnNwYXJlbnRCYWNrZ3JvdW5kKE9wdGlvbmFsUkdCQSogYmFja2dyb3VuZENvbG9yKSBjb25zdAog
ewogICAgIGlmIChtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkuaXNUcmFuc3BhcmVudCgpKSB7CiAg
ICAgICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IpCi0gICAgICAgICAgICAqYmFja2dyb3VuZENvbG9y
ID0gQ29sb3IoKTsgLy8gUmV0dXJuIGFuIGludmFsaWQgY29sb3IuCisgICAgICAgICAgICAqYmFj
a2dyb3VuZENvbG9yID0gT3B0aW9uYWxSR0JBKCk7IC8vIFJldHVybiBhbiBpbnZhbGlkIGNvbG9y
LgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBDb2xvciBkb2N1bWVudEJhY2tn
cm91bmRDb2xvciA9IG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5kb2N1bWVudEJhY2tncm91bmRD
b2xvcigpOworICAgIE9wdGlvbmFsUkdCQSBkb2N1bWVudEJhY2tncm91bmRDb2xvciA9IG1fcmVu
ZGVyVmlldy5mcmFtZVZpZXcoKS5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpOwogICAgIGlmICgh
ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQotICAgICAgICBkb2N1bWVudEJhY2tn
cm91bmRDb2xvciA9IENvbG9yOjp3aGl0ZTsKKyAgICAgICAgZG9jdW1lbnRCYWNrZ3JvdW5kQ29s
b3IgPSBPcHRpb25hbFJHQkE6OndoaXRlOwogCiAgICAgaWYgKGJhY2tncm91bmRDb2xvcikKICAg
ICAgICAgKmJhY2tncm91bmRDb2xvciA9IGRvY3VtZW50QmFja2dyb3VuZENvbG9yOwpAQCAtMzIx
OSw3ICszMjE5LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJvb3RPckJvZHlTdHls
ZUNoYW5nZWQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnMKICAgICBpZiAoIWluQ29tcG9z
aXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENvbG9yIG9sZEJhY2tncm91bmRD
b2xvcjsKKyAgICBPcHRpb25hbFJHQkEgb2xkQmFja2dyb3VuZENvbG9yOwogICAgIGlmIChvbGRT
dHlsZSkKICAgICAgICAgb2xkQmFja2dyb3VuZENvbG9yID0gb2xkU3R5bGUtPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAKQEAgLTMyNTEsNyArMzI1
MSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyb290QmFja2dyb3VuZFRyYW5zcGFy
ZW5jeUNoYW5nZWQoKQogICAgIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclVwZGF0ZSgpOwogfQog
Ci12b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2V0Um9vdEV4dGVuZGVkQmFja2dyb3VuZENv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3ZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpzZXRS
b290RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvcikKIHsK
ICAgICBpZiAoY29sb3IgPT0gbV9yb290RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuaAppbmRleCBlOWIwZTQ4YTljM2Y5ZjFiMTZiMDJiOTQyNjA0YTFlMTllYjQwMTExLi5m
ZmQ1MzhkYjNmYjI0YTZmM2RkZTk1OTU2MGUyYmE0YWRiODkzZmNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC0yOTgsNyArMjk4
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRTaG91bGRSZWV2YWx1YXRlQ29tcG9zaXRpbmdB
ZnRlckxheW91dCgpIHsgbV9yZWV2YWx1YXRlQ29tcG9zaXRpbmdBZnRlckxheW91dCA9IHRydWU7
IH0KIAotICAgIGJvb2wgdmlld0hhc1RyYW5zcGFyZW50QmFja2dyb3VuZChDb2xvciogYmFja2dy
b3VuZENvbG9yID0gbnVsbHB0cikgY29uc3Q7CisgICAgYm9vbCB2aWV3SGFzVHJhbnNwYXJlbnRC
YWNrZ3JvdW5kKE9wdGlvbmFsUkdCQSogYmFja2dyb3VuZENvbG9yID0gbnVsbHB0cikgY29uc3Q7
CiAKICAgICBib29sIGhhc05vbk1haW5MYXllcnNXaXRoVGlsZWRCYWNraW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXllcnNXaXRoVGlsZWRCYWNraW5nQ291bnQ7IH0KIApAQCAtMzA5LDggKzMwOSw4
IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGRpZFBhaW50QmFja2luZyhSZW5kZXJMYXllckJh
Y2tpbmcqKTsKIAotICAgIHZvaWQgc2V0Um9vdEV4dGVuZGVkQmFja2dyb3VuZENvbG9yKGNvbnN0
IENvbG9yJik7Ci0gICAgQ29sb3Igcm9vdEV4dGVuZGVkQmFja2dyb3VuZENvbG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9yb290RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7IH0KKyAgICB2b2lkIHNldFJv
b3RFeHRlbmRlZEJhY2tncm91bmRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmKTsKKyAgICBPcHRp
b25hbFJHQkEgcm9vdEV4dGVuZGVkQmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9y
b290RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7IH0KIAogICAgIC8vIEZvciB0ZXN0aW5nLgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRUcmFja2luZ0xheWVyRmx1c2hlcygpOwpAQCAtNTU3
LDcgKzU1Nyw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fc2Vjb25kYXJ5QmFja2luZ1N0b3Jl
Qnl0ZXMgeyAwIH07CiAjZW5kaWYKIAotICAgIENvbG9yIG1fcm9vdEV4dGVuZGVkQmFja2dyb3Vu
ZENvbG9yOworICAgIE9wdGlvbmFsUkdCQSBtX3Jvb3RFeHRlbmRlZEJhY2tncm91bmRDb2xvcjsK
IAogICAgIEhhc2hNYXA8U2Nyb2xsaW5nTm9kZUlELCBSZW5kZXJMYXllcio+IG1fc2Nyb2xsaW5n
Tm9kZVRvTGF5ZXJNYXA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guY3BwCmluZGV4IDkxNmMyZGU3ZWI1N2NmNWE3MWNmZjg1NDQ0ODhkYjM1YzExOTM3NjMuLjYy
MTNlOWFlZjhmN2M5OGM3ZjcwZTk1ZDUwMmMxNDcwYzBkODdhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTM4Nyw3ICszODcsNyBAQCB2b2lkIFJl
bmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JgogICAgICAgICBpdGVtVGV4dCA9IGRvd25jYXN0PEhUTUxPcHRHcm91
cEVsZW1lbnQ+KCpsaXN0SXRlbUVsZW1lbnQpLmdyb3VwTGFiZWxUZXh0KCk7CiAgICAgYXBwbHlU
ZXh0VHJhbnNmb3JtKHN0eWxlKCksIGl0ZW1UZXh0LCAnICcpOwogCi0gICAgQ29sb3IgdGV4dENv
bG9yID0gaXRlbVN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsK
KyAgICBPcHRpb25hbFJHQkEgdGV4dENvbG9yID0gaXRlbVN0eWxlLnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICBpZiAoaXNPcHRpb25FbGVtZW50ICYmIGRvd25j
YXN0PEhUTUxPcHRpb25FbGVtZW50PigqbGlzdEl0ZW1FbGVtZW50KS5zZWxlY3RlZCgpKSB7CiAg
ICAgICAgIGlmIChmcmFtZSgpLnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpICYmIGRv
Y3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSA9PSAmc2VsZWN0RWxlbWVudCgpKQogICAgICAgICAg
ICAgdGV4dENvbG9yID0gdGhlbWUoKS5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENv
bG9yKCk7CkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1C
YWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICBI
VE1MRWxlbWVudCogbGlzdEl0ZW1FbGVtZW50ID0gbGlzdEl0ZW1zW2xpc3RJbmRleF07CiAgICAg
UmVuZGVyU3R5bGUmIGl0ZW1TdHlsZSA9ICpsaXN0SXRlbUVsZW1lbnQtPmNvbXB1dGVkU3R5bGUo
KTsKIAotICAgIENvbG9yIGJhY2tDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgYmFja0NvbG9yOwog
ICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oKmxpc3RJdGVtRWxlbWVudCkgJiYgZG93bmNh
c3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpsaXN0SXRlbUVsZW1lbnQpLnNlbGVjdGVkKCkpIHsKICAg
ICAgICAgaWYgKGZyYW1lKCkuc2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkgJiYgZG9j
dW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpID09ICZzZWxlY3RFbGVtZW50KCkpCiAgICAgICAgICAg
ICBiYWNrQ29sb3IgPSB0aGVtZSgpLmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFy
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApp
bmRleCA5MDBjODcwMDM4NjM2N2JiZDAyMGQ1MzhkMGI3NmNlNTY5NzA1ZDE0Li44YjEwZjFhOGIy
NjlhNTJlM2ZkNjU2NzA2NWUxOWI1MzdhMDYwOTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC0xMjEyLDcgKzEyMTIsNyBAQCB2b2lkIFJl
bmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZQogICAgICAgICBjb250ZXh0LT5maWxsUmVjdChzbmFwcGVkSW50UmVj
dChzZWxSZWN0KSwgbV9saXN0SXRlbS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUo
KS5jb2xvclNwYWNlKCkpOwogICAgIH0KIAotICAgIGNvbnN0IENvbG9yIGNvbG9yKHN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKKyAgICBjb25zdCBPcHRp
b25hbFJHQkEgY29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlD
b2xvcikpOwogICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGNvbG9yLCBzdHlsZSgpLmNvbG9y
U3BhY2UoKSk7CiAgICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwogICAg
IGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKQEAgLTEyMjQsNyArMTIyNCw3IEBA
IHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxsaXBz
ZShtYXJrZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIENpcmNsZToKLSAg
ICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKE9wdGlv
bmFsUkdCQTo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICAgICAg
Y29udGV4dC0+ZHJhd0VsbGlwc2UobWFya2VyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgY2FzZSBTcXVhcmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0
LmNwcAppbmRleCBkYjk5NDk5Y2JkZmYwM2E1NTEwMWQyYWQ4NmUxODM3NmNmYWZhMjhiLi45N2Vh
NjRjZDUxZGU5OWZiMzAyYjFmNDI0OGFkZjU1MTBlMjI0N2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKQEAgLTUxOCw3ICs1MTgsNyBAQCBQb3B1cE1l
bnVTdHlsZSBSZW5kZXJNZW51TGlzdDo6aXRlbVN0eWxlKHVuc2lnbmVkIGxpc3RJbmRleCkgY29u
c3QKICAgICB9CiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBsaXN0SXRlbXNbbGlzdEluZGV4
XTsKIAotICAgIENvbG9yIGl0ZW1CYWNrZ3JvdW5kQ29sb3I7CisgICAgT3B0aW9uYWxSR0JBIGl0
ZW1CYWNrZ3JvdW5kQ29sb3I7CiAgICAgYm9vbCBpdGVtSGFzQ3VzdG9tQmFja2dyb3VuZENvbG9y
OwogICAgIGdldEl0ZW1CYWNrZ3JvdW5kQ29sb3IobGlzdEluZGV4LCBpdGVtQmFja2dyb3VuZENv
bG9yLCBpdGVtSGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yKTsKIApAQCAtNTI4LDcgKzUyOCw3IEBA
IFBvcHVwTWVudVN0eWxlIFJlbmRlck1lbnVMaXN0OjppdGVtU3R5bGUodW5zaWduZWQgbGlzdElu
ZGV4KSBjb25zdAogICAgICAgICBpdGVtSGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yID8gUG9wdXBN
ZW51U3R5bGU6OkN1c3RvbUJhY2tncm91bmRDb2xvciA6IFBvcHVwTWVudVN0eWxlOjpEZWZhdWx0
QmFja2dyb3VuZENvbG9yKTsKIH0KIAotdm9pZCBSZW5kZXJNZW51TGlzdDo6Z2V0SXRlbUJhY2tn
cm91bmRDb2xvcih1bnNpZ25lZCBsaXN0SW5kZXgsIENvbG9yJiBpdGVtQmFja2dyb3VuZENvbG9y
LCBib29sJiBpdGVtSGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yKSBjb25zdAordm9pZCBSZW5kZXJN
ZW51TGlzdDo6Z2V0SXRlbUJhY2tncm91bmRDb2xvcih1bnNpZ25lZCBsaXN0SW5kZXgsIE9wdGlv
bmFsUkdCQSYgaXRlbUJhY2tncm91bmRDb2xvciwgYm9vbCYgaXRlbUhhc0N1c3RvbUJhY2tncm91
bmRDb2xvcikgY29uc3QKIHsKICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0
ZW1zID0gc2VsZWN0RWxlbWVudCgpLmxpc3RJdGVtcygpOwogICAgIGlmIChsaXN0SW5kZXggPj0g
bGlzdEl0ZW1zLnNpemUoKSkgewpAQCAtNTM4LDcgKzUzOCw3IEBAIHZvaWQgUmVuZGVyTWVudUxp
c3Q6OmdldEl0ZW1CYWNrZ3JvdW5kQ29sb3IodW5zaWduZWQgbGlzdEluZGV4LCBDb2xvciYgaXRl
bUJhY2tnCiAgICAgfQogICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2xpc3RJ
bmRleF07CiAKLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSBlbGVtZW50LT5jb21wdXRlZFN0
eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7
CisgICAgT3B0aW9uYWxSR0JBIGJhY2tncm91bmRDb2xvciA9IGVsZW1lbnQtPmNvbXB1dGVkU3R5
bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsK
ICAgICBpdGVtSGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yLmlzVmFs
aWQoKSAmJiBiYWNrZ3JvdW5kQ29sb3IuYWxwaGEoKTsKICAgICAvLyBJZiB0aGUgaXRlbSBoYXMg
YW4gb3BhcXVlIGJhY2tncm91bmQgY29sb3IsIHJldHVybiB0aGF0LgogICAgIGlmICghYmFja2dy
b3VuZENvbG9yLmhhc0FscGhhKCkpIHsKQEAgLTU1NCw3ICs1NTQsNyBAQCB2b2lkIFJlbmRlck1l
bnVMaXN0OjpnZXRJdGVtQmFja2dyb3VuZENvbG9yKHVuc2lnbmVkIGxpc3RJbmRleCwgQ29sb3Im
IGl0ZW1CYWNrZwogICAgIH0KIAogICAgIC8vIElmIHRoZSBtZW51IGJhY2tncm91bmQgaXMgbm90
IG9wYXF1ZSwgdGhlbiBhZGQgYW4gb3BhcXVlIHdoaXRlIGJhY2tncm91bmQgYmVoaW5kLgotICAg
IGl0ZW1CYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcihDb2xvcjo6d2hpdGUpLmJsZW5kKGJhY2tncm91
bmRDb2xvcik7CisgICAgaXRlbUJhY2tncm91bmRDb2xvciA9IE9wdGlvbmFsUkdCQShPcHRpb25h
bFJHQkE6OndoaXRlKS5ibGVuZChiYWNrZ3JvdW5kQ29sb3IpOwogfQogCiBQb3B1cE1lbnVTdHls
ZSBSZW5kZXJNZW51TGlzdDo6bWVudVN0eWxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1lbnVMaXN0LmgKaW5kZXggNzEzZGMyZDY5MjAxNzBlNDgzOTRlMzA5NzdjNmI2
YjgxMDkzODZiMy4uNmMzZDI3NWQ2ZTM3N2YwNjIwNDA2MjdhYzY1ZTJmNzFmOTFlYjgzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKQEAgLTEyNiw3ICsxMjYs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGlu
ZSgpOyB9CiAgICAgdmlydHVhbCBPcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGlu
ZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJC
bG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShkaXJlY3Rpb24pOyB9CiAKLSAgICB2b2lkIGdldEl0
ZW1CYWNrZ3JvdW5kQ29sb3IodW5zaWduZWQgbGlzdEluZGV4LCBDb2xvciYsIGJvb2wmIGl0ZW1I
YXNDdXN0b21CYWNrZ3JvdW5kQ29sb3IpIGNvbnN0OworICAgIHZvaWQgZ2V0SXRlbUJhY2tncm91
bmRDb2xvcih1bnNpZ25lZCBsaXN0SW5kZXgsIE9wdGlvbmFsUkdCQSYsIGJvb2wmIGl0ZW1IYXND
dXN0b21CYWNrZ3JvdW5kQ29sb3IpIGNvbnN0OwogCiAgICAgdm9pZCBjcmVhdGVJbm5lckJsb2Nr
KCk7CiAgICAgdm9pZCBhZGp1c3RJbm5lclN0eWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAppbmRleCA5NGM3Njc3ZGM5MWRiZWJh
MmY0Y2Y4MTg3MjE2ZGFjMWE1NDBkYTliLi4wMWY1YjA5NGM1NzNlMWZiN2EzNzc5YjBlOTc1ZTE5
NTM3N2U0NDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVs
dGlDb2x1bW5TZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtblNldC5jcHAKQEAgLTU3OCw3ICs1NzgsNyBAQCB2b2lkIFJlbmRlck11bHRpQ29sdW1u
U2V0OjpwYWludENvbHVtblJ1bGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
bwogCiAgICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiBmbG93VGhyZWFkID0gbXVsdGlD
b2x1bW5GbG93VGhyZWFkKCk7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGJsb2NrU3R5bGUgPSBw
YXJlbnQoKS0+c3R5bGUoKTsKLSAgICBjb25zdCBDb2xvciYgcnVsZUNvbG9yID0gYmxvY2tTdHls
ZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2x1bW5SdWxlQ29sb3IpOworICAg
IGNvbnN0IE9wdGlvbmFsUkdCQSYgcnVsZUNvbG9yID0gYmxvY2tTdHlsZS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlDb2x1bW5SdWxlQ29sb3IpOwogICAgIGJvb2wgcnVsZVRyYW5z
cGFyZW50ID0gYmxvY2tTdHlsZS5jb2x1bW5SdWxlSXNUcmFuc3BhcmVudCgpOwogICAgIEVCb3Jk
ZXJTdHlsZSBydWxlU3R5bGUgPSBibG9ja1N0eWxlLmNvbHVtblJ1bGVTdHlsZSgpOwogICAgIExh
eW91dFVuaXQgcnVsZVRoaWNrbmVzcyA9IGJsb2NrU3R5bGUuY29sdW1uUnVsZVdpZHRoKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGUwMDg3ZTM4NTU0
NGY4NWQ1NzQwZWM5YTlhZTVhM2VhZjFjMzliN2UuLjdiNzA2NTZjZmEyZWY4OGM2ODJhMGMzZTc3
YjE4NDhmYTM0OWZkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCkBAIC0xNzU1LDkgKzE3NTUsOSBAQCBpbnQgUmVuZGVyT2JqZWN0Ojppbm5lckxpbmVIZWln
aHQoKSBjb25zdAogICAgIHJldHVybiBzdHlsZSgpLmNvbXB1dGVkTGluZUhlaWdodCgpOwogfQog
Ci1zdGF0aWMgQ29sb3IgZGVjb3JhdGlvbkNvbG9yKFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRp
YyBPcHRpb25hbFJHQkEgZGVjb3JhdGlvbkNvbG9yKFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKLSAg
ICBDb2xvciByZXN1bHQ7CisgICAgT3B0aW9uYWxSR0JBIHJlc3VsdDsKICAgICAvLyBDaGVjayBm
b3IgdGV4dCBkZWNvcmF0aW9uIGNvbG9yIGZpcnN0LgogICAgIHJlc3VsdCA9IHN0eWxlLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbkNvbG9yKTsK
ICAgICBpZiAocmVzdWx0LmlzVmFsaWQoKSkKQEAgLTE3NzMsMTMgKzE3NzMsMTMgQEAgc3RhdGlj
IENvbG9yIGRlY29yYXRpb25Db2xvcihSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRleHREZWNvcmF0aW9uQ29sb3JzQW5k
U3R5bGVzKGludCBkZWNvcmF0aW9ucywgQ29sb3ImIHVuZGVybGluZUNvbG9yLCBDb2xvciYgb3Zl
cmxpbmVDb2xvciwgQ29sb3ImIGxpbmV0aHJvdWdoQ29sb3IsCit2b2lkIFJlbmRlck9iamVjdDo6
Z2V0VGV4dERlY29yYXRpb25Db2xvcnNBbmRTdHlsZXMoaW50IGRlY29yYXRpb25zLCBPcHRpb25h
bFJHQkEmIHVuZGVybGluZUNvbG9yLCBPcHRpb25hbFJHQkEmIG92ZXJsaW5lQ29sb3IsIE9wdGlv
bmFsUkdCQSYgbGluZXRocm91Z2hDb2xvciwKICAgICBUZXh0RGVjb3JhdGlvblN0eWxlJiB1bmRl
cmxpbmVTdHlsZSwgVGV4dERlY29yYXRpb25TdHlsZSYgb3ZlcmxpbmVTdHlsZSwgVGV4dERlY29y
YXRpb25TdHlsZSYgbGluZXRocm91Z2hTdHlsZSwgYm9vbCBmaXJzdGxpbmVTdHlsZSkKIHsKICAg
ICBSZW5kZXJPYmplY3QqIGN1cnJlbnQgPSB0aGlzOwogICAgIFJlbmRlclN0eWxlKiBzdHlsZVRv
VXNlID0gbnVsbHB0cjsKICAgICBUZXh0RGVjb3JhdGlvbiBjdXJyRGVjcyA9IFRleHREZWNvcmF0
aW9uTm9uZTsKLSAgICBDb2xvciByZXN1bHRDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgcmVzdWx0
Q29sb3I7CiAgICAgZG8gewogICAgICAgICBzdHlsZVRvVXNlID0gZmlyc3RsaW5lU3R5bGUgPyAm
Y3VycmVudC0+Zmlyc3RMaW5lU3R5bGUoKSA6ICZjdXJyZW50LT5zdHlsZSgpOwogICAgICAgICBj
dXJyRGVjcyA9IHN0eWxlVG9Vc2UtPnRleHREZWNvcmF0aW9uKCk7CkBAIC0yMTMwLDcgKzIxMzAs
NyBAQCBSZW5kZXJGbG93VGhyZWFkKiBSZW5kZXJPYmplY3Q6OmxvY2F0ZUZsb3dUaHJlYWRDb250
YWluaW5nQmxvY2soKSBjb25zdAogICAgIHJldHVybiBjb250YWluaW5nQmxvY2sgPyBjb250YWlu
aW5nQmxvY2stPmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSA6IG51bGxwdHI7CiB9CiAKLXZv
aWQgUmVuZGVyT2JqZWN0OjpjYWxjdWxhdGVCb3JkZXJTdHlsZUNvbG9yKGNvbnN0IEVCb3JkZXJT
dHlsZSYgc3R5bGUsIGNvbnN0IEJveFNpZGUmIHNpZGUsIENvbG9yJiBjb2xvcikKK3ZvaWQgUmVu
ZGVyT2JqZWN0OjpjYWxjdWxhdGVCb3JkZXJTdHlsZUNvbG9yKGNvbnN0IEVCb3JkZXJTdHlsZSYg
c3R5bGUsIGNvbnN0IEJveFNpZGUmIHNpZGUsIE9wdGlvbmFsUkdCQSYgY29sb3IpCiB7CiAgICAg
QVNTRVJUKHN0eWxlID09IElOU0VUIHx8IHN0eWxlID09IE9VVFNFVCk7CiAgICAgLy8gVGhpcyB2
YWx1ZXMgd2VyZSBkZXJpdmVkIGVtcGlyaWNhbGx5LgpAQCAtMjE0MiwxMCArMjE0MiwxMCBAQCB2
b2lkIFJlbmRlck9iamVjdDo6Y2FsY3VsYXRlQm9yZGVyU3R5bGVDb2xvcihjb25zdCBFQm9yZGVy
U3R5bGUmIHN0eWxlLCBjb25zdCBCbwogCiAgICAgLy8gSGVyZSB3ZSB3aWxsIGRhcmtlbiB0aGUg
Ym9yZGVyIGRlY29yYXRpb24gY29sb3Igd2hlbiBuZWVkZWQuIFRoaXMgd2lsbCB5aWVsZCBhIHNp
bWlsYXIgYmVoYXZpb3IgYXMgaW4gRkYuCiAgICAgaWYgKG9wZXJhdGlvbiA9PSBEYXJrZW4pIHsK
LSAgICAgICAgaWYgKGRpZmZlcmVuY2VTcXVhcmVkKGNvbG9yLCBDb2xvcjo6YmxhY2spID4gZGlm
ZmVyZW5jZVNxdWFyZWQoYmFzZURhcmtDb2xvciwgQ29sb3I6OmJsYWNrKSkKKyAgICAgICAgaWYg
KGRpZmZlcmVuY2VTcXVhcmVkKGNvbG9yLCBPcHRpb25hbFJHQkE6OmJsYWNrKSA+IGRpZmZlcmVu
Y2VTcXVhcmVkKGJhc2VEYXJrQ29sb3IsIE9wdGlvbmFsUkdCQTo6YmxhY2spKQogICAgICAgICAg
ICAgY29sb3IgPSBjb2xvci5kYXJrKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGRpZmZl
cmVuY2VTcXVhcmVkKGNvbG9yLCBDb2xvcjo6d2hpdGUpID4gZGlmZmVyZW5jZVNxdWFyZWQoYmFz
ZUxpZ2h0Q29sb3IsIENvbG9yOjp3aGl0ZSkpCisgICAgICAgIGlmIChkaWZmZXJlbmNlU3F1YXJl
ZChjb2xvciwgT3B0aW9uYWxSR0JBOjp3aGl0ZSkgPiBkaWZmZXJlbmNlU3F1YXJlZChiYXNlTGln
aHRDb2xvciwgT3B0aW9uYWxSR0JBOjp3aGl0ZSkpCiAgICAgICAgICAgICBjb2xvciA9IGNvbG9y
LmxpZ2h0KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CmluZGV4IDFhM2FjOTEwYTMxNzYwOTJhMTdjY2IyNjllMTgzYTkyZjFkZWM2Y2MuLjdmNTQzZTVm
M2I0NWYwYjhjODQxMTJkMzAwYzkzMjI1YjRmODNhYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgKQEAgLTcxMyw3ICs3MTMsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dmlydHVhbCBDdXJzb3JEaXJlY3RpdmUgZ2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiwgQ3Vy
c29yJikgY29uc3Q7CiAKLSAgICB2b2lkIGdldFRleHREZWNvcmF0aW9uQ29sb3JzQW5kU3R5bGVz
KGludCBkZWNvcmF0aW9ucywgQ29sb3ImIHVuZGVybGluZUNvbG9yLCBDb2xvciYgb3ZlcmxpbmVD
b2xvciwgQ29sb3ImIGxpbmV0aHJvdWdoQ29sb3IsCisgICAgdm9pZCBnZXRUZXh0RGVjb3JhdGlv
bkNvbG9yc0FuZFN0eWxlcyhpbnQgZGVjb3JhdGlvbnMsIE9wdGlvbmFsUkdCQSYgdW5kZXJsaW5l
Q29sb3IsIE9wdGlvbmFsUkdCQSYgb3ZlcmxpbmVDb2xvciwgT3B0aW9uYWxSR0JBJiBsaW5ldGhy
b3VnaENvbG9yLAogICAgICAgICBUZXh0RGVjb3JhdGlvblN0eWxlJiB1bmRlcmxpbmVTdHlsZSwg
VGV4dERlY29yYXRpb25TdHlsZSYgb3ZlcmxpbmVTdHlsZSwgVGV4dERlY29yYXRpb25TdHlsZSYg
bGluZXRocm91Z2hTdHlsZSwgYm9vbCBmaXJzdGxpbmVTdHlsZSA9IGZhbHNlKTsKIAogICAgIC8v
IFJldHVybiB0aGUgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCBpbiB0aGUgY29udGFpbmVyIGNoYWlu
IHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBwYWludGluZyB0aGlzIG9iamVjdCwgb3IgbnVsbHB0
cgpAQCAtODc1LDcgKzg3NSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgUmVuZGVyRmxv
d1RocmVhZCogbG9jYXRlRmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpIGNvbnN0OwogICAgIHZv
aWQgaW52YWxpZGF0ZUZsb3dUaHJlYWRDb250YWluaW5nQmxvY2tJbmNsdWRpbmdEZXNjZW5kYW50
cyhSZW5kZXJGbG93VGhyZWFkKiA9IG51bGxwdHIpOwotICAgIHN0YXRpYyB2b2lkIGNhbGN1bGF0
ZUJvcmRlclN0eWxlQ29sb3IoY29uc3QgRUJvcmRlclN0eWxlJiwgY29uc3QgQm94U2lkZSYsIENv
bG9yJik7CisgICAgc3RhdGljIHZvaWQgY2FsY3VsYXRlQm9yZGVyU3R5bGVDb2xvcihjb25zdCBF
Qm9yZGVyU3R5bGUmLCBjb25zdCBCb3hTaWRlJiwgT3B0aW9uYWxSR0JBJik7CiAKIHByaXZhdGU6
CiAgICAgdm9pZCByZW1vdmVGcm9tUmVuZGVyRmxvd1RocmVhZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcAppbmRleCA0NjJhODQ3YWRlYzIwMDM4NDFk
YThkYzNmYmE5NzE2MzA5YjQzODA0Li42Y2ZiNTY3MDZkYWE4MmM5OWQ4MzBjNDExODdlMTBlNDhi
MmY4MTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNw
cApAQCAtMTQ5LDcgKzE0OSw3IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlclNjcm9s
bGJhcjo6Z2V0U2Nyb2xsYmFyUHNldWRvU3R5bGUoU2Nyb2xsYmFyUGFydCBwCiAgICAgLy8gVGhp
cyBpcyBiZWNhdXNlIFdlYktpdCBhc3N1bWVzIHNjcm9sbGJhciB0byBiZSBhbHdheXMgcGFpbnRl
ZCBhbmQgbWlzc2luZyBiYWNrZ3JvdW5kCiAgICAgLy8gY2F1c2VzIHZpc3VhbCBhcnRpZmFjdCBs
aWtlIG5vbi1yZXBhaW50ZWQgZGlydHkgcmVnaW9uLgogICAgIGlmIChyZXN1bHQgJiYgbV9vd25p
bmdGcmFtZSAmJiBtX293bmluZ0ZyYW1lLT52aWV3KCkgJiYgIW1fb3duaW5nRnJhbWUtPnZpZXco
KS0+aXNUcmFuc3BhcmVudCgpICYmICFyZXN1bHQtPmhhc0JhY2tncm91bmQoKSkKLSAgICAgICAg
cmVzdWx0LT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OndoaXRlKTsKKyAgICAgICAgcmVzdWx0
LT5zZXRCYWNrZ3JvdW5kQ29sb3IoT3B0aW9uYWxSR0JBOjp3aGl0ZSk7CiAKICAgICByZXR1cm4g
cmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXJUaGVtZS5jcHAKaW5kZXggMDlkOTY1MjE4ZTg3NWVkNjc0YTRiY2EzNzJmOGI5YjVlYTI4Mzc4
YS4uMzQ1YTQyMzA2ZTU1YzY2MGEzOTYwMzFmYzZmNjc1ZGRhOTAzZGUyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCkBAIC0xMjgs
NyArMTI4LDcgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6ZGlkUGFpbnRTY3JvbGxiYXIo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXIKIHZvaWQgUmVuZGVyU2Nyb2xsYmFy
VGhlbWU6OnBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpCiB7CiAgICAgLy8gRklYTUU6IEltcGxl
bWVudC4KLSAgICBjb250ZXh0LT5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIE9w
dGlvbmFsUkdCQTo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogfQogCiB2b2lkIFJlbmRl
clNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlLmgKaW5kZXggNDlhMGViOGNkMTI0ZmM1YjZkZjRmOTJhNTFiYWI0NjQ0ZGY5ODFj
MC4uZTJjODM1MGYxMTg2MmJjOTY3NmZjMDE2NDBkYmYyYTFlYTI3M2E1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBib3JkZXJFbmQo
KSA6IGJvcmRlclN0YXJ0KCk7CiAgICAgfQogCi0gICAgQ29sb3IgYmdDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKTsgfQorICAgIE9wdGlvbmFsUkdCQSBiZ0NvbG9yKCkgY29uc3QgeyByZXR1cm4gc3R5
bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOyB9
CiAKICAgICBpbnQgb3V0ZXJCb3JkZXJCZWZvcmUoKSBjb25zdDsKICAgICBpbnQgb3V0ZXJCb3Jk
ZXJBZnRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmNwcAppbmRleCAwNmEzNDZmNDkzZDMwMmRiOTQ1Mjk3N2JhZTY5MGUwOGYxMTM5MmZjLi5k
OTNhMDRmNWFjYzk3MGVhYWUyNzQ3ZDgyNjIxMmYwZWE1MmMzMTdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAtNTE0LDcgKzUxNCw3IEBAIGJv
b2wgUmVuZGVyVGFibGVDZWxsOjpoYXNFbmRCb3JkZXJBZGpvaW5pbmdUYWJsZSgpIGNvbnN0CiAK
IHN0YXRpYyBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBlbXB0eUJvcmRlcigpCiB7Ci0gICAgcmV0dXJu
IENvbGxhcHNlZEJvcmRlclZhbHVlKEJvcmRlclZhbHVlKCksIENvbG9yKCksIEJDRUxMKTsKKyAg
ICByZXR1cm4gQ29sbGFwc2VkQm9yZGVyVmFsdWUoQm9yZGVyVmFsdWUoKSwgT3B0aW9uYWxSR0JB
KCksIEJDRUxMKTsKIH0KIAogQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpj
b2xsYXBzZWRTdGFydEJvcmRlcihJbmNsdWRlQm9yZGVyQ29sb3JPck5vdCBpbmNsdWRlQ29sb3Ip
IGNvbnN0CkBAIC01NDEsNyArNTQxLDcgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFi
bGVDZWxsOjpjb21wdXRlQ29sbGFwc2VkU3RhcnRCb3JkZXIoSW5jbHVkZUJvcmRlckMKICAgICAv
LyAoMSkgT3VyIHN0YXJ0IGJvcmRlci4KICAgICBpbnQgc3RhcnRDb2xvclByb3BlcnR5ID0gaW5j
bHVkZUNvbG9yID8gQ1NTUHJvcGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvciwgc3R5bGVGb3JDZWxsRmxvdygpLmRpcmVj
dGlvbigpLCBzdHlsZUZvckNlbGxGbG93KCkud3JpdGluZ01vZGUoKSkgOiAwOwogICAgIGludCBl
bmRDb2xvclByb3BlcnR5ID0gaW5jbHVkZUNvbG9yID8gQ1NTUHJvcGVydHk6OnJlc29sdmVEaXJl
Y3Rpb25Bd2FyZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IsIHN0eWxl
Rm9yQ2VsbEZsb3coKS5kaXJlY3Rpb24oKSwgc3R5bGVGb3JDZWxsRmxvdygpLndyaXRpbmdNb2Rl
KCkpIDogMDsKLSAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSByZXN1bHQoc3R5bGUoKS5ib3JkZXJT
dGFydCgpLCBpbmNsdWRlQ29sb3IgPyBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdGFy
dENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQkNFTEwpOworICAgIENvbGxhcHNlZEJvcmRlclZh
bHVlIHJlc3VsdChzdHlsZSgpLmJvcmRlclN0YXJ0KCksIGluY2x1ZGVDb2xvciA/IHN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yKHN0YXJ0Q29sb3JQcm9wZXJ0eSkgOiBPcHRpb25hbFJHQkEo
KSwgQkNFTEwpOwogCiAgICAgUmVuZGVyVGFibGUqIHRhYmxlID0gdGhpcy0+dGFibGUoKTsKICAg
ICBpZiAoIXRhYmxlKQpAQCAtNTQ5LDcgKzU0OSw3IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJl
bmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZFN0YXJ0Qm9yZGVyKEluY2x1ZGVCb3JkZXJD
CiAgICAgLy8gKDIpIFRoZSBlbmQgYm9yZGVyIG9mIHRoZSBwcmVjZWRpbmcgY2VsbC4KICAgICBS
ZW5kZXJUYWJsZUNlbGwqIGNlbGxCZWZvcmUgPSB0YWJsZS0+Y2VsbEJlZm9yZSh0aGlzKTsKICAg
ICBpZiAoY2VsbEJlZm9yZSkgewotICAgICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBjZWxsQmVm
b3JlQWRqb2luaW5nQm9yZGVyID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoY2VsbEJlZm9yZS0+Ym9y
ZGVyQWRqb2luaW5nQ2VsbEFmdGVyKHRoaXMpLCBpbmNsdWRlQ29sb3IgPyBjZWxsQmVmb3JlLT5z
dHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihlbmRDb2xvclByb3BlcnR5KSA6IENvbG9yKCks
IEJDRUxMKTsKKyAgICAgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgY2VsbEJlZm9yZUFkam9pbmlu
Z0JvcmRlciA9IENvbGxhcHNlZEJvcmRlclZhbHVlKGNlbGxCZWZvcmUtPmJvcmRlckFkam9pbmlu
Z0NlbGxBZnRlcih0aGlzKSwgaW5jbHVkZUNvbG9yID8gY2VsbEJlZm9yZS0+c3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkgOiBPcHRpb25hbFJHQkEoKSwgQkNF
TEwpOwogICAgICAgICAvLyB8cmVzdWx0fCBzaG91bGQgYmUgdGhlIDJuZCBhcmd1bWVudCBhcyB8
Y2VsbEJlZm9yZXwgc2hvdWxkIHdpbiBpbiBjYXNlIG9mIGVxdWFsaXR5IHBlciBDU1MgMi4xIChC
b3JkZXIgY29uZmxpY3QgcmVzb2x1dGlvbiwgcG9pbnQgNCkuCiAgICAgICAgIHJlc3VsdCA9IGNo
b29zZUJvcmRlcihjZWxsQmVmb3JlQWRqb2luaW5nQm9yZGVyLCByZXN1bHQpOwogICAgICAgICBp
ZiAoIXJlc3VsdC5leGlzdHMoKSkKQEAgLTU1OSwxMiArNTU5LDEyIEBAIENvbGxhcHNlZEJvcmRl
clZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZFN0YXJ0Qm9yZGVyKEluY2x1
ZGVCb3JkZXJDCiAgICAgYm9vbCBzdGFydEJvcmRlckFkam9pbnNUYWJsZSA9IGhhc1N0YXJ0Qm9y
ZGVyQWRqb2luaW5nVGFibGUoKTsKICAgICBpZiAoc3RhcnRCb3JkZXJBZGpvaW5zVGFibGUpIHsK
ICAgICAgICAgLy8gKDMpIE91ciByb3cncyBzdGFydCBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9
IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHJvdygpLT5ib3JkZXJB
ZGpvaW5pbmdTdGFydENlbGwodGhpcyksIGluY2x1ZGVDb2xvciA/IHBhcmVudCgpLT5zdHlsZSgp
LnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdGFydENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQlJP
VykpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZShyb3coKS0+Ym9yZGVyQWRqb2luaW5nU3RhcnRDZWxsKHRoaXMpLCBpbmNsdWRlQ29s
b3IgPyBwYXJlbnQoKS0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3RhcnRDb2xvclBy
b3BlcnR5KSA6IE9wdGlvbmFsUkdCQSgpLCBCUk9XKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4
aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgICAgICAvLyAoNCkgT3Vy
IHJvdyBncm91cCdzIHN0YXJ0IGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVy
KHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoc2VjdGlvbigpLT5ib3JkZXJBZGpvaW5pbmdT
dGFydENlbGwodGhpcyksIGluY2x1ZGVDb2xvciA/IHNlY3Rpb24oKS0+c3R5bGUoKS52aXNpdGVk
RGVwZW5kZW50Q29sb3Ioc3RhcnRDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJST1dHUk9VUCkp
OworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJW
YWx1ZShzZWN0aW9uKCktPmJvcmRlckFkam9pbmluZ1N0YXJ0Q2VsbCh0aGlzKSwgaW5jbHVkZUNv
bG9yID8gc2VjdGlvbigpLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdGFydENvbG9y
UHJvcGVydHkpIDogT3B0aW9uYWxSR0JBKCksIEJST1dHUk9VUCkpOwogICAgICAgICBpZiAoIXJl
c3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtNTc1
LDE5ICs1NzUsMTkgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb21w
dXRlQ29sbGFwc2VkU3RhcnRCb3JkZXIoSW5jbHVkZUJvcmRlckMKICAgICBpZiAoUmVuZGVyVGFi
bGVDb2wqIGNvbEVsdCA9IHRhYmxlLT5jb2xFbGVtZW50KGNvbCgpLCAmc3RhcnRDb2xFZGdlLCAm
ZW5kQ29sRWRnZSkpIHsKICAgICAgICAgaWYgKGNvbEVsdC0+aXNUYWJsZUNvbHVtbkdyb3VwKCkg
JiYgc3RhcnRDb2xFZGdlKSB7CiAgICAgICAgICAgICAvLyBUaGUgfGNvbEVsdHwgaXMgYSBjb2x1
bW4gZ3JvdXAgYW5kIGlzIGFsc28gdGhlIGZpcnN0IGNvbGdyb3VwIChpbiBjYXNlIG9mIHNwYW5u
ZWQgY29sZ3JvdXBzKS4KLSAgICAgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQs
IENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbEVsdC0+Ym9yZGVyQWRqb2luaW5nQ2VsbFN0YXJ0Qm9y
ZGVyKHRoaXMpLCBpbmNsdWRlQ29sb3IgPyBjb2xFbHQtPnN0eWxlKCkudmlzaXRlZERlcGVuZGVu
dENvbG9yKHN0YXJ0Q29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ09MR1JPVVApKTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVl
KGNvbEVsdC0+Ym9yZGVyQWRqb2luaW5nQ2VsbFN0YXJ0Qm9yZGVyKHRoaXMpLCBpbmNsdWRlQ29s
b3IgPyBjb2xFbHQtPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKHN0YXJ0Q29sb3JQcm9w
ZXJ0eSkgOiBPcHRpb25hbFJHQkEoKSwgQkNPTEdST1VQKSk7CiAgICAgICAgICAgICBpZiAoIXJl
c3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9
IGVsc2UgaWYgKCFjb2xFbHQtPmlzVGFibGVDb2x1bW5Hcm91cCgpKSB7CiAgICAgICAgICAgICAv
LyBXZSBmaXJzdCBjb25zaWRlciB0aGUgfGNvbEVsdHwgYW5kIGlycmVzcGVjdGl2ZSBvZiB3aGV0
aGVyIGl0IGlzIGEgc3Bhbm5lZCBjb2wgb3Igbm90LCB3ZSBhcHBseQogICAgICAgICAgICAgLy8g
aXRzIHN0YXJ0IGJvcmRlci4gVGhpcyBpcyBhcyBwZXIgSFRNTDUgd2hpY2ggc3RhdGVzIHRoYXQ6
ICJGb3IgdGhlIHB1cnBvc2VzIG9mIHRoZSBDU1MgdGFibGUgbW9kZWwsCiAgICAgICAgICAgICAv
LyB0aGUgY29sIGVsZW1lbnQgaXMgZXhwZWN0ZWQgdG8gYmUgdHJlYXRlZCBhcyBpZiBpdCB3YXMg
cHJlc2VudCBhcyBtYW55IHRpbWVzIGFzIGl0cyBzcGFuIGF0dHJpYnV0ZSBzcGVjaWZpZXMiLgot
ICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVy
VmFsdWUoY29sRWx0LT5ib3JkZXJBZGpvaW5pbmdDZWxsU3RhcnRCb3JkZXIodGhpcyksIGluY2x1
ZGVDb2xvciA/IGNvbEVsdC0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3RhcnRDb2xv
clByb3BlcnR5KSA6IENvbG9yKCksIEJDT0wpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNob29z
ZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbEVsdC0+Ym9yZGVyQWRqb2lu
aW5nQ2VsbFN0YXJ0Qm9yZGVyKHRoaXMpLCBpbmNsdWRlQ29sb3IgPyBjb2xFbHQtPnN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yKHN0YXJ0Q29sb3JQcm9wZXJ0eSkgOiBPcHRpb25hbFJHQkEo
KSwgQkNPTCkpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIC8vIE5leHQsIGFwcGx5IHRoZSBzdGFy
dCBib3JkZXIgb2YgdGhlIGVuY2xvc2luZyBjb2xncm91cCBidXQgb25seSBpZiBpdCBpcyBhZGph
Y2VudCB0byB0aGUgY2VsbCdzIGVkZ2UuCiAgICAgICAgICAgICBpZiAoUmVuZGVyVGFibGVDb2wq
IGVuY2xvc2luZ0NvbHVtbkdyb3VwID0gY29sRWx0LT5lbmNsb3NpbmdDb2x1bW5Hcm91cElmQWRq
YWNlbnRCZWZvcmUoKSkgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihy
ZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGVuY2xvc2luZ0NvbHVtbkdyb3VwLT5ib3JkZXJB
ZGpvaW5pbmdDZWxsU3RhcnRCb3JkZXIodGhpcyksIGluY2x1ZGVDb2xvciA/IGVuY2xvc2luZ0Nv
bHVtbkdyb3VwLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdGFydENvbG9yUHJvcGVy
dHkpIDogQ29sb3IoKSwgQkNPTEdST1VQKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY2hv
b3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoZW5jbG9zaW5nQ29sdW1uR3Jv
dXAtPmJvcmRlckFkam9pbmluZ0NlbGxTdGFydEJvcmRlcih0aGlzKSwgaW5jbHVkZUNvbG9yID8g
ZW5jbG9zaW5nQ29sdW1uR3JvdXAtPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKHN0YXJ0
Q29sb3JQcm9wZXJ0eSkgOiBPcHRpb25hbFJHQkEoKSwgQkNPTEdST1VQKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgICAgICAgICB9CkBAIC01OTksMTggKzU5OSwxOCBAQCBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVDb2xsYXBzZWRTdGFydEJvcmRlcihJbmNs
dWRlQm9yZGVyQwogICAgICAgICBpZiAoUmVuZGVyVGFibGVDb2wqIGNvbEVsdCA9IHRhYmxlLT5j
b2xFbGVtZW50KGNvbCgpIC0gMSwgJnN0YXJ0Q29sRWRnZSwgJmVuZENvbEVkZ2UpKSB7CiAgICAg
ICAgICAgICBpZiAoY29sRWx0LT5pc1RhYmxlQ29sdW1uR3JvdXAoKSAmJiBlbmRDb2xFZGdlKSB7
CiAgICAgICAgICAgICAgICAgLy8gVGhlIGVsZW1lbnQgaXMgYSBjb2xncm91cCBhbmQgaXMgYWxz
byB0aGUgbGFzdCBjb2xncm91cCAoaW4gY2FzZSBvZiBzcGFubmVkIGNvbGdyb3VwcykuCi0gICAg
ICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKENvbGxhcHNlZEJvcmRlclZhbHVlKGNv
bEVsdC0+Ym9yZGVyQWRqb2luaW5nQ2VsbEFmdGVyKHRoaXMpLCBpbmNsdWRlQ29sb3IgPyBjb2xF
bHQtPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKGVuZENvbG9yUHJvcGVydHkpIDogQ29s
b3IoKSwgQkNPTEdST1VQKSwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjaG9v
c2VCb3JkZXIoQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0LT5ib3JkZXJBZGpvaW5pbmdDZWxs
QWZ0ZXIodGhpcyksIGluY2x1ZGVDb2xvciA/IGNvbEVsdC0+c3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkgOiBPcHRpb25hbFJHQkEoKSwgQkNPTEdST1VQKSwg
cmVzdWx0KTsKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sRWx0
LT5pc1RhYmxlQ29sdW1uKCkpIHsKICAgICAgICAgICAgICAgICAvLyBSZXNvbHZlIHRoZSBjb2xs
YXBzaW5nIGJvcmRlciBhZ2FpbnN0IHRoZSBjb2wncyBib3JkZXIgaWdub3JpbmcgYW55ICdzcGFu
JyBhcyBwZXIgSFRNTDUuCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKENv
bGxhcHNlZEJvcmRlclZhbHVlKGNvbEVsdC0+Ym9yZGVyQWRqb2luaW5nQ2VsbEFmdGVyKHRoaXMp
LCBpbmNsdWRlQ29sb3IgPyBjb2xFbHQtPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKGVu
ZENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQkNPTCksIHJlc3VsdCk7CisgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbEVsdC0+Ym9y
ZGVyQWRqb2luaW5nQ2VsbEFmdGVyKHRoaXMpLCBpbmNsdWRlQ29sb3IgPyBjb2xFbHQtPnN0eWxl
KCkudmlzaXRlZERlcGVuZGVudENvbG9yKGVuZENvbG9yUHJvcGVydHkpIDogT3B0aW9uYWxSR0JB
KCksIEJDT0wpLCByZXN1bHQpOwogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgIC8v
IE5leHQsIGlmIHRoZSBwcmV2aW91cyBjb2wgaGFzIGEgcGFyZW50IGNvbGdyb3VwIHRoZW4gaXRz
IGVuZCBib3JkZXIgc2hvdWxkIGJlIGFwcGxpZWQKICAgICAgICAgICAgICAgICAvLyBidXQgb25s
eSBpZiBpdCBpcyBhZGphY2VudCB0byB0aGUgY2VsbCdzIGVkZ2UuCiAgICAgICAgICAgICAgICAg
aWYgKFJlbmRlclRhYmxlQ29sKiBlbmNsb3NpbmdDb2x1bW5Hcm91cCA9IGNvbEVsdC0+ZW5jbG9z
aW5nQ29sdW1uR3JvdXBJZkFkamFjZW50QWZ0ZXIoKSkgewotICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBjaG9vc2VCb3JkZXIoQ29sbGFwc2VkQm9yZGVyVmFsdWUoZW5jbG9zaW5nQ29sdW1u
R3JvdXAtPmJvcmRlckFkam9pbmluZ0NlbGxFbmRCb3JkZXIodGhpcyksIGluY2x1ZGVDb2xvciA/
IGVuY2xvc2luZ0NvbHVtbkdyb3VwLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihlbmRD
b2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJDT0xHUk9VUCksIHJlc3VsdCk7CisgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihDb2xsYXBzZWRCb3JkZXJWYWx1ZShlbmNs
b3NpbmdDb2x1bW5Hcm91cC0+Ym9yZGVyQWRqb2luaW5nQ2VsbEVuZEJvcmRlcih0aGlzKSwgaW5j
bHVkZUNvbG9yID8gZW5jbG9zaW5nQ29sdW1uR3JvdXAtPnN0eWxlKCkudmlzaXRlZERlcGVuZGVu
dENvbG9yKGVuZENvbG9yUHJvcGVydHkpIDogT3B0aW9uYWxSR0JBKCksIEJDT0xHUk9VUCksIHJl
c3VsdCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICB9CkBAIC02
MjAsNyArNjIwLDcgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb21w
dXRlQ29sbGFwc2VkU3RhcnRCb3JkZXIoSW5jbHVkZUJvcmRlckMKIAogICAgIGlmIChzdGFydEJv
cmRlckFkam9pbnNUYWJsZSkgewogICAgICAgICAvLyAoNykgVGhlIHRhYmxlJ3Mgc3RhcnQgYm9y
ZGVyLgotICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZSh0YWJsZS0+dGFibGVTdGFydEJvcmRlckFkam9pbmluZ0NlbGwodGhpcyksIGluY2x1
ZGVDb2xvciA/IHRhYmxlLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdGFydENvbG9y
UHJvcGVydHkpIDogQ29sb3IoKSwgQlRBQkxFKSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJv
cmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHRhYmxlLT50YWJsZVN0YXJ0Qm9yZGVy
QWRqb2luaW5nQ2VsbCh0aGlzKSwgaW5jbHVkZUNvbG9yID8gdGFibGUtPnN0eWxlKCkudmlzaXRl
ZERlcGVuZGVudENvbG9yKHN0YXJ0Q29sb3JQcm9wZXJ0eSkgOiBPcHRpb25hbFJHQkEoKSwgQlRB
QkxFKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CkBAIC02NTIsNyArNjUyLDcgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUg
UmVuZGVyVGFibGVDZWxsOjpjb21wdXRlQ29sbGFwc2VkRW5kQm9yZGVyKEluY2x1ZGVCb3JkZXJD
b2wKICAgICAvLyAoMSkgT3VyIGVuZCBib3JkZXIuCiAgICAgaW50IHN0YXJ0Q29sb3JQcm9wZXJ0
eSA9IGluY2x1ZGVDb2xvciA/IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3IsIHN0eWxlRm9yQ2VsbEZsb3co
KS5kaXJlY3Rpb24oKSwgc3R5bGVGb3JDZWxsRmxvdygpLndyaXRpbmdNb2RlKCkpIDogMDsKICAg
ICBpbnQgZW5kQ29sb3JQcm9wZXJ0eSA9IGluY2x1ZGVDb2xvciA/IENTU1Byb3BlcnR5OjpyZXNv
bHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9y
LCBzdHlsZUZvckNlbGxGbG93KCkuZGlyZWN0aW9uKCksIHN0eWxlRm9yQ2VsbEZsb3coKS53cml0
aW5nTW9kZSgpKSA6IDA7Ci0gICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcmVzdWx0ID0gQ29sbGFw
c2VkQm9yZGVyVmFsdWUoc3R5bGUoKS5ib3JkZXJFbmQoKSwgaW5jbHVkZUNvbG9yID8gc3R5bGUo
KS52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ0VM
TCk7CisgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcmVzdWx0ID0gQ29sbGFwc2VkQm9yZGVyVmFs
dWUoc3R5bGUoKS5ib3JkZXJFbmQoKSwgaW5jbHVkZUNvbG9yID8gc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkgOiBPcHRpb25hbFJHQkEoKSwgQkNFTEwpOwog
CiAgICAgUmVuZGVyVGFibGUqIHRhYmxlID0gdGhpcy0+dGFibGUoKTsKICAgICBpZiAoIXRhYmxl
KQpAQCAtNjYzLDcgKzY2Myw3IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2Vs
bDo6Y29tcHV0ZUNvbGxhcHNlZEVuZEJvcmRlcihJbmNsdWRlQm9yZGVyQ29sCiAgICAgLy8gKDIp
IFRoZSBzdGFydCBib3JkZXIgb2YgdGhlIGZvbGxvd2luZyBjZWxsLgogICAgIGlmICghaXNFbmRD
b2x1bW4pIHsKICAgICAgICAgaWYgKFJlbmRlclRhYmxlQ2VsbCogY2VsbEFmdGVyID0gdGFibGUt
PmNlbGxBZnRlcih0aGlzKSkgewotICAgICAgICAgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgY2Vs
bEFmdGVyQWRqb2luaW5nQm9yZGVyID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoY2VsbEFmdGVyLT5i
b3JkZXJBZGpvaW5pbmdDZWxsQmVmb3JlKHRoaXMpLCBpbmNsdWRlQ29sb3IgPyBjZWxsQWZ0ZXIt
PnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKHN0YXJ0Q29sb3JQcm9wZXJ0eSkgOiBDb2xv
cigpLCBCQ0VMTCk7CisgICAgICAgICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBjZWxsQWZ0ZXJB
ZGpvaW5pbmdCb3JkZXIgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjZWxsQWZ0ZXItPmJvcmRlckFk
am9pbmluZ0NlbGxCZWZvcmUodGhpcyksIGluY2x1ZGVDb2xvciA/IGNlbGxBZnRlci0+c3R5bGUo
KS52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3RhcnRDb2xvclByb3BlcnR5KSA6IE9wdGlvbmFsUkdC
QSgpLCBCQ0VMTCk7CiAgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBj
ZWxsQWZ0ZXJBZGpvaW5pbmdCb3JkZXIpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3Rz
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTY3MywxMiArNjczLDEyIEBA
IENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZEVu
ZEJvcmRlcihJbmNsdWRlQm9yZGVyQ29sCiAgICAgYm9vbCBlbmRCb3JkZXJBZGpvaW5zVGFibGUg
PSBoYXNFbmRCb3JkZXJBZGpvaW5pbmdUYWJsZSgpOwogICAgIGlmIChlbmRCb3JkZXJBZGpvaW5z
VGFibGUpIHsKICAgICAgICAgLy8gKDMpIE91ciByb3cncyBlbmQgYm9yZGVyLgotICAgICAgICBy
ZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShyb3coKS0+
Ym9yZGVyQWRqb2luaW5nRW5kQ2VsbCh0aGlzKSwgaW5jbHVkZUNvbG9yID8gcGFyZW50KCktPnN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKGVuZENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwg
QlJPVykpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRC
b3JkZXJWYWx1ZShyb3coKS0+Ym9yZGVyQWRqb2luaW5nRW5kQ2VsbCh0aGlzKSwgaW5jbHVkZUNv
bG9yID8gcGFyZW50KCktPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKGVuZENvbG9yUHJv
cGVydHkpIDogT3B0aW9uYWxSR0JBKCksIEJST1cpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhp
c3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAKICAgICAgICAgLy8g
KDQpIE91ciByb3cgZ3JvdXAncyBlbmQgYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjaG9vc2VC
b3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShzZWN0aW9uKCktPmJvcmRlckFkam9p
bmluZ0VuZENlbGwodGhpcyksIGluY2x1ZGVDb2xvciA/IHNlY3Rpb24oKS0+c3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCUk9XR1JPVVAp
KTsKKyAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVy
VmFsdWUoc2VjdGlvbigpLT5ib3JkZXJBZGpvaW5pbmdFbmRDZWxsKHRoaXMpLCBpbmNsdWRlQ29s
b3IgPyBzZWN0aW9uKCktPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKGVuZENvbG9yUHJv
cGVydHkpIDogT3B0aW9uYWxSR0JBKCksIEJST1dHUk9VUCkpOwogICAgICAgICBpZiAoIXJlc3Vs
dC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtNjg5LDE5
ICs2ODksMTkgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb21wdXRl
Q29sbGFwc2VkRW5kQm9yZGVyKEluY2x1ZGVCb3JkZXJDb2wKICAgICBpZiAoUmVuZGVyVGFibGVD
b2wqIGNvbEVsdCA9IHRhYmxlLT5jb2xFbGVtZW50KGNvbCgpICsgY29sU3BhbigpIC0gMSwgJnN0
YXJ0Q29sRWRnZSwgJmVuZENvbEVkZ2UpKSB7CiAgICAgICAgIGlmIChjb2xFbHQtPmlzVGFibGVD
b2x1bW5Hcm91cCgpICYmIGVuZENvbEVkZ2UpIHsKICAgICAgICAgICAgIC8vIFRoZSBlbGVtZW50
IGlzIGEgY29sZ3JvdXAgYW5kIGlzIGFsc28gdGhlIGxhc3QgY29sZ3JvdXAgKGluIGNhc2Ugb2Yg
c3Bhbm5lZCBjb2xncm91cHMpLgotICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJl
c3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0LT5ib3JkZXJBZGpvaW5pbmdDZWxsRW5k
Qm9yZGVyKHRoaXMpLCBpbmNsdWRlQ29sb3IgPyBjb2xFbHQtPnN0eWxlKCkudmlzaXRlZERlcGVu
ZGVudENvbG9yKGVuZENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQkNPTEdST1VQKSk7CisgICAg
ICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1
ZShjb2xFbHQtPmJvcmRlckFkam9pbmluZ0NlbGxFbmRCb3JkZXIodGhpcyksIGluY2x1ZGVDb2xv
ciA/IGNvbEVsdC0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0
eSkgOiBPcHRpb25hbFJHQkEoKSwgQkNPTEdST1VQKSk7CiAgICAgICAgICAgICBpZiAoIXJlc3Vs
dC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9IGVs
c2UgaWYgKCFjb2xFbHQtPmlzVGFibGVDb2x1bW5Hcm91cCgpKSB7CiAgICAgICAgICAgICAvLyBG
aXJzdCBhcHBseSB0aGUgZW5kIGJvcmRlciBvZiB0aGUgY29sdW1uIGlycmVzcGVjdGl2ZSBvZiB3
aGV0aGVyIGl0IGlzIHNwYW5uZWQgb3Igbm90LiBUaGlzIGlzIGFzIHBlcgogICAgICAgICAgICAg
Ly8gSFRNTDUgd2hpY2ggc3RhdGVzIHRoYXQ6ICJGb3IgdGhlIHB1cnBvc2VzIG9mIHRoZSBDU1Mg
dGFibGUgbW9kZWwsIHRoZSBjb2wgZWxlbWVudCBpcyBleHBlY3RlZCB0byBiZQogICAgICAgICAg
ICAgLy8gdHJlYXRlZCBhcyBpZiBpdCB3YXMgcHJlc2VudCBhcyBtYW55IHRpbWVzIGFzIGl0cyBz
cGFuIGF0dHJpYnV0ZSBzcGVjaWZpZXMiLgotICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9y
ZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0LT5ib3JkZXJBZGpvaW5pbmdD
ZWxsRW5kQm9yZGVyKHRoaXMpLCBpbmNsdWRlQ29sb3IgPyBjb2xFbHQtPnN0eWxlKCkudmlzaXRl
ZERlcGVuZGVudENvbG9yKGVuZENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQkNPTCkpOworICAg
ICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFs
dWUoY29sRWx0LT5ib3JkZXJBZGpvaW5pbmdDZWxsRW5kQm9yZGVyKHRoaXMpLCBpbmNsdWRlQ29s
b3IgPyBjb2xFbHQtPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKGVuZENvbG9yUHJvcGVy
dHkpIDogT3B0aW9uYWxSR0JBKCksIEJDT0wpKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4
aXN0cygpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAvLyBO
ZXh0LCBpZiBpdCBoYXMgYSBwYXJlbnQgY29sZ3JvdXAgdGhlbiB3ZSBhcHBseSBpdHMgZW5kIGJv
cmRlciBidXQgb25seSBpZiBpdCBpcyBhZGphY2VudCB0byB0aGUgY2VsbC4KICAgICAgICAgICAg
IGlmIChSZW5kZXJUYWJsZUNvbCogZW5jbG9zaW5nQ29sdW1uR3JvdXAgPSBjb2xFbHQtPmVuY2xv
c2luZ0NvbHVtbkdyb3VwSWZBZGphY2VudEFmdGVyKCkpIHsKLSAgICAgICAgICAgICAgICByZXN1
bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShlbmNsb3NpbmdD
b2x1bW5Hcm91cC0+Ym9yZGVyQWRqb2luaW5nQ2VsbEVuZEJvcmRlcih0aGlzKSwgaW5jbHVkZUNv
bG9yID8gZW5jbG9zaW5nQ29sdW1uR3JvdXAtPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9y
KGVuZENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQkNPTEdST1VQKSk7CisgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoZW5j
bG9zaW5nQ29sdW1uR3JvdXAtPmJvcmRlckFkam9pbmluZ0NlbGxFbmRCb3JkZXIodGhpcyksIGlu
Y2x1ZGVDb2xvciA/IGVuY2xvc2luZ0NvbHVtbkdyb3VwLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihlbmRDb2xvclByb3BlcnR5KSA6IE9wdGlvbmFsUkdCQSgpLCBCQ09MR1JPVVApKTsK
ICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KQEAgLTcxMywxNyArNzEzLDE3IEBAIENv
bGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZEVuZEJv
cmRlcihJbmNsdWRlQm9yZGVyQ29sCiAgICAgICAgIGlmIChSZW5kZXJUYWJsZUNvbCogY29sRWx0
ID0gdGFibGUtPmNvbEVsZW1lbnQoY29sKCkgKyBjb2xTcGFuKCksICZzdGFydENvbEVkZ2UsICZl
bmRDb2xFZGdlKSkgewogICAgICAgICAgICAgaWYgKGNvbEVsdC0+aXNUYWJsZUNvbHVtbkdyb3Vw
KCkgJiYgc3RhcnRDb2xFZGdlKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBjYXNlIGlzIGEg
Y29sZ3JvdXAgd2l0aG91dCBhbnkgY29sLCB3ZSBvbmx5IGNvbXB1dGUgaXQgaWYgaXQgaXMgYWRq
YWNlbnQgdG8gdGhlIGNlbGwncyBlZGdlLgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNob29z
ZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbEVsdC0+Ym9yZGVyQWRqb2lu
aW5nQ2VsbEJlZm9yZSh0aGlzKSwgaW5jbHVkZUNvbG9yID8gY29sRWx0LT5zdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihzdGFydENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQkNPTEdST1VQ
KSk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFw
c2VkQm9yZGVyVmFsdWUoY29sRWx0LT5ib3JkZXJBZGpvaW5pbmdDZWxsQmVmb3JlKHRoaXMpLCBp
bmNsdWRlQ29sb3IgPyBjb2xFbHQtPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKHN0YXJ0
Q29sb3JQcm9wZXJ0eSkgOiBPcHRpb25hbFJHQkEoKSwgQkNPTEdST1VQKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbEVsdC0+aXNUYWJsZUNvbHVtbigpKSB7
CiAgICAgICAgICAgICAgICAgLy8gUmVzb2x2ZSB0aGUgY29sbGFwc2luZyBib3JkZXIgYWdhaW5z
dCB0aGUgY29sJ3MgYm9yZGVyIGlnbm9yaW5nIGFueSAnc3BhbicgYXMgcGVyIEhUTUw1LgotICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRl
clZhbHVlKGNvbEVsdC0+Ym9yZGVyQWRqb2luaW5nQ2VsbEJlZm9yZSh0aGlzKSwgaW5jbHVkZUNv
bG9yID8gY29sRWx0LT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdGFydENvbG9yUHJv
cGVydHkpIDogQ29sb3IoKSwgQkNPTCkpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNob29z
ZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbEVsdC0+Ym9yZGVyQWRqb2lu
aW5nQ2VsbEJlZm9yZSh0aGlzKSwgaW5jbHVkZUNvbG9yID8gY29sRWx0LT5zdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihzdGFydENvbG9yUHJvcGVydHkpIDogT3B0aW9uYWxSR0JBKCksIEJD
T0wpKTsKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGEg
cGFyZW50IGNvbGdyb3VwLCByZXNvbHZlIHRoZSBib3JkZXIgb25seSBpZiBpdCBpcyBhZGphY2Vu
dCB0byB0aGUgY2VsbC4KICAgICAgICAgICAgICAgICBpZiAoUmVuZGVyVGFibGVDb2wqIGVuY2xv
c2luZ0NvbHVtbkdyb3VwID0gY29sRWx0LT5lbmNsb3NpbmdDb2x1bW5Hcm91cElmQWRqYWNlbnRC
ZWZvcmUoKSkgewotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVz
dWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShlbmNsb3NpbmdDb2x1bW5Hcm91cC0+Ym9yZGVyQWRq
b2luaW5nQ2VsbFN0YXJ0Qm9yZGVyKHRoaXMpLCBpbmNsdWRlQ29sb3IgPyBlbmNsb3NpbmdDb2x1
bW5Hcm91cC0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3RhcnRDb2xvclByb3BlcnR5
KSA6IENvbG9yKCksIEJDT0xHUk9VUCkpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBj
aG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShlbmNsb3NpbmdDb2x1bW5H
cm91cC0+Ym9yZGVyQWRqb2luaW5nQ2VsbFN0YXJ0Qm9yZGVyKHRoaXMpLCBpbmNsdWRlQ29sb3Ig
PyBlbmNsb3NpbmdDb2x1bW5Hcm91cC0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3Rh
cnRDb2xvclByb3BlcnR5KSA6IE9wdGlvbmFsUkdCQSgpLCBCQ09MR1JPVVApKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgIH0KQEAgLTczMyw3ICs3MzMsNyBAQCBD
b2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVDb2xsYXBzZWRFbmRC
b3JkZXIoSW5jbHVkZUJvcmRlckNvbAogCiAgICAgaWYgKGVuZEJvcmRlckFkam9pbnNUYWJsZSkg
ewogICAgICAgICAvLyAoNykgVGhlIHRhYmxlJ3MgZW5kIGJvcmRlci4KLSAgICAgICAgcmVzdWx0
ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUodGFibGUtPnRhYmxl
RW5kQm9yZGVyQWRqb2luaW5nQ2VsbCh0aGlzKSwgaW5jbHVkZUNvbG9yID8gdGFibGUtPnN0eWxl
KCkudmlzaXRlZERlcGVuZGVudENvbG9yKGVuZENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQlRB
QkxFKSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJv
cmRlclZhbHVlKHRhYmxlLT50YWJsZUVuZEJvcmRlckFkam9pbmluZ0NlbGwodGhpcyksIGluY2x1
ZGVDb2xvciA/IHRhYmxlLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihlbmRDb2xvclBy
b3BlcnR5KSA6IE9wdGlvbmFsUkdCQSgpLCBCVEFCTEUpKTsKICAgICAgICAgaWYgKCFyZXN1bHQu
ZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTc2NSw3ICs3
NjUsNyBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVDb2xs
YXBzZWRCZWZvcmVCb3JkZXIoSW5jbHVkZUJvcmRlcgogICAgIC8vICgxKSBPdXIgYmVmb3JlIGJv
cmRlci4KICAgICBpbnQgYmVmb3JlQ29sb3JQcm9wZXJ0eSA9IGluY2x1ZGVDb2xvciA/IENTU1By
b3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckJlZm9yZUNvbG9yLCBzdHlsZUZvckNlbGxGbG93KCkuZGlyZWN0aW9uKCksIHN0eWxlRm9y
Q2VsbEZsb3coKS53cml0aW5nTW9kZSgpKSA6IDA7CiAgICAgaW50IGFmdGVyQ29sb3JQcm9wZXJ0
eSA9IGluY2x1ZGVDb2xvciA/IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3IsIHN0eWxlRm9yQ2VsbEZsb3co
KS5kaXJlY3Rpb24oKSwgc3R5bGVGb3JDZWxsRmxvdygpLndyaXRpbmdNb2RlKCkpIDogMDsKLSAg
ICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSByZXN1bHQgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZShzdHls
ZSgpLmJvcmRlckJlZm9yZSgpLCBpbmNsdWRlQ29sb3IgPyBzdHlsZSgpLnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihiZWZvcmVDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJDRUxMKTsKKyAgICBDb2xs
YXBzZWRCb3JkZXJWYWx1ZSByZXN1bHQgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZShzdHlsZSgpLmJv
cmRlckJlZm9yZSgpLCBpbmNsdWRlQ29sb3IgPyBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihiZWZvcmVDb2xvclByb3BlcnR5KSA6IE9wdGlvbmFsUkdCQSgpLCBCQ0VMTCk7CiAgICAgCiAg
ICAgUmVuZGVyVGFibGUqIHRhYmxlID0gdGhpcy0+dGFibGUoKTsKICAgICBpZiAoIXRhYmxlKQpA
QCAtNzczLDEzICs3NzMsMTMgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxs
Ojpjb21wdXRlQ29sbGFwc2VkQmVmb3JlQm9yZGVyKEluY2x1ZGVCb3JkZXIKICAgICBSZW5kZXJU
YWJsZUNlbGwqIHByZXZDZWxsID0gdGFibGUtPmNlbGxBYm92ZSh0aGlzKTsKICAgICBpZiAocHJl
dkNlbGwpIHsKICAgICAgICAgLy8gKDIpIEEgYmVmb3JlIGNlbGwncyBhZnRlciBib3JkZXIuCi0g
ICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihDb2xsYXBzZWRCb3JkZXJWYWx1ZShwcmV2Q2Vs
bC0+c3R5bGUoKS5ib3JkZXJBZnRlcigpLCBpbmNsdWRlQ29sb3IgPyBwcmV2Q2VsbC0+c3R5bGUo
KS52aXNpdGVkRGVwZW5kZW50Q29sb3IoYWZ0ZXJDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJD
RUxMKSwgcmVzdWx0KTsKKyAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKENvbGxhcHNlZEJv
cmRlclZhbHVlKHByZXZDZWxsLT5zdHlsZSgpLmJvcmRlckFmdGVyKCksIGluY2x1ZGVDb2xvciA/
IHByZXZDZWxsLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihhZnRlckNvbG9yUHJvcGVy
dHkpIDogT3B0aW9uYWxSR0JBKCksIEJDRUxMKSwgcmVzdWx0KTsKICAgICAgICAgaWYgKCFyZXN1
bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAg
ICAvLyAoMykgT3VyIHJvdydzIGJlZm9yZSBib3JkZXIuCi0gICAgcmVzdWx0ID0gY2hvb3NlQm9y
ZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUocGFyZW50KCktPnN0eWxlKCkuYm9yZGVy
QmVmb3JlKCksIGluY2x1ZGVDb2xvciA/IHBhcmVudCgpLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihiZWZvcmVDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJST1cpKTsKKyAgICByZXN1
bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShwYXJlbnQoKS0+
c3R5bGUoKS5ib3JkZXJCZWZvcmUoKSwgaW5jbHVkZUNvbG9yID8gcGFyZW50KCktPnN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yKGJlZm9yZUNvbG9yUHJvcGVydHkpIDogT3B0aW9uYWxSR0JB
KCksIEJST1cpKTsKICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICAKQEAgLTc5Miw3ICs3OTIsNyBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5k
ZXJUYWJsZUNlbGw6OmNvbXB1dGVDb2xsYXBzZWRCZWZvcmVCb3JkZXIoSW5jbHVkZUJvcmRlcgog
ICAgICAgICAgICAgcHJldlJvdyA9IHByZXZDZWxsLT5zZWN0aW9uKCktPmxhc3RSb3coKTsKICAg
ICAKICAgICAgICAgaWYgKHByZXZSb3cpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNob29zZUJv
cmRlcihDb2xsYXBzZWRCb3JkZXJWYWx1ZShwcmV2Um93LT5zdHlsZSgpLmJvcmRlckFmdGVyKCks
IGluY2x1ZGVDb2xvciA/IHByZXZSb3ctPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKGFm
dGVyQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCUk9XKSwgcmVzdWx0KTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IGNob29zZUJvcmRlcihDb2xsYXBzZWRCb3JkZXJWYWx1ZShwcmV2Um93LT5zdHls
ZSgpLmJvcmRlckFmdGVyKCksIGluY2x1ZGVDb2xvciA/IHByZXZSb3ctPnN0eWxlKCkudmlzaXRl
ZERlcGVuZGVudENvbG9yKGFmdGVyQ29sb3JQcm9wZXJ0eSkgOiBPcHRpb25hbFJHQkEoKSwgQlJP
VyksIHJlc3VsdCk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CkBAIC04MDIsMTQgKzgwMiwxNCBAQCBD
b2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVDb2xsYXBzZWRCZWZv
cmVCb3JkZXIoSW5jbHVkZUJvcmRlcgogICAgIFJlbmRlclRhYmxlU2VjdGlvbiogY3VyclNlY3Rp
b24gPSBzZWN0aW9uKCk7CiAgICAgaWYgKCFyb3dJbmRleCgpKSB7CiAgICAgICAgIC8vICg1KSBP
dXIgcm93IGdyb3VwJ3MgYmVmb3JlIGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9y
ZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoY3VyclNlY3Rpb24tPnN0eWxlKCkuYm9y
ZGVyQmVmb3JlKCksIGluY2x1ZGVDb2xvciA/IGN1cnJTZWN0aW9uLT5zdHlsZSgpLnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihiZWZvcmVDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJST1dHUk9VUCkp
OworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJW
YWx1ZShjdXJyU2VjdGlvbi0+c3R5bGUoKS5ib3JkZXJCZWZvcmUoKSwgaW5jbHVkZUNvbG9yID8g
Y3VyclNlY3Rpb24tPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKGJlZm9yZUNvbG9yUHJv
cGVydHkpIDogT3B0aW9uYWxSR0JBKCksIEJST1dHUk9VUCkpOwogICAgICAgICBpZiAoIXJlc3Vs
dC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIAogICAgICAg
ICAvLyAoNikgUHJldmlvdXMgcm93IGdyb3VwJ3MgYWZ0ZXIgYm9yZGVyLgogICAgICAgICBjdXJy
U2VjdGlvbiA9IHRhYmxlLT5zZWN0aW9uQWJvdmUoY3VyclNlY3Rpb24sIFNraXBFbXB0eVNlY3Rp
b25zKTsKICAgICAgICAgaWYgKGN1cnJTZWN0aW9uKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBj
aG9vc2VCb3JkZXIoQ29sbGFwc2VkQm9yZGVyVmFsdWUoY3VyclNlY3Rpb24tPnN0eWxlKCkuYm9y
ZGVyQWZ0ZXIoKSwgaW5jbHVkZUNvbG9yID8gY3VyclNlY3Rpb24tPnN0eWxlKCkudmlzaXRlZERl
cGVuZGVudENvbG9yKGFmdGVyQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCUk9XR1JPVVApLCBy
ZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKENvbGxhcHNlZEJvcmRl
clZhbHVlKGN1cnJTZWN0aW9uLT5zdHlsZSgpLmJvcmRlckFmdGVyKCksIGluY2x1ZGVDb2xvciA/
IGN1cnJTZWN0aW9uLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihhZnRlckNvbG9yUHJv
cGVydHkpIDogT3B0aW9uYWxSR0JBKCksIEJST1dHUk9VUCksIHJlc3VsdCk7CiAgICAgICAgICAg
ICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgICAgICB9CkBAIC04MTksMTggKzgxOSwxOCBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5k
ZXJUYWJsZUNlbGw6OmNvbXB1dGVDb2xsYXBzZWRCZWZvcmVCb3JkZXIoSW5jbHVkZUJvcmRlcgog
ICAgICAgICAvLyAoOCkgT3VyIGNvbHVtbiBhbmQgY29sdW1uIGdyb3VwJ3MgYmVmb3JlIGJvcmRl
cnMuCiAgICAgICAgIFJlbmRlclRhYmxlQ29sKiBjb2xFbHQgPSB0YWJsZS0+Y29sRWxlbWVudChj
b2woKSk7CiAgICAgICAgIGlmIChjb2xFbHQpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNob29z
ZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbEVsdC0+c3R5bGUoKS5ib3Jk
ZXJCZWZvcmUoKSwgaW5jbHVkZUNvbG9yID8gY29sRWx0LT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihiZWZvcmVDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJDT0wpKTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGNv
bEVsdC0+c3R5bGUoKS5ib3JkZXJCZWZvcmUoKSwgaW5jbHVkZUNvbG9yID8gY29sRWx0LT5zdHls
ZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihiZWZvcmVDb2xvclByb3BlcnR5KSA6IE9wdGlvbmFs
UkdCQSgpLCBCQ09MKSk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgaWYgKFJlbmRlclRhYmxlQ29s
KiBlbmNsb3NpbmdDb2x1bW5Hcm91cCA9IGNvbEVsdC0+ZW5jbG9zaW5nQ29sdW1uR3JvdXAoKSkg
ewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNl
ZEJvcmRlclZhbHVlKGVuY2xvc2luZ0NvbHVtbkdyb3VwLT5zdHlsZSgpLmJvcmRlckJlZm9yZSgp
LCBpbmNsdWRlQ29sb3IgPyBlbmNsb3NpbmdDb2x1bW5Hcm91cC0+c3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoYmVmb3JlQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ09MR1JPVVApKTsK
KyAgICAgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRC
b3JkZXJWYWx1ZShlbmNsb3NpbmdDb2x1bW5Hcm91cC0+c3R5bGUoKS5ib3JkZXJCZWZvcmUoKSwg
aW5jbHVkZUNvbG9yID8gZW5jbG9zaW5nQ29sdW1uR3JvdXAtPnN0eWxlKCkudmlzaXRlZERlcGVu
ZGVudENvbG9yKGJlZm9yZUNvbG9yUHJvcGVydHkpIDogT3B0aW9uYWxSR0JBKCksIEJDT0xHUk9V
UCkpOwogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICAvLyAoOSkgVGhlIHRhYmxlJ3MgYmVmb3JlIGJvcmRlci4KLSAgICAgICAgcmVz
dWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUodGFibGUtPnN0
eWxlKCkuYm9yZGVyQmVmb3JlKCksIGluY2x1ZGVDb2xvciA/IHRhYmxlLT5zdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihiZWZvcmVDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJUQUJMRSkp
OworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJW
YWx1ZSh0YWJsZS0+c3R5bGUoKS5ib3JkZXJCZWZvcmUoKSwgaW5jbHVkZUNvbG9yID8gdGFibGUt
PnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKGJlZm9yZUNvbG9yUHJvcGVydHkpIDogT3B0
aW9uYWxSR0JBKCksIEJUQUJMRSkpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtODYyLDcgKzg2Miw3IEBAIENvbGxh
cHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZEFmdGVyQm9y
ZGVyKEluY2x1ZGVCb3JkZXJDCiAgICAgLy8gKDEpIE91ciBhZnRlciBib3JkZXIuCiAgICAgaW50
IGJlZm9yZUNvbG9yUHJvcGVydHkgPSBpbmNsdWRlQ29sb3IgPyBDU1NQcm9wZXJ0eTo6cmVzb2x2
ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xv
ciwgc3R5bGVGb3JDZWxsRmxvdygpLmRpcmVjdGlvbigpLCBzdHlsZUZvckNlbGxGbG93KCkud3Jp
dGluZ01vZGUoKSkgOiAwOwogICAgIGludCBhZnRlckNvbG9yUHJvcGVydHkgPSBpbmNsdWRlQ29s
b3IgPyBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJBZnRlckNvbG9yLCBzdHlsZUZvckNlbGxGbG93KCkuZGlyZWN0aW9uKCks
IHN0eWxlRm9yQ2VsbEZsb3coKS53cml0aW5nTW9kZSgpKSA6IDA7Ci0gICAgQ29sbGFwc2VkQm9y
ZGVyVmFsdWUgcmVzdWx0ID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoc3R5bGUoKS5ib3JkZXJBZnRl
cigpLCBpbmNsdWRlQ29sb3IgPyBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihhZnRlckNv
bG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQkNFTEwpOworICAgIENvbGxhcHNlZEJvcmRlclZhbHVl
IHJlc3VsdCA9IENvbGxhcHNlZEJvcmRlclZhbHVlKHN0eWxlKCkuYm9yZGVyQWZ0ZXIoKSwgaW5j
bHVkZUNvbG9yID8gc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoYWZ0ZXJDb2xvclByb3Bl
cnR5KSA6IE9wdGlvbmFsUkdCQSgpLCBCQ0VMTCk7CiAgICAgCiAgICAgUmVuZGVyVGFibGUqIHRh
YmxlID0gdGhpcy0+dGFibGUoKTsKICAgICBpZiAoIXRhYmxlKQpAQCAtODcwLDE5ICs4NzAsMTkg
QEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb21wdXRlQ29sbGFwc2Vk
QWZ0ZXJCb3JkZXIoSW5jbHVkZUJvcmRlckMKICAgICBSZW5kZXJUYWJsZUNlbGwqIG5leHRDZWxs
ID0gdGFibGUtPmNlbGxCZWxvdyh0aGlzKTsKICAgICBpZiAobmV4dENlbGwpIHsKICAgICAgICAg
Ly8gKDIpIEFuIGFmdGVyIGNlbGwncyBiZWZvcmUgYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBj
aG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShuZXh0Q2VsbC0+c3R5bGUo
KS5ib3JkZXJCZWZvcmUoKSwgaW5jbHVkZUNvbG9yID8gbmV4dENlbGwtPnN0eWxlKCkudmlzaXRl
ZERlcGVuZGVudENvbG9yKGJlZm9yZUNvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQkNFTEwpKTsK
KyAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFs
dWUobmV4dENlbGwtPnN0eWxlKCkuYm9yZGVyQmVmb3JlKCksIGluY2x1ZGVDb2xvciA/IG5leHRD
ZWxsLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihiZWZvcmVDb2xvclByb3BlcnR5KSA6
IE9wdGlvbmFsUkdCQSgpLCBCQ0VMTCkpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAogICAgIC8vICgzKSBPdXIg
cm93J3MgYWZ0ZXIgYm9yZGVyLiAoRklYTUU6IERlYWwgd2l0aCByb3dzcGFuISkKLSAgICByZXN1
bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShwYXJlbnQoKS0+
c3R5bGUoKS5ib3JkZXJBZnRlcigpLCBpbmNsdWRlQ29sb3IgPyBwYXJlbnQoKS0+c3R5bGUoKS52
aXNpdGVkRGVwZW5kZW50Q29sb3IoYWZ0ZXJDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJST1cp
KTsKKyAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1
ZShwYXJlbnQoKS0+c3R5bGUoKS5ib3JkZXJBZnRlcigpLCBpbmNsdWRlQ29sb3IgPyBwYXJlbnQo
KS0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoYWZ0ZXJDb2xvclByb3BlcnR5KSA6IE9w
dGlvbmFsUkdCQSgpLCBCUk9XKSk7CiAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgCiAgICAgLy8gKDQpIFRoZSBuZXh0IHJvdydzIGJlZm9yZSBi
b3JkZXIuCiAgICAgaWYgKG5leHRDZWxsKSB7Ci0gICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRl
cihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKG5leHRDZWxsLT5wYXJlbnQoKS0+c3R5bGUo
KS5ib3JkZXJCZWZvcmUoKSwgaW5jbHVkZUNvbG9yID8gbmV4dENlbGwtPnBhcmVudCgpLT5zdHls
ZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihiZWZvcmVDb2xvclByb3BlcnR5KSA6IENvbG9yKCks
IEJST1cpKTsKKyAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUobmV4dENlbGwtPnBhcmVudCgpLT5zdHlsZSgpLmJvcmRlckJlZm9yZSgpLCBp
bmNsdWRlQ29sb3IgPyBuZXh0Q2VsbC0+cGFyZW50KCktPnN0eWxlKCkudmlzaXRlZERlcGVuZGVu
dENvbG9yKGJlZm9yZUNvbG9yUHJvcGVydHkpIDogT3B0aW9uYWxSR0JBKCksIEJST1cpKTsKICAg
ICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KQEAgLTg5MSwxNCArODkxLDE0IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRh
YmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZEFmdGVyQm9yZGVyKEluY2x1ZGVCb3JkZXJDCiAgICAg
UmVuZGVyVGFibGVTZWN0aW9uKiBjdXJyU2VjdGlvbiA9IHNlY3Rpb24oKTsKICAgICBpZiAocm93
SW5kZXgoKSArIHJvd1NwYW4oKSA+PSBjdXJyU2VjdGlvbi0+bnVtUm93cygpKSB7CiAgICAgICAg
IC8vICg1KSBPdXIgcm93IGdyb3VwJ3MgYWZ0ZXIgYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBj
aG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjdXJyU2VjdGlvbi0+c3R5
bGUoKS5ib3JkZXJBZnRlcigpLCBpbmNsdWRlQ29sb3IgPyBjdXJyU2VjdGlvbi0+c3R5bGUoKS52
aXNpdGVkRGVwZW5kZW50Q29sb3IoYWZ0ZXJDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJST1dH
Uk9VUCkpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRC
b3JkZXJWYWx1ZShjdXJyU2VjdGlvbi0+c3R5bGUoKS5ib3JkZXJBZnRlcigpLCBpbmNsdWRlQ29s
b3IgPyBjdXJyU2VjdGlvbi0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoYWZ0ZXJDb2xv
clByb3BlcnR5KSA6IE9wdGlvbmFsUkdCQSgpLCBCUk9XR1JPVVApKTsKICAgICAgICAgaWYgKCFy
ZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAKICAg
ICAgICAgLy8gKDYpIEZvbGxvd2luZyByb3cgZ3JvdXAncyBiZWZvcmUgYm9yZGVyLgogICAgICAg
ICBjdXJyU2VjdGlvbiA9IHRhYmxlLT5zZWN0aW9uQmVsb3coY3VyclNlY3Rpb24sIFNraXBFbXB0
eVNlY3Rpb25zKTsKICAgICAgICAgaWYgKGN1cnJTZWN0aW9uKSB7Ci0gICAgICAgICAgICByZXN1
bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjdXJyU2VjdGlv
bi0+c3R5bGUoKS5ib3JkZXJCZWZvcmUoKSwgaW5jbHVkZUNvbG9yID8gY3VyclNlY3Rpb24tPnN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKGJlZm9yZUNvbG9yUHJvcGVydHkpIDogQ29sb3Io
KSwgQlJPV0dST1VQKSk7CisgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0
LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjdXJyU2VjdGlvbi0+c3R5bGUoKS5ib3JkZXJCZWZvcmUo
KSwgaW5jbHVkZUNvbG9yID8gY3VyclNlY3Rpb24tPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENv
bG9yKGJlZm9yZUNvbG9yUHJvcGVydHkpIDogT3B0aW9uYWxSR0JBKCksIEJST1dHUk9VUCkpOwog
ICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgfQpAQCAtOTA4LDE3ICs5MDgsMTcgQEAgQ29sbGFwc2VkQm9yZGVy
VmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb21wdXRlQ29sbGFwc2VkQWZ0ZXJCb3JkZXIoSW5jbHVk
ZUJvcmRlckMKICAgICAgICAgLy8gKDgpIE91ciBjb2x1bW4gYW5kIGNvbHVtbiBncm91cCdzIGFm
dGVyIGJvcmRlcnMuCiAgICAgICAgIFJlbmRlclRhYmxlQ29sKiBjb2xFbHQgPSB0YWJsZS0+Y29s
RWxlbWVudChjb2woKSk7CiAgICAgICAgIGlmIChjb2xFbHQpIHsKLSAgICAgICAgICAgIHJlc3Vs
dCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbEVsdC0+c3R5
bGUoKS5ib3JkZXJBZnRlcigpLCBpbmNsdWRlQ29sb3IgPyBjb2xFbHQtPnN0eWxlKCkudmlzaXRl
ZERlcGVuZGVudENvbG9yKGFmdGVyQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ09MKSk7Cisg
ICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJW
YWx1ZShjb2xFbHQtPnN0eWxlKCkuYm9yZGVyQWZ0ZXIoKSwgaW5jbHVkZUNvbG9yID8gY29sRWx0
LT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihhZnRlckNvbG9yUHJvcGVydHkpIDogT3B0
aW9uYWxSR0JBKCksIEJDT0wpKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKSBy
ZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgaWYgKFJlbmRlclRhYmxlQ29sKiBlbmNsb3NpbmdD
b2x1bW5Hcm91cCA9IGNvbEVsdC0+ZW5jbG9zaW5nQ29sdW1uR3JvdXAoKSkgewotICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVl
KGVuY2xvc2luZ0NvbHVtbkdyb3VwLT5zdHlsZSgpLmJvcmRlckFmdGVyKCksIGluY2x1ZGVDb2xv
ciA/IGVuY2xvc2luZ0NvbHVtbkdyb3VwLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihh
ZnRlckNvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQkNPTEdST1VQKSk7CisgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoZW5j
bG9zaW5nQ29sdW1uR3JvdXAtPnN0eWxlKCkuYm9yZGVyQWZ0ZXIoKSwgaW5jbHVkZUNvbG9yID8g
ZW5jbG9zaW5nQ29sdW1uR3JvdXAtPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKGFmdGVy
Q29sb3JQcm9wZXJ0eSkgOiBPcHRpb25hbFJHQkEoKSwgQkNPTEdST1VQKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vICg5
KSBUaGUgdGFibGUncyBhZnRlciBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRl
cihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHRhYmxlLT5zdHlsZSgpLmJvcmRlckFmdGVy
KCksIGluY2x1ZGVDb2xvciA/IHRhYmxlLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihh
ZnRlckNvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQlRBQkxFKSk7CisgICAgICAgIHJlc3VsdCA9
IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHRhYmxlLT5zdHlsZSgp
LmJvcmRlckFmdGVyKCksIGluY2x1ZGVDb2xvciA/IHRhYmxlLT5zdHlsZSgpLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihhZnRlckNvbG9yUHJvcGVydHkpIDogT3B0aW9uYWxSR0JBKCksIEJUQUJMRSkp
OwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQpAQCAtMTI2OCw3ICsxMjY4LDcgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBh
aW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXkK
ICAgICBpZiAoYmFja2dyb3VuZE9iamVjdCAhPSB0aGlzKQogICAgICAgICBhZGp1c3RlZFBhaW50
T2Zmc2V0Lm1vdmVCeShsb2NhdGlvbigpKTsKIAotICAgIENvbG9yIGMgPSBiYWNrZ3JvdW5kT2Jq
ZWN0LT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvcik7CisgICAgT3B0aW9uYWxSR0JBIGMgPSBiYWNrZ3JvdW5kT2JqZWN0LT5zdHlsZSgpLnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgY29u
c3QgRmlsbExheWVyKiBiZ0xheWVyID0gYmFja2dyb3VuZE9iamVjdC0+c3R5bGUoKS5iYWNrZ3Jv
dW5kTGF5ZXJzKCk7CiAKICAgICBpZiAoYmdMYXllci0+aGFzSW1hZ2UoKSB8fCBjLmlzVmFsaWQo
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2Vj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNw
cAppbmRleCA0YjE3MTRhNGIzMGFkZTEyZWQwMjUzZjk4ZWI0MzVlODZlN2E4NTYxLi5mMTY3OWJk
ODczM2JhZWQyNDQ1ZDI3NGQzYWM2ZGI0NDIwODA4MmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApAQCAtMTU3Nyw3ICsxNTc3LDcgQEAg
Q29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVTZWN0aW9uOjpjYWNoZWRDb2xsYXBzZWRC
b3JkZXIoY29uc3QgUmVuZGVyVGFibGUKICAgICBhdXRvIGl0ID0gbV9jZWxsc0NvbGxhcHNlZEJv
cmRlcnMuZmluZChzdGQ6Om1ha2VfcGFpcigmY2VsbCwgc2lkZSkpOwogICAgIC8vIE9ubHkgbm9u
LWVtcHR5IGNvbGxhcHNlZCBib3JkZXJzIGFyZSBpbiB0aGUgaGFzaG1hcC4KICAgICBpZiAoaXQg
PT0gbV9jZWxsc0NvbGxhcHNlZEJvcmRlcnMuZW5kKCkpCi0gICAgICAgIHJldHVybiBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZShCb3JkZXJWYWx1ZSgpLCBDb2xvcigpLCBCQ0VMTCk7CisgICAgICAgIHJl
dHVybiBDb2xsYXBzZWRCb3JkZXJWYWx1ZShCb3JkZXJWYWx1ZSgpLCBPcHRpb25hbFJHQkEoKSwg
QkNFTEwpOwogICAgIHJldHVybiBpdC0+dmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5oCmluZGV4IDcwYmZlZWQwZTY1Zjg5YWYzMmRiMDQzYjdmYzAxMmMwZWMxMzUy
YzIuLjgwNDljMzJkMzVmYzkxMGRlMGMwNThhZDZkZmI1ODM3ZmY2YzZhODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAtNTEsOSArNTEsOSBAQCBwdWJsaWM6CiAgICAg
UmVuZGVyU3R5bGUmIGZpcnN0TGluZVN0eWxlKCkgY29uc3Q7CiAgICAgUmVuZGVyU3R5bGUqIGdl
dENhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb0lkLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBu
dWxscHRyKSBjb25zdDsKIAotICAgIENvbG9yIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNv
bnN0OwotICAgIENvbG9yIHNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0OwotICAgIENv
bG9yIHNlbGVjdGlvbkVtcGhhc2lzTWFya0NvbG9yKCkgY29uc3Q7CisgICAgT3B0aW9uYWxSR0JB
IHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0OworICAgIE9wdGlvbmFsUkdCQSBzZWxl
Y3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICBPcHRpb25hbFJHQkEgc2VsZWN0aW9u
RW1waGFzaXNNYXJrQ29sb3IoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIG9yaWdpbmFs
VGV4dCgpIGNvbnN0OwogCkBAIC0yNTksMTcgKzI1OSwxNyBAQCBpbmxpbmUgUmVuZGVyU3R5bGUq
IFJlbmRlclRleHQ6OmdldENhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb0lkIHBzZXVkb0lkLCBSZW5k
ZXJTdAogICAgIHJldHVybiBwYXJlbnQoKS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvSWQs
IHBhcmVudFN0eWxlKTsKIH0KIAotaW5saW5lIENvbG9yIFJlbmRlclRleHQ6OnNlbGVjdGlvbkJh
Y2tncm91bmRDb2xvcigpIGNvbnN0CitpbmxpbmUgT3B0aW9uYWxSR0JBIFJlbmRlclRleHQ6OnNl
bGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBhcmVudCgpLT5z
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKIH0KIAotaW5saW5lIENvbG9yIFJlbmRlclRleHQ6
OnNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CitpbmxpbmUgT3B0aW9uYWxSR0JBIFJl
bmRlclRleHQ6OnNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHBhcmVudCgpLT5zZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKTsKIH0KIAotaW5saW5lIENvbG9y
IFJlbmRlclRleHQ6OnNlbGVjdGlvbkVtcGhhc2lzTWFya0NvbG9yKCkgY29uc3QKK2lubGluZSBP
cHRpb25hbFJHQkEgUmVuZGVyVGV4dDo6c2VsZWN0aW9uRW1waGFzaXNNYXJrQ29sb3IoKSBjb25z
dAogewogICAgIHJldHVybiBwYXJlbnQoKS0+c2VsZWN0aW9uRW1waGFzaXNNYXJrQ29sb3IoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDRlNWE3NDEy
YjI0MTk4MjQwYmVkZTNkMGU2NTRhYzQ0ZmUzYjdjNDUuLmE3ZTg2OTJhMGE3NWMxNWRhYmNkYjAx
NzE5ZTM0YjAxMmM2YWY0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmNwcApAQCAtNjYsOSArNjYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBDb2xvciYgY3VzdG9tRm9jdXNSaW5nQ29sb3IoKQor
c3RhdGljIE9wdGlvbmFsUkdCQSYgY3VzdG9tRm9jdXNSaW5nQ29sb3IoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgY29sb3IsICgpKTsKKyAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoT3B0aW9uYWxSR0JBLCBjb2xvciwgKCkpOwogICAgIHJl
dHVybiBjb2xvcjsKIH0KIApAQCAtNzksNyArNzksNyBAQCBSZW5kZXJUaGVtZTo6UmVuZGVyVGhl
bWUoKQogewogfQogCi12b2lkIFJlbmRlclRoZW1lOjphZGp1c3RTdHlsZShTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSYgc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQsIGJv
b2wgVUFIYXNBcHBlYXJhbmNlLCBjb25zdCBCb3JkZXJEYXRhJiBib3JkZXIsIGNvbnN0IEZpbGxM
YXllciYgYmFja2dyb3VuZCwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikKK3ZvaWQgUmVu
ZGVyVGhlbWU6OmFkanVzdFN0eWxlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIFJlbmRl
clN0eWxlJiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCwgYm9vbCBVQUhhc0FwcGVhcmFuY2UsIGNv
bnN0IEJvcmRlckRhdGEmIGJvcmRlciwgY29uc3QgRmlsbExheWVyJiBiYWNrZ3JvdW5kLCBjb25z
dCBPcHRpb25hbFJHQkEmIGJhY2tncm91bmRDb2xvcikKIHsKICAgICAvLyBGb3JjZSBpbmxpbmUg
YW5kIHRhYmxlIGRpc3BsYXkgc3R5bGVzIHRvIGJlIGlubGluZS1ibG9jayAoZXhjZXB0IGZvciB0
YWJsZS0gd2hpY2ggaXMgYmxvY2spCiAgICAgQ29udHJvbFBhcnQgcGFydCA9IHN0eWxlLmFwcGVh
cmFuY2UoKTsKQEAgLTU2MywxMDMgKzU2MywxMDMgQEAgSW50UG9pbnQgUmVuZGVyVGhlbWU6OnZv
bHVtZVNsaWRlck9mZnNldEZyb21NdXRlQnV0dG9uKGNvbnN0IFJlbmRlckJveCYgbXV0ZUJ1dHQK
IAogI2VuZGlmCiAKLUNvbG9yIFJlbmRlclRoZW1lOjphY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlclRoZW1lOjphY3RpdmVTZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogewogICAgIGlmICghbV9hY3RpdmVTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IuaXNWYWxpZCgpKQogICAgICAgICBtX2FjdGl2ZVNlbGVjdGlvbkJhY2tncm91
bmRDb2xvciA9IHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkuYmxlbmRX
aXRoV2hpdGUoKTsKICAgICByZXR1cm4gbV9hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3I7
CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lOjppbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xv
cigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWU6OmluYWN0aXZlU2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW5hY3RpdmVTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IuaXNWYWxpZCgpKQogICAgICAgICBtX2luYWN0aXZlU2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yID0gcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLmJs
ZW5kV2l0aFdoaXRlKCk7CiAgICAgcmV0dXJuIG1faW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3I7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lOjphY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5k
Q29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlclRoZW1lOjphY3RpdmVTZWxlY3Rpb25G
b3JlZ3JvdW5kQ29sb3IoKSBjb25zdAogewogICAgIGlmICghbV9hY3RpdmVTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3IuaXNWYWxpZCgpICYmIHN1cHBvcnRzU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9y
cygpKQogICAgICAgICBtX2FjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvciA9IHBsYXRmb3Jt
QWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7CiAgICAgcmV0dXJuIG1fYWN0aXZlU2Vs
ZWN0aW9uRm9yZWdyb3VuZENvbG9yOwogfQogCi1Db2xvciBSZW5kZXJUaGVtZTo6aW5hY3RpdmVT
ZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlclRoZW1l
OjppbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2luYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yLmlzVmFsaWQoKSAmJiBzdXBwb3J0c1Nl
bGVjdGlvbkZvcmVncm91bmRDb2xvcnMoKSkKICAgICAgICAgbV9pbmFjdGl2ZVNlbGVjdGlvbkZv
cmVncm91bmRDb2xvciA9IHBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3Io
KTsKICAgICByZXR1cm4gbV9pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcjsKIH0KIAot
Q29sb3IgUmVuZGVyVGhlbWU6OmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Io
KSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlclRoZW1lOjphY3RpdmVMaXN0Qm94U2VsZWN0aW9u
QmFja2dyb3VuZENvbG9yKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYWN0aXZlTGlzdEJveFNlbGVj
dGlvbkJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIG1fYWN0aXZlTGlzdEJveFNl
bGVjdGlvbkJhY2tncm91bmRDb2xvciA9IHBsYXRmb3JtQWN0aXZlTGlzdEJveFNlbGVjdGlvbkJh
Y2tncm91bmRDb2xvcigpOwogICAgIHJldHVybiBtX2FjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3I7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lOjppbmFjdGl2ZUxpc3RCb3hTZWxl
Y3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlclRoZW1lOjpp
bmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogewogICAgIGlm
ICghbV9pbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQog
ICAgICAgICBtX2luYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9IHBsYXRm
b3JtSW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7CiAgICAgcmV0dXJu
IG1faW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yOwogfQogCi1Db2xvciBS
ZW5kZXJUaGVtZTo6YWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0
CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWU6OmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3Jv
dW5kQ29sb3IoKSBjb25zdAogewogICAgIGlmICghbV9hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9y
ZWdyb3VuZENvbG9yLmlzVmFsaWQoKSAmJiBzdXBwb3J0c0xpc3RCb3hTZWxlY3Rpb25Gb3JlZ3Jv
dW5kQ29sb3JzKCkpCiAgICAgICAgIG1fYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRD
b2xvciA9IHBsYXRmb3JtQWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpOwog
ICAgIHJldHVybiBtX2FjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7CiB9CiAK
LUNvbG9yIFJlbmRlclRoZW1lOjppbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29s
b3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlclRoZW1lOjppbmFjdGl2ZUxpc3RCb3hTZWxl
Y3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAogewogICAgIGlmICghbV9pbmFjdGl2ZUxpc3RC
b3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IuaXNWYWxpZCgpICYmIHN1cHBvcnRzTGlzdEJveFNl
bGVjdGlvbkZvcmVncm91bmRDb2xvcnMoKSkKICAgICAgICAgbV9pbmFjdGl2ZUxpc3RCb3hTZWxl
Y3Rpb25Gb3JlZ3JvdW5kQ29sb3IgPSBwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZv
cmVncm91bmRDb2xvcigpOwogICAgIHJldHVybiBtX2luYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZv
cmVncm91bmRDb2xvcjsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWU6OnBsYXRmb3JtQWN0aXZlU2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5kZXJUaGVtZTo6
cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogewogICAgIC8v
IFVzZSBhIGJsdWUgY29sb3IgYnkgZGVmYXVsdCBpZiB0aGUgcGxhdGZvcm0gdGhlbWUgZG9lc24n
dCBkZWZpbmUgYW55dGhpbmcuCi0gICAgcmV0dXJuIENvbG9yKDAsIDAsIDI1NSk7CisgICAgcmV0
dXJuIE9wdGlvbmFsUkdCQSgwLCAwLCAyNTUpOwogfQogCi1Db2xvciBSZW5kZXJUaGVtZTo6cGxh
dGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JB
IFJlbmRlclRoZW1lOjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNv
bnN0CiB7CiAgICAgLy8gVXNlIGEgd2hpdGUgY29sb3IgYnkgZGVmYXVsdCBpZiB0aGUgcGxhdGZv
cm0gdGhlbWUgZG9lc24ndCBkZWZpbmUgYW55dGhpbmcuCi0gICAgcmV0dXJuIENvbG9yOjp3aGl0
ZTsKKyAgICByZXR1cm4gT3B0aW9uYWxSR0JBOjp3aGl0ZTsKIH0KIAotQ29sb3IgUmVuZGVyVGhl
bWU6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAorT3B0
aW9uYWxSR0JBIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3Vu
ZENvbG9yKCkgY29uc3QKIHsKICAgICAvLyBVc2UgYSBncmV5IGNvbG9yIGJ5IGRlZmF1bHQgaWYg
dGhlIHBsYXRmb3JtIHRoZW1lIGRvZXNuJ3QgZGVmaW5lIGFueXRoaW5nLgogICAgIC8vIFRoaXMg
Y29sb3IgbWF0Y2hlcyBGaXJlZm94J3MgaW5hY3RpdmUgY29sb3IuCi0gICAgcmV0dXJuIENvbG9y
KDE3NiwgMTc2LCAxNzYpOworICAgIHJldHVybiBPcHRpb25hbFJHQkEoMTc2LCAxNzYsIDE3Nik7
CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdy
b3VuZENvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5kZXJUaGVtZTo6cGxhdGZvcm1JbmFj
dGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgLy8gVXNlIGEgYmxh
Y2sgY29sb3IgYnkgZGVmYXVsdC4KLSAgICByZXR1cm4gQ29sb3I6OmJsYWNrOworICAgIHJldHVy
biBPcHRpb25hbFJHQkE6OmJsYWNrOwogfQogCi1Db2xvciBSZW5kZXJUaGVtZTo6cGxhdGZvcm1B
Y3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdC
QSBSZW5kZXJUaGVtZTo6cGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKTsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWU6OnBsYXRmb3JtQWN0aXZlTGlzdEJv
eFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhl
bWU6OnBsYXRmb3JtQWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7
CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWU6OnBsYXRm
b3JtSW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOwogfQog
Ci1Db2xvciBSZW5kZXJUaGVtZTo6cGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUlu
YWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIHBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKTsKIH0KQEAgLTY4
MCw3ICs2ODAsNyBAQCBib29sIFJlbmRlclRoZW1lOjppc0NvbnRyb2xDb250YWluZXIoQ29udHJv
bFBhcnQgYXBwZWFyYW5jZSkgY29uc3QKICAgICByZXR1cm4gYXBwZWFyYW5jZSAhPSBDaGVja2Jv
eFBhcnQgJiYgYXBwZWFyYW5jZSAhPSBSYWRpb1BhcnQ7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWU6
OmlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEJvcmRlckRh
dGEmIGJvcmRlciwgY29uc3QgRmlsbExheWVyJiBiYWNrZ3JvdW5kLCBjb25zdCBDb2xvciYgYmFj
a2dyb3VuZENvbG9yKSBjb25zdAorYm9vbCBSZW5kZXJUaGVtZTo6aXNDb250cm9sU3R5bGVkKGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgQm9yZGVyRGF0YSYgYm9yZGVyLCBjb25zdCBG
aWxsTGF5ZXImIGJhY2tncm91bmQsIGNvbnN0IE9wdGlvbmFsUkdCQSYgYmFja2dyb3VuZENvbG9y
KSBjb25zdAogewogICAgIHN3aXRjaCAoc3R5bGUuYXBwZWFyYW5jZSgpKSB7CiAgICAgY2FzZSBQ
dXNoQnV0dG9uUGFydDoKQEAgLTExNDYsMTUgKzExNDYsMTUgQEAgdm9pZCBSZW5kZXJUaGVtZTo6
YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRl
clN0eWwKIAogdm9pZCBSZW5kZXJUaGVtZTo6cGxhdGZvcm1Db2xvcnNEaWRDaGFuZ2UoKQogewot
ICAgIG1fYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yID0gQ29sb3IoKTsKLSAgICBtX2lu
YWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yID0gQ29sb3IoKTsKLSAgICBtX2FjdGl2ZVNl
bGVjdGlvbkJhY2tncm91bmRDb2xvciA9IENvbG9yKCk7Ci0gICAgbV9pbmFjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvciA9IENvbG9yKCk7CisgICAgbV9hY3RpdmVTZWxlY3Rpb25Gb3JlZ3Jv
dW5kQ29sb3IgPSBPcHRpb25hbFJHQkEoKTsKKyAgICBtX2luYWN0aXZlU2VsZWN0aW9uRm9yZWdy
b3VuZENvbG9yID0gT3B0aW9uYWxSR0JBKCk7CisgICAgbV9hY3RpdmVTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IgPSBPcHRpb25hbFJHQkEoKTsKKyAgICBtX2luYWN0aXZlU2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yID0gT3B0aW9uYWxSR0JBKCk7CiAKLSAgICBtX2FjdGl2ZUxpc3RCb3hTZWxlY3Rp
b25Gb3JlZ3JvdW5kQ29sb3IgPSBDb2xvcigpOwotICAgIG1faW5hY3RpdmVMaXN0Qm94U2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yID0gQ29sb3IoKTsKLSAgICBtX2FjdGl2ZUxpc3RCb3hTZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcigpOwotICAgIG1faW5hY3RpdmVMaXN0Qm94U2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yID0gQ29sb3IoKTsKKyAgICBtX2FjdGl2ZUxpc3RCb3hTZWxlY3Rp
b25Gb3JlZ3JvdW5kQ29sb3IgPSBPcHRpb25hbFJHQkEoKTsKKyAgICBtX2luYWN0aXZlTGlzdEJv
eFNlbGVjdGlvbkZvcmVncm91bmRDb2xvciA9IE9wdGlvbmFsUkdCQSgpOworICAgIG1fYWN0aXZl
TGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9IE9wdGlvbmFsUkdCQSgpOworICAgIG1f
aW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yID0gT3B0aW9uYWxSR0JBKCk7
CiAKICAgICBQYWdlOjp1cGRhdGVTdHlsZUZvckFsbFBhZ2VzQWZ0ZXJHbG9iYWxDaGFuZ2VJbkVu
dmlyb25tZW50KCk7CiB9CkBAIC0xMjA4LDcgKzEyMDgsNyBAQCB2b2lkIFJlbmRlclRoZW1lOjpz
eXN0ZW1Gb250KENTU1ZhbHVlSUQgc3lzdGVtRm9udElELCBGb250RGVzY3JpcHRpb24mIGZvbnRE
ZXNjcgogICAgIHVwZGF0ZUNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbihzeXN0ZW1Gb250SUQs
IGZvbnREZXNjcmlwdGlvbik7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lOjpzeXN0ZW1Db2xvcihD
U1NWYWx1ZUlEIGNzc1ZhbHVlSWQpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWU6OnN5
c3RlbUNvbG9yKENTU1ZhbHVlSUQgY3NzVmFsdWVJZCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKGNz
c1ZhbHVlSWQpIHsKICAgICBjYXNlIENTU1ZhbHVlQWN0aXZlYm9yZGVyOgpAQCAtMTI3NCwyMSAr
MTI3NCwyMSBAQCBDb2xvciBSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCBjc3NW
YWx1ZUlkKSBjb25zdAogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBy
ZXR1cm4gQ29sb3IoKTsKKyAgICByZXR1cm4gT3B0aW9uYWxSR0JBKCk7CiB9CiAKLUNvbG9yIFJl
bmRlclRoZW1lOjpwbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIGNvbnN0
CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWU6OnBsYXRmb3JtQWN0aXZlVGV4dFNlYXJjaEhpZ2hs
aWdodENvbG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gQ29sb3IoMjU1LCAxNTAsIDUwKTsgLy8g
T3JhbmdlLgorICAgIHJldHVybiBPcHRpb25hbFJHQkEoMjU1LCAxNTAsIDUwKTsgLy8gT3Jhbmdl
LgogfQogCi1Db2xvciBSZW5kZXJUaGVtZTo6cGxhdGZvcm1JbmFjdGl2ZVRleHRTZWFyY2hIaWdo
bGlnaHRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWU6OnBsYXRmb3JtSW5h
Y3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSBjb25zdAogewotICAgIHJldHVybiBDb2xv
cigyNTUsIDI1NSwgMCk7IC8vIFllbGxvdy4KKyAgICByZXR1cm4gT3B0aW9uYWxSR0JBKDI1NSwg
MjU1LCAwKTsgLy8gWWVsbG93LgogfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLUNvbG9y
IFJlbmRlclRoZW1lOjp0YXBIaWdobGlnaHRDb2xvcigpCitPcHRpb25hbFJHQkEgUmVuZGVyVGhl
bWU6OnRhcEhpZ2hsaWdodENvbG9yKCkKIHsKICAgICByZXR1cm4gZGVmYXVsdFRoZW1lKCktPnBs
YXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IoKTsKIH0KQEAgLTEyOTksMTIgKzEyOTksMTIgQEAgc3Rh
dGljIGNvbnN0IGludCBtaW5Db2xvckNvbnRyYXN0VmFsdWUgPSAxMzAwOwogLy8gRm9yIHRyYW5z
cGFyZW50IG9yIHRyYW5zbHVjZW50IGJhY2tncm91bmQgY29sb3IsIHVzZSBsaWdodGVuaW5nLgog
c3RhdGljIGNvbnN0IGludCBtaW5EaXNhYmxlZENvbG9yQWxwaGFWYWx1ZSA9IDEyODsKIAotQ29s
b3IgUmVuZGVyVGhlbWU6OmRpc2FibGVkVGV4dENvbG9yKGNvbnN0IENvbG9yJiB0ZXh0Q29sb3Is
IGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVy
VGhlbWU6OmRpc2FibGVkVGV4dENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgdGV4dENvbG9yLCBj
b25zdCBPcHRpb25hbFJHQkEmIGJhY2tncm91bmRDb2xvcikgY29uc3QKIHsKICAgICAvLyBUaGUg
ZXhwbGljaXQgY2hlY2sgZm9yIGJsYWNrIGlzIGFuIG9wdGltaXphdGlvbiBmb3IgdGhlIDk5JSBj
YXNlIChibGFjayBvbiB3aGl0ZSkuCiAgICAgLy8gVGhpcyBhbHNvIG1lYW5zIHRoYXQgYmxhY2sg
b24gYmxhY2sgd2lsbCB0dXJuIGludG8gZ3JleSBvbiBibGFjayB3aGVuIGRpc2FibGVkLgotICAg
IENvbG9yIGRpc2FibGVkQ29sb3I7Ci0gICAgaWYgKHRleHRDb2xvci5yZ2IoKSA9PSBDb2xvcjo6
YmxhY2sgfHwgYmFja2dyb3VuZENvbG9yLmFscGhhKCkgPCBtaW5EaXNhYmxlZENvbG9yQWxwaGFW
YWx1ZSB8fCBkaWZmZXJlbmNlU3F1YXJlZCh0ZXh0Q29sb3IsIENvbG9yOjp3aGl0ZSkgPiBkaWZm
ZXJlbmNlU3F1YXJlZChiYWNrZ3JvdW5kQ29sb3IsIENvbG9yOjp3aGl0ZSkpCisgICAgT3B0aW9u
YWxSR0JBIGRpc2FibGVkQ29sb3I7CisgICAgaWYgKHRleHRDb2xvci5yZ2IoKSA9PSBPcHRpb25h
bFJHQkE6OmJsYWNrIHx8IGJhY2tncm91bmRDb2xvci5hbHBoYSgpIDwgbWluRGlzYWJsZWRDb2xv
ckFscGhhVmFsdWUgfHwgZGlmZmVyZW5jZVNxdWFyZWQodGV4dENvbG9yLCBPcHRpb25hbFJHQkE6
OndoaXRlKSA+IGRpZmZlcmVuY2VTcXVhcmVkKGJhY2tncm91bmRDb2xvciwgT3B0aW9uYWxSR0JB
Ojp3aGl0ZSkpCiAgICAgICAgIGRpc2FibGVkQ29sb3IgPSB0ZXh0Q29sb3IubGlnaHQoKTsKICAg
ICBlbHNlCiAgICAgICAgIGRpc2FibGVkQ29sb3IgPSB0ZXh0Q29sb3IuZGFyaygpOwpAQCAtMTMx
OCwxMiArMTMxOCwxMiBAQCBDb2xvciBSZW5kZXJUaGVtZTo6ZGlzYWJsZWRUZXh0Q29sb3IoY29u
c3QgQ29sb3ImIHRleHRDb2xvciwgY29uc3QgQ29sb3ImIGJhY2tncgogICAgIHJldHVybiBkaXNh
YmxlZENvbG9yOwogfQogCi12b2lkIFJlbmRlclRoZW1lOjpzZXRDdXN0b21Gb2N1c1JpbmdDb2xv
cihjb25zdCBDb2xvciYgYykKK3ZvaWQgUmVuZGVyVGhlbWU6OnNldEN1c3RvbUZvY3VzUmluZ0Nv
bG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgYykKIHsKICAgICBjdXN0b21Gb2N1c1JpbmdDb2xvcigp
ID0gYzsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKCkKK09wdGlvbmFs
UkdCQSBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3IoKQogewogICAgIHJldHVybiBjdXN0b21G
b2N1c1JpbmdDb2xvcigpLmlzVmFsaWQoKSA/IGN1c3RvbUZvY3VzUmluZ0NvbG9yKCkgOiBkZWZh
dWx0VGhlbWUoKS0+cGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuaAppbmRleCBhOWM0ZTM3YzI2OTU0MjU5YmZkMWRlNWJiZjRhZWU2
ZjgxYjQ2MTFmLi41OGVjZmUwOTRlNGVhOGNlMjk4NzE1OTEzMGRhYzZmZTJjNTk4ZGRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaApAQCAtNzQsNyArNzQsNyBAQCBwdWJs
aWM6CiAgICAgLy8gbWV0cmljcyBhbmQgZGVmYXVsdHMgZ2l2ZW4gdGhlIGNvbnRlbnRzIG9mIHRo
ZSBzdHlsZS4gIFRoaXMgaW5jbHVkZXMgc29waGlzdGljYXRlZCBvcGVyYXRpb25zIGxpa2UKICAg
ICAvLyBzZWxlY3Rpb24gb2YgY29udHJvbCBzaXplIGJhc2VkIG9mZiB0aGUgZm9udCwgdGhlIGRp
c2FibGluZyBvZiBhcHBlYXJhbmNlIHdoZW4gY2VydGFpbiBvdGhlciBwcm9wZXJ0aWVzIGxpa2UK
ICAgICAvLyAiYm9yZGVyIiBhcmUgc2V0LCBvciBpZiB0aGUgYXBwZWFyYW5jZSBpcyBub3Qgc3Vw
cG9ydGVkIGJ5IHRoZSB0aGVtZS4KLSAgICB2b2lkIGFkanVzdFN0eWxlKFN0eWxlUmVzb2x2ZXIm
LCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqLCAgYm9vbCBVQUhhc0FwcGVhcmFuY2UsIGNvbnN0IEJv
cmRlckRhdGEmLCBjb25zdCBGaWxsTGF5ZXImLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9y
KTsKKyAgICB2b2lkIGFkanVzdFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVs
ZW1lbnQqLCAgYm9vbCBVQUhhc0FwcGVhcmFuY2UsIGNvbnN0IEJvcmRlckRhdGEmLCBjb25zdCBG
aWxsTGF5ZXImLCBjb25zdCBPcHRpb25hbFJHQkEmIGJhY2tncm91bmRDb2xvcik7CiAKICAgICAv
LyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgdG8gcGFpbnQgdGhlIHdpZGdldCBhcyBhIGJhY2tncm91
bmQgb2YgdGhlIFJlbmRlck9iamVjdC4gIEEgd2lkZ2V0J3MgZm9yZWdyb3VuZCwgZS5nLiwgdGhl
CiAgICAgLy8gdGV4dCBvZiBhIGJ1dHRvbiwgaXMgYWx3YXlzIHJlbmRlcmVkIGJ5IHRoZSBlbmdp
bmUgaXRzZWxmLiAgVGhlIGJvb2xlYW4gcmV0dXJuIHZhbHVlIGluZGljYXRlcwpAQCAtMTE2LDcg
KzExNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY29udHJvbFN1cHBvcnRzVGludHMo
Y29uc3QgUmVuZGVyT2JqZWN0JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIFdo
ZXRoZXIgb3Igbm90IHRoZSBjb250cm9sIGhhcyBiZWVuIHN0eWxlZCBlbm91Z2ggYnkgdGhlIGF1
dGhvciB0byBkaXNhYmxlIHRoZSBuYXRpdmUgYXBwZWFyYW5jZS4KLSAgICB2aXJ0dWFsIGJvb2wg
aXNDb250cm9sU3R5bGVkKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgQm9yZGVyRGF0YSYsIGNv
bnN0IEZpbGxMYXllciYsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBpc0NvbnRyb2xTdHlsZWQoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBC
b3JkZXJEYXRhJiwgY29uc3QgRmlsbExheWVyJiwgY29uc3QgT3B0aW9uYWxSR0JBJiBiYWNrZ3Jv
dW5kQ29sb3IpIGNvbnN0OwogCiAgICAgLy8gQSBnZW5lcmFsIG1ldGhvZCBhc2tpbmcgaWYgYW55
IGNvbnRyb2wgdGludGluZyBpcyBzdXBwb3J0ZWQgYXQgYWxsLgogICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xNDMsMzAg
KzE0MywzMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRGF0YUxpc3RVSShj
b25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gVGV4
dCBzZWxlY3Rpb24gY29sb3JzLgotICAgIENvbG9yIGFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRD
b2xvcigpIGNvbnN0OwotICAgIENvbG9yIGluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9y
KCkgY29uc3Q7Ci0gICAgQ29sb3IgYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29u
c3Q7Ci0gICAgQ29sb3IgaW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdDsK
KyAgICBPcHRpb25hbFJHQkEgYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7
CisgICAgT3B0aW9uYWxSR0JBIGluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29u
c3Q7CisgICAgT3B0aW9uYWxSR0JBIGFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNv
bnN0OworICAgIE9wdGlvbmFsUkdCQSBpbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigp
IGNvbnN0OwogCiAgICAgLy8gTGlzdCBib3ggc2VsZWN0aW9uIGNvbG9ycwotICAgIENvbG9yIGFj
dGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICBDb2xvciBh
Y3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Q7Ci0gICAgQ29sb3Ig
aW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7Ci0gICAgQ29s
b3IgaW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Q7CisgICAg
T3B0aW9uYWxSR0JBIGFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25z
dDsKKyAgICBPcHRpb25hbFJHQkEgYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xv
cigpIGNvbnN0OworICAgIE9wdGlvbmFsUkdCQSBpbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICBPcHRpb25hbFJHQkEgaW5hY3RpdmVMaXN0Qm94U2Vs
ZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Q7CiAKICAgICAvLyBIaWdobGlnaHRpbmcgY29s
b3JzIGZvciBUZXh0TWF0Y2hlcy4KLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtQWN0aXZlVGV4
dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9y
bUluYWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgY29uc3Q7CisgICAgdmlydHVhbCBP
cHRpb25hbFJHQkEgcGxhdGZvcm1BY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBwbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJjaEhp
Z2hsaWdodENvbG9yKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIENvbG9yIGRpc2FibGVkVGV4dENv
bG9yKGNvbnN0IENvbG9yJiB0ZXh0Q29sb3IsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3Ip
IGNvbnN0OworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIGRpc2FibGVkVGV4dENvbG9yKGNvbnN0
IE9wdGlvbmFsUkdCQSYgdGV4dENvbG9yLCBjb25zdCBPcHRpb25hbFJHQkEmIGJhY2tncm91bmRD
b2xvcikgY29uc3Q7CiAKLSAgICBzdGF0aWMgQ29sb3IgZm9jdXNSaW5nQ29sb3IoKTsKLSAgICB2
aXJ0dWFsIENvbG9yIHBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xv
cigwLCAwLCAwKTsgfQotICAgIHN0YXRpYyB2b2lkIHNldEN1c3RvbUZvY3VzUmluZ0NvbG9yKGNv
bnN0IENvbG9yJik7CisgICAgc3RhdGljIE9wdGlvbmFsUkdCQSBmb2N1c1JpbmdDb2xvcigpOwor
ICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdCB7
IHJldHVybiBPcHRpb25hbFJHQkEoMCwgMCwgMCk7IH0KKyAgICBzdGF0aWMgdm9pZCBzZXRDdXN0
b21Gb2N1c1JpbmdDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmKTsKICAgICB2aXJ0dWFsIGludCBw
bGF0Zm9ybUZvY3VzUmluZ01heFdpZHRoKCkgY29uc3QgeyByZXR1cm4gMzsgfQogI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCi0gICAgc3RhdGljIENvbG9yIHRhcEhpZ2hsaWdodENvbG9yKCk7Ci0g
ICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1
cm4gUmVuZGVyVGhlbWU6OmRlZmF1bHRUYXBIaWdobGlnaHRDb2xvcjsgfQorICAgIHN0YXRpYyBP
cHRpb25hbFJHQkEgdGFwSGlnaGxpZ2h0Q29sb3IoKTsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdC
QSBwbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4gUmVuZGVyVGhlbWU6
OmRlZmF1bHRUYXBIaWdobGlnaHRDb2xvcjsgfQogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHBs
YXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCk7CiAKQEAgLTE3NCw3ICsxNzQsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBTeXN0ZW0gZm9udHMgYW5kIGNvbG9ycyBmb3IgQ1NTLgogICAgIHZvaWQgc3lzdGVt
Rm9udChDU1NWYWx1ZUlELCBGb250RGVzY3JpcHRpb24mKSBjb25zdDsKLSAgICB2aXJ0dWFsIENv
bG9yIHN5c3RlbUNvbG9yKENTU1ZhbHVlSUQpIGNvbnN0OworICAgIHZpcnR1YWwgT3B0aW9uYWxS
R0JBIHN5c3RlbUNvbG9yKENTU1ZhbHVlSUQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBpbnQgbWlu
aW11bU1lbnVMaXN0U2l6ZShSZW5kZXJTdHlsZSYpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIApAQCAt
MjU5LDE1ICsyNTksMTUgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDYWNo
ZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCBzeXN0ZW1Gb250SUQsIEZvbnREZXNj
cmlwdGlvbiYpIGNvbnN0ID0gMDsKIAogICAgIC8vIFRoZSBwbGF0Zm9ybSBzZWxlY3Rpb24gY29s
b3IuCi0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRD
b2xvcigpIGNvbnN0OwotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcigpIGNvbnN0OwotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3Rp
dmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICB2aXJ0dWFsIENvbG9yIHBs
YXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIE9wdGlvbmFsUkdCQSBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigp
IGNvbnN0OworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBwbGF0
Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0OworICAgIHZpcnR1YWwg
T3B0aW9uYWxSR0JBIHBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBj
b25zdDsKIAotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9u
QmFja2dyb3VuZENvbG9yKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0
aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0OwotICAgIHZpcnR1YWwg
Q29sb3IgcGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZv
cmVncm91bmRDb2xvcigpIGNvbnN0OworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHBsYXRmb3Jt
QWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0OworICAgIHZpcnR1
YWwgT3B0aW9uYWxSR0JBIHBsYXRmb3JtSW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3Vu
ZENvbG9yKCkgY29uc3Q7CisgICAgdmlydHVhbCBPcHRpb25hbFJHQkEgcGxhdGZvcm1BY3RpdmVM
aXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Q7CisgICAgdmlydHVhbCBPcHRp
b25hbFJHQkEgcGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3Io
KSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NlbGVjdGlvbkZvcmVncm91bmRD
b2xvcnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRz
TGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CkBAIC0zOTQsMTUgKzM5NCwxNSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0RlZmF1bHQoY29uc3Qg
UmVuZGVyT2JqZWN0JikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgbXV0YWJsZSBDb2xvciBtX2Fj
dGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcjsKLSAgICBtdXRhYmxlIENvbG9yIG1faW5hY3Rp
dmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3I7Ci0gICAgbXV0YWJsZSBDb2xvciBtX2FjdGl2ZVNl
bGVjdGlvbkZvcmVncm91bmRDb2xvcjsKLSAgICBtdXRhYmxlIENvbG9yIG1faW5hY3RpdmVTZWxl
Y3Rpb25Gb3JlZ3JvdW5kQ29sb3I7Ci0KLSAgICBtdXRhYmxlIENvbG9yIG1fYWN0aXZlTGlzdEJv
eFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcjsKLSAgICBtdXRhYmxlIENvbG9yIG1faW5hY3RpdmVM
aXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yOwotICAgIG11dGFibGUgQ29sb3IgbV9hY3Rp
dmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwotICAgIG11dGFibGUgQ29sb3IgbV9p
bmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7CisgICAgbXV0YWJsZSBPcHRp
b25hbFJHQkEgbV9hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3I7CisgICAgbXV0YWJsZSBP
cHRpb25hbFJHQkEgbV9pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcjsKKyAgICBtdXRh
YmxlIE9wdGlvbmFsUkdCQSBtX2FjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcjsKKyAgICBt
dXRhYmxlIE9wdGlvbmFsUkdCQSBtX2luYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwor
CisgICAgbXV0YWJsZSBPcHRpb25hbFJHQkEgbV9hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yOworICAgIG11dGFibGUgT3B0aW9uYWxSR0JBIG1faW5hY3RpdmVMaXN0Qm94U2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yOworICAgIG11dGFibGUgT3B0aW9uYWxSR0JBIG1fYWN0aXZl
TGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcjsKKyAgICBtdXRhYmxlIE9wdGlvbmFsUkdC
QSBtX2luYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcjsKIAogI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCiAgICAgLy8gVGhpcyBjb2xvciBpcyBleHBlY3RlZCB0byBiZSBkcmF3
biBvbiBhIHNlbWktdHJhbnNwYXJlbnQgb3ZlcmxheSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4IDE4NmI3NjAxNDllNmFlZTYwYzBkYWNiNzQyMmU5
MDU3NDI4NzYxYjEuLjI4OWNhZGIwNzhjNmE0Nzk0YmQxZmIzNzI3OGFiNzY2YzFmYmY3NTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcApAQCAtMzI5LDkg
KzMyOSw5IEBAIHN0YXRpYyBib29sIG5vZGVIYXNDbGFzcyhOb2RlKiBub2RlLCBjb25zdCBjaGFy
KiBjbGFzc05hbWUpCiB9CiAKIFJlbmRlclRoZW1lR3RrOjpSZW5kZXJUaGVtZUd0aygpCi0gICAg
OiBtX3BhbmVsQ29sb3IoQ29sb3I6OndoaXRlKQotICAgICwgbV9zbGlkZXJDb2xvcihDb2xvcjo6
d2hpdGUpCi0gICAgLCBtX3NsaWRlclRodW1iQ29sb3IoQ29sb3I6OndoaXRlKQorICAgIDogbV9w
YW5lbENvbG9yKE9wdGlvbmFsUkdCQTo6d2hpdGUpCisgICAgLCBtX3NsaWRlckNvbG9yKE9wdGlv
bmFsUkdCQTo6d2hpdGUpCisgICAgLCBtX3NsaWRlclRodW1iQ29sb3IoT3B0aW9uYWxSR0JBOjp3
aGl0ZSkKICAgICAsIG1fbWVkaWFJY29uU2l6ZSgxNikKICAgICAsIG1fbWVkaWFTbGlkZXJIZWln
aHQoMTQpCiB7CkBAIC0xMzI5LDcgKzEzMjksNyBAQCBkb3VibGUgUmVuZGVyVGhlbWVHdGs6OmNh
cmV0QmxpbmtJbnRlcnZhbCgpIGNvbnN0CiAKIGVudW0gU3R5bGVDb2xvclR5cGUgeyBTdHlsZUNv
bG9yQmFja2dyb3VuZCwgU3R5bGVDb2xvckZvcmVncm91bmQgfTsKIAotc3RhdGljIENvbG9yIHN0
eWxlQ29sb3IoR1R5cGUgd2lkZ2V0VHlwZSwgR3RrU3RhdGVGbGFncyBzdGF0ZSwgU3R5bGVDb2xv
clR5cGUgY29sb3JUeXBlKQorc3RhdGljIE9wdGlvbmFsUkdCQSBzdHlsZUNvbG9yKEdUeXBlIHdp
ZGdldFR5cGUsIEd0a1N0YXRlRmxhZ3Mgc3RhdGUsIFN0eWxlQ29sb3JUeXBlIGNvbG9yVHlwZSkK
IHsKIAogICAgIEd0a1N0eWxlQ29udGV4dCogY29udGV4dCA9IGdldFN0eWxlQ29udGV4dCh3aWRn
ZXRUeXBlKTsKQEAgLTEzNDQsNDcgKzEzNDQsNDcgQEAgc3RhdGljIENvbG9yIHN0eWxlQ29sb3Io
R1R5cGUgd2lkZ2V0VHlwZSwgR3RrU3RhdGVGbGFncyBzdGF0ZSwgU3R5bGVDb2xvclR5cGUgY28K
ICAgICByZXR1cm4gZ2RrUkdCQUNvbG9yOwogfQogCi1Db2xvciBSZW5kZXJUaGVtZUd0azo6cGxh
dGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JB
IFJlbmRlclRoZW1lR3RrOjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0eWxlQ29sb3IoR1RLX1RZUEVfRU5UUlksIHN0YXRpY19j
YXN0PEd0a1N0YXRlRmxhZ3M+KEdUS19TVEFURV9GTEFHX1NFTEVDVEVEIHwgR1RLX1NUQVRFX0ZM
QUdfRk9DVVNFRCksIFN0eWxlQ29sb3JCYWNrZ3JvdW5kKTsKIH0KIAotQ29sb3IgUmVuZGVyVGhl
bWVHdGs6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAor
T3B0aW9uYWxSR0JBIFJlbmRlclRoZW1lR3RrOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3R5bGVDb2xvcihHVEtfVFlQRV9F
TlRSWSwgR1RLX1NUQVRFX0ZMQUdfU0VMRUNURUQsIFN0eWxlQ29sb3JCYWNrZ3JvdW5kKTsKIH0K
IAotQ29sb3IgUmVuZGVyVGhlbWVHdGs6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3Vu
ZENvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5kZXJUaGVtZUd0azo6cGxhdGZvcm1BY3Rp
dmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAogewogICAgIHJldHVybiBzdHlsZUNv
bG9yKEdUS19UWVBFX0VOVFJZLCBzdGF0aWNfY2FzdDxHdGtTdGF0ZUZsYWdzPihHVEtfU1RBVEVf
RkxBR19TRUxFQ1RFRCB8IEdUS19TVEFURV9GTEFHX0ZPQ1VTRUQpLCBTdHlsZUNvbG9yRm9yZWdy
b3VuZCk7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lR3RrOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5kZXJUaGVtZUd0azo6
cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIHN0eWxlQ29sb3IoR1RLX1RZUEVfRU5UUlksIEdUS19TVEFURV9GTEFHX1NFTEVDVEVE
LCBTdHlsZUNvbG9yRm9yZWdyb3VuZCk7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lR3RrOjpwbGF0
Zm9ybUFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9u
YWxSR0JBIFJlbmRlclRoZW1lR3RrOjpwbGF0Zm9ybUFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdAogewogICAgIHJldHVybiBzdHlsZUNvbG9yKEdUS19UWVBFX1RS
RUVfVklFVywgc3RhdGljX2Nhc3Q8R3RrU3RhdGVGbGFncz4oR1RLX1NUQVRFX0ZMQUdfU0VMRUNU
RUQgfCBHVEtfU1RBVEVfRkxBR19GT0NVU0VEKSwgU3R5bGVDb2xvckJhY2tncm91bmQpOwogfQog
Ci1Db2xvciBSZW5kZXJUaGVtZUd0azo6cGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlclRoZW1lR3RrOjpwbGF0
Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIHN0eWxlQ29sb3IoR1RLX1RZUEVfVFJFRV9WSUVXLCBHVEtfU1RBVEVfRkxBR19T
RUxFQ1RFRCwgU3R5bGVDb2xvckJhY2tncm91bmQpOwogfQogCi1Db2xvciBSZW5kZXJUaGVtZUd0
azo6cGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QK
K09wdGlvbmFsUkdCQSBSZW5kZXJUaGVtZUd0azo6cGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3R5bGVDb2xvcihHVEtf
VFlQRV9UUkVFX1ZJRVcsIHN0YXRpY19jYXN0PEd0a1N0YXRlRmxhZ3M+KEdUS19TVEFURV9GTEFH
X1NFTEVDVEVEIHwgR1RLX1NUQVRFX0ZMQUdfRk9DVVNFRCksIFN0eWxlQ29sb3JGb3JlZ3JvdW5k
KTsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVHdGs6OnBsYXRmb3JtSW5hY3RpdmVMaXN0Qm94U2Vs
ZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5kZXJUaGVtZUd0
azo6cGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25z
dAogewogICAgIHJldHVybiBzdHlsZUNvbG9yKEdUS19UWVBFX1RSRUVfVklFVywgR1RLX1NUQVRF
X0ZMQUdfU0VMRUNURUQsIFN0eWxlQ29sb3JGb3JlZ3JvdW5kKTsKIH0KIAotQ29sb3IgUmVuZGVy
VGhlbWVHdGs6OnN5c3RlbUNvbG9yKENTU1ZhbHVlSUQgY3NzVmFsdWVJZCkgY29uc3QKK09wdGlv
bmFsUkdCQSBSZW5kZXJUaGVtZUd0azo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlk
KSBjb25zdAogewogICAgIHN3aXRjaCAoY3NzVmFsdWVJZCkgewogICAgIGNhc2UgQ1NTVmFsdWVC
dXR0b250ZXh0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuaAppbmRl
eCBmOWI3MTBmNmVjZDM2MjQ4MWUzMWM4YzY0YTc4ZWYzYTVhYjYzZDZhLi4xNmYwOTZmNGM3OTZh
MTA1ZWRmYzNkZjU5NWE3YWVjN2IwOTYwYzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVHdGsuaApAQCAtNzEsMjMgKzcxLDIzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGludCBiYXNlbGluZVBvc2l0aW9uKGNvbnN0IFJlbmRlckJveCYpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgLy8gVGhlIHBsYXRmb3JtIHNlbGVjdGlvbiBjb2xvci4KLSAgICB2aXJ0dWFsIENvbG9y
IHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVNl
bGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQ29s
b3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBPcHRpb25hbFJHQkEg
cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRl
OworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdy
b3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBPcHRpb25hbFJHQkEgcGxh
dGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgLy8gTGlzdCBCb3ggc2VsZWN0aW9uIGNvbG9yCi0gICAgdmlydHVhbCBDb2xvciBwbGF0
Zm9ybUFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtQWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVn
cm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1J
bmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtSW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdy
b3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBPcHRpb25hbFJHQkEgcGxh
dGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBPcHRpb25hbFJHQkEgcGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBPcHRpb25h
bFJHQkEgcGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBwbGF0Zm9ybUluYWN0aXZl
TGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
dmlydHVhbCBkb3VibGUgY2FyZXRCbGlua0ludGVydmFsKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1Db2xvcnNEaWRDaGFuZ2UoKSBvdmVycmlkZTsKIAogICAg
IC8vIFN5c3RlbSBjb2xvcnMuCi0gICAgdmlydHVhbCBDb2xvciBzeXN0ZW1Db2xvcihDU1NWYWx1
ZUlEKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBzeXN0ZW1Db2xv
cihDU1NWYWx1ZUlEKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBwb3BzTWVu
dUJ5U3BhY2VPclJldHVybigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApAQCAt
MTkyLDkgKzE5Miw5IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgSW50UmVjdCBjYWxjdWxhdGVQ
cm9ncmVzc1JlY3QoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAg
bXV0YWJsZSBDb2xvciBtX3BhbmVsQ29sb3I7Ci0gICAgbXV0YWJsZSBDb2xvciBtX3NsaWRlckNv
bG9yOwotICAgIG11dGFibGUgQ29sb3IgbV9zbGlkZXJUaHVtYkNvbG9yOworICAgIG11dGFibGUg
T3B0aW9uYWxSR0JBIG1fcGFuZWxDb2xvcjsKKyAgICBtdXRhYmxlIE9wdGlvbmFsUkdCQSBtX3Ns
aWRlckNvbG9yOworICAgIG11dGFibGUgT3B0aW9uYWxSR0JBIG1fc2xpZGVyVGh1bWJDb2xvcjsK
ICAgICBjb25zdCBpbnQgbV9tZWRpYUljb25TaXplOwogICAgIGNvbnN0IGludCBtX21lZGlhU2xp
ZGVySGVpZ2h0OwogI2VuZGlmIC8vIEdUS19BUElfVkVSU0lPTl8yCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCmluZGV4IDRhY2QwYTZlNGQ1M2RjMzk0NDQyOWFiODA1
M2UxYjEyZmI1NTFlNTguLjIyMzc2NzJiZThiYmUxNDgwZWRjM2M5Y2FhZmIxMzc4ZjM5N2UxNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCkBAIC01Miw3ICs1
Miw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ2FjaGVkU3lzdGVtRm9u
dERlc2NyaXB0aW9uKENTU1ZhbHVlSUQsIEZvbnREZXNjcmlwdGlvbiYpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgaW50IGJhc2VsaW5lUG9zaXRpb24oY29uc3QgUmVuZGVyQm94JikgY29u
c3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDb250cm9sU3R5bGVkKGNvbnN0IFJl
bmRlclN0eWxlJiwgY29uc3QgQm9yZGVyRGF0YSYsIGNvbnN0IEZpbGxMYXllciYgYmFja2dyb3Vu
ZCwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBib29sIGlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEJvcmRl
ckRhdGEmLCBjb25zdCBGaWxsTGF5ZXImIGJhY2tncm91bmQsIGNvbnN0IE9wdGlvbmFsUkdCQSYg
YmFja2dyb3VuZENvbG9yKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIE1ldGhvZHMgZm9yIGVh
Y2ggYXBwZWFyYW5jZSB2YWx1ZS4KICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0Q2hlY2tib3hTdHls
ZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7
CkBAIC05NSwxMSArOTUsMTEgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RT
ZWFyY2hGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZERlY29yYXRp
b25zKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRm
b3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRD
b2xvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHBsYXRmb3Jt
SW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKIAogI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybVRhcEhpZ2hs
aWdodENvbG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMHg0RDFBMUExQTsgfQorICAgIHZp
cnR1YWwgT3B0aW9uYWxSR0JBIHBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAweDREMUExQTFBOyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRIYXZlU3BpbkJ1dHRvbihIVE1MSW5wdXRFbGVtZW50JikgY29uc3Qgb3ZlcnJpZGU7CkBA
IC0xMTQsMTUgKzExNCwxNSBAQCBwcml2YXRlOgogICAgIFJlbmRlclRoZW1lSU9TKCk7CiAgICAg
dmlydHVhbCB+UmVuZGVyVGhlbWVJT1MoKSB7IH0KIAotICAgIGNvbnN0IENvbG9yJiBzaGFkb3dD
b2xvcigpIGNvbnN0OworICAgIGNvbnN0IE9wdGlvbmFsUkdCQSYgc2hhZG93Q29sb3IoKSBjb25z
dDsKICAgICBGbG9hdFJlY3QgYWRkUm91bmRlZEJvcmRlckNsaXAoY29uc3QgUmVuZGVyT2JqZWN0
JiBib3gsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwg
Q29sb3Igc3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBPcHRpb25hbFJHQkEgc3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBTdHJpbmcgbV9tZWRpYUNvbnRyb2xzU2NyaXB0OwogICAgIFN0cmluZyBtX21lZGlhQ29u
dHJvbHNTdHlsZVNoZWV0OwogCi0gICAgbXV0YWJsZSBIYXNoTWFwPGludCwgQ29sb3I+IG1fc3lz
dGVtQ29sb3JDYWNoZTsKKyAgICBtdXRhYmxlIEhhc2hNYXA8aW50LCBPcHRpb25hbFJHQkE+IG1f
c3lzdGVtQ29sb3JDYWNoZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5tbQppbmRleCA1NTc4MmQxNDkzZTA5NjU3ZTIyMDJhNDExN2YxZDg0ZTM1MjIy
NmM3Li45M2RjNTFkMzFmMGZlNzAzNjk0NTc0NDVjMTZmODQ5ZWIxMDQxYmEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0zMTgsOSArMzE4LDkgQEAg
dm9pZCBSZW5kZXJUaGVtZUlPUzo6c2V0Q29udGVudFNpemVDYXRlZ29yeShjb25zdCBTdHJpbmcm
IGNvbnRlbnRTaXplQ2F0ZWdvcnkpCiAgICAgX2NvbnRlbnRTaXplQ2F0ZWdvcnkoKSA9IGNvbnRl
bnRTaXplQ2F0ZWdvcnk7CiB9CiAKLWNvbnN0IENvbG9yJiBSZW5kZXJUaGVtZUlPUzo6c2hhZG93
Q29sb3IoKSBjb25zdAorY29uc3QgT3B0aW9uYWxSR0JBJiBSZW5kZXJUaGVtZUlPUzo6c2hhZG93
Q29sb3IoKSBjb25zdAogewotICAgIHN0YXRpYyBDb2xvciBjb2xvcigwLjBmLCAwLjBmLCAwLjBm
LCAwLjdmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWxSR0JBIGNvbG9yKDAuMGYsIDAuMGYsIDAuMGYs
IDAuN2YpOwogICAgIHJldHVybiBjb2xvcjsKIH0KIApAQCAtMzk5LDEyICszOTksMTIgQEAgYm9v
bCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRDaGVja2JveERlY29yYXRpb25zKGNvbnN0IFJlbmRlck9i
amVjdCYgYm94LCBjb25zdCBQYWkKICAgICAgICAgfTsKIAogICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVXaWR0aCk7Ci0gICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjdmKSwgQ29s
b3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VD
b2xvcihPcHRpb25hbFJHQkEoMC4wZiwgMC4wZiwgMC4wZiwgMC43ZiksIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOwogCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3Sm9pbmVkTGluZXMoc2hh
ZG93LCAzLCB0cnVlLCBrQ0dMaW5lQ2FwU3F1YXJlKTsKIAogICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKHN0ZDo6bWluKGNsaXAud2lkdGgoKSwgY2xpcC5oZWln
aHQoKSkgKiB0aGlja25lc3NSYXRpbyk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRT
dHJva2VDb2xvcihDb2xvcigxLjBmLCAxLjBmLCAxLjBmLCAyNDAgLyAyNTUuMGYpLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9y
KE9wdGlvbmFsUkdCQSgxLjBmLCAxLjBmLCAxLjBmLCAyNDAgLyAyNTUuMGYpLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKIAogICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0pvaW5lZExpbmVz
KGxpbmUsIDMsIHRydWUpOwogICAgIH0gZWxzZSB7CkBAIC00MjUsNyArNDI1LDcgQEAgaW50IFJl
bmRlclRoZW1lSU9TOjpiYXNlbGluZVBvc2l0aW9uKGNvbnN0IFJlbmRlckJveCYgYm94KSBjb25z
dAogICAgIHJldHVybiBSZW5kZXJUaGVtZTo6YmFzZWxpbmVQb3NpdGlvbihib3gpOwogfQogCi1i
b29sIFJlbmRlclRoZW1lSU9TOjppc0NvbnRyb2xTdHlsZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlLCBjb25zdCBCb3JkZXJEYXRhJiBib3JkZXIsIGNvbnN0IEZpbGxMYXllciYgYmFja2dyb3Vu
ZCwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikgY29uc3QKK2Jvb2wgUmVuZGVyVGhlbWVJ
T1M6OmlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEJvcmRl
ckRhdGEmIGJvcmRlciwgY29uc3QgRmlsbExheWVyJiBiYWNrZ3JvdW5kLCBjb25zdCBPcHRpb25h
bFJHQkEmIGJhY2tncm91bmRDb2xvcikgY29uc3QKIHsKICAgICAvLyBCdXR0b25zIGFuZCBNZW51
bGlzdEJ1dHRvbnMgYXJlIHN0eWxlZCBpZiB0aGV5IGNvbnRhaW4gYSBiYWNrZ3JvdW5kIGltYWdl
LgogICAgIGlmIChzdHlsZS5hcHBlYXJhbmNlKCkgPT0gUHVzaEJ1dHRvblBhcnQgfHwgc3R5bGUu
YXBwZWFyYW5jZSgpID09IE1lbnVsaXN0QnV0dG9uUGFydCkKQEAgLTQ2NSw3ICs0NjUsNyBAQCBi
b29sIFJlbmRlclRoZW1lSU9TOjpwYWludFJhZGlvRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2Jq
ZWN0JiBib3gsIGNvbnN0IFBhaW50SQogICAgICAgICBjbGlwLmluZmxhdGVYKC1jbGlwLndpZHRo
KCkgKiBJbm5lckludmVyc2VSYXRpbyk7CiAgICAgICAgIGNsaXAuaW5mbGF0ZVkoLWNsaXAuaGVp
Z2h0KCkgKiBJbm5lckludmVyc2VSYXRpbyk7CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PmRyYXdSYWlzZWRFbGxpcHNlKGNsaXAsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJH
Qiwgc2hhZG93Q29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5kcmF3UmFpc2VkRWxsaXBzZShjbGlwLCBPcHRpb25hbFJHQkE6OndoaXRlLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBzaGFkb3dDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
IAogICAgICAgICBGbG9hdFNpemUgcmFkaXVzKGNsaXAud2lkdGgoKSAvIDIuMGYsIGNsaXAuaGVp
Z2h0KCkgLyAyLjBmKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVj
dChGbG9hdFJvdW5kZWRSZWN0KGNsaXAsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cykp
OwpAQCAtNjcwLDcgKzY3MCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RC
dXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QKICAgICAgICAgRmxv
YXRSZWN0IGVsbGlwc2UoYnV0dG9uQ2xpcC54KCkgKyAoYnV0dG9uQ2xpcC53aWR0aCgpIC0gY291
bnQgKiAoc2l6ZSArIHBhZGRpbmcpICsgcGFkZGluZykgLyAyLjAsIGJ1dHRvbkNsaXAubWF4WSgp
IC0gMTAuMCwgc2l6ZSwgc2l6ZSk7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3Vu
dDsgKytpKSB7Ci0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd1JhaXNlZEVsbGlw
c2UoZWxsaXBzZSwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb2xvcigwLjBm
LCAwLjBmLCAwLjBmLCAwLjVmKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBw
YWludEluZm8uY29udGV4dC0+ZHJhd1JhaXNlZEVsbGlwc2UoZWxsaXBzZSwgT3B0aW9uYWxSR0JB
Ojp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgT3B0aW9uYWxSR0JBKDAuMGYsIDAuMGYsIDAu
MGYsIDAuNWYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgICAgIGVsbGlwc2UubW92
ZShzaXplICsgcGFkZGluZywgMCk7CiAgICAgICAgIH0KICAgICB9ICBlbHNlIHsKQEAgLTY4OSwx
MiArNjg5LDEyIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNv
cmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QKICAgICAgICAgc2hhZG93WzJdID0g
RmxvYXRQb2ludChhcnJvd1syXS54KCksIGFycm93WzJdLnkoKSArIDEuMGYpOwogCiAgICAgICAg
IGZsb2F0IG9wYWNpdHkgPSBpc1JlYWRPbmx5Q29udHJvbChib3gpID8gMC4yIDogMC41OwotICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwg
MC4wZiwgb3BhY2l0eSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIG9wYWNpdHkpLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9r
ZUNvbG9yKE9wdGlvbmFsUkdCQSgwLjBmLCAwLjBmLCAwLjBmLCBvcGFjaXR5KSwgQ29sb3JTcGFj
ZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3IoT3B0
aW9uYWxSR0JBKDAuMGYsIDAuMGYsIDAuMGYsIG9wYWNpdHkpLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdDb252ZXhQb2x5Z29uKDMsIHNoYWRv
dywgdHJ1ZSk7CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENv
bG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIHBhaW50SW5mby5jb250
ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKE9wdGlvbmFsUkdCQTo6d2hp
dGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0
RmlsbENvbG9yKE9wdGlvbmFsUkdCQTo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3csIHRydWUp
OwogICAgIH0KIApAQCAtNzc5LDkgKzc3OSw5IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50
U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SW5mbyYKIAog
ICAgICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpOwogICAgICAgICBpZiAocmVhZG9ubHkpCi0gICAgICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMTc4LCAxNzgsIDE3OCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNv
bG9yKE9wdGlvbmFsUkdCQSgxNzgsIDE3OCwgMTc4KSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xv
cihDb2xvcig3NiwgNzYsIDc2KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBw
YWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoT3B0aW9uYWxSR0JBKDc2LCA3NiwgNzYp
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgICAgICBSZXRhaW5QdHI8Q0dNdXRhYmxlUGF0
aFJlZj4gcm91bmRlZFJlY3RQYXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVNdXRhYmxlKCkpOwog
ICAgICAgICBDR1BhdGhBZGRSb3VuZGVkUmVjdChyb3VuZGVkUmVjdFBhdGguZ2V0KCksIDAsIHRy
YWNrQ2xpcCwgY29ybmVyV2lkdGgsIGNvcm5lckhlaWdodCk7CkBAIC04NjAsMTQgKzg2MCwxNCBA
QCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVj
dCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SQogCiAgICAgY29uc3QgZmxvYXQgdmVydGljYWxSZW5k
ZXJpbmdQb3NpdGlvbiA9IHJlY3QueSgpICsgdmVydGljYWxPZmZzZXQ7CiAgICAgUmVmUHRyPEdy
YWRpZW50PiBzdHJva2VHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludChyZWN0
LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZl
cnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpKTsKLSAgICBz
dHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoMHg4ZCwgMHg4ZCwgMHg4ZCkp
OwotICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC40NSwgQ29sb3IoMHhlZSwgMHhl
ZSwgMHhlZSkpOwotICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41NSwgQ29sb3Io
MHhlZSwgMHhlZSwgMHhlZSkpOwotICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4w
LCBDb2xvcigweDhkLCAweDhkLCAweDhkKSk7CisgICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9y
U3RvcCgwLjAsIE9wdGlvbmFsUkdCQSgweDhkLCAweDhkLCAweDhkKSk7CisgICAgc3Ryb2tlR3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCgwLjQ1LCBPcHRpb25hbFJHQkEoMHhlZSwgMHhlZSwgMHhlZSkp
OworICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41NSwgT3B0aW9uYWxSR0JBKDB4
ZWUsIDB4ZWUsIDB4ZWUpKTsKKyAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwg
T3B0aW9uYWxSR0JBKDB4OGQsIDB4OGQsIDB4OGQpKTsKICAgICBjb250ZXh0LT5zZXRTdHJva2VH
cmFkaWVudChzdHJva2VHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSA9IHJlbmRlcmVyLnN0eWxlKCkuY29sb3JTcGFjZSgpOwotICAgIGNvbnRl
eHQtPnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1KSwgY29sb3JTcGFjZSk7CisgICAg
Y29udGV4dC0+c2V0RmlsbENvbG9yKE9wdGlvbmFsUkdCQSgyNTUsIDI1NSwgMjU1KSwgY29sb3JT
cGFjZSk7CiAKICAgICBQYXRoIHRyYWNrUGF0aDsKICAgICBGbG9hdFJlY3QgdHJhY2tSZWN0KHJl
Y3QueCgpICsgMC4yNSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuMjUsIHJlY3Qud2lk
dGgoKSAtIDAuNSwgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAwLjUpOwpAQCAtODgxLDggKzg4MSw4IEBA
IGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0
JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAKICAgICBmbG9hdCB1cHBlckdyYWRpZW50SGVpZ2h0
ID0gcHJvZ3Jlc3NCYXJIZWlnaHQgLyAyLjsKICAgICBSZWZQdHI8R3JhZGllbnQ+IHVwcGVyR3Jh
ZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVu
ZGVyaW5nUG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRl
cmluZ1Bvc2l0aW9uICsgdXBwZXJHcmFkaWVudEhlaWdodCAtIDEuNSkpOwotICAgIHVwcGVyR3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCgwLjAsIENvbG9yKDEzMywgMTMzLCAxMzMsIDE4OCkpOwotICAg
IHVwcGVyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLjAsIENvbG9yKDE4LCAxOCwgMTgsIDUxKSk7
CisgICAgdXBwZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgT3B0aW9uYWxSR0JBKDEzMywg
MTMzLCAxMzMsIDE4OCkpOworICAgIHVwcGVyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLjAsIE9w
dGlvbmFsUkdCQSgxOCwgMTgsIDE4LCA1MSkpOwogICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVu
dCh1cHBlckdyYWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOwogCiAgICAgY29udGV4dC0+ZmlsbFJl
Y3QoRmxvYXRSZWN0KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uLCByZWN0Lndp
ZHRoKCksIHVwcGVyR3JhZGllbnRIZWlnaHQpKTsKQEAgLTg5MywxOCArODkzLDE4IEBAIGJvb2wg
UmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5k
ZXJlciwgY29uc3QgUGFpbnRJCiAgICAgICAgIGRvdWJsZSBwb3NpdGlvbiA9IGNsYW1wVG8ocmVu
ZGVyUHJvZ3Jlc3MucG9zaXRpb24oKSwgMC4wLCAxLjApOwogICAgICAgICBkb3VibGUgYmFyV2lk
dGggPSBwb3NpdGlvbiAqIHJlY3Qud2lkdGgoKTsKICAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBi
YXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGlj
YWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuNSksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2Fs
UmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpKTsKLSAgICAgICAgYmFy
R3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjAsIENvbG9yKDE5NSwgMjE3LCAyNDcpKTsKLSAgICAg
ICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjQ1LCBDb2xvcigxMTgsIDE2NCwgMjI4KSk7
Ci0gICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC40OSwgQ29sb3IoMTE4LCAxNjQs
IDIyOCkpOwotICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNTEsIENvbG9yKDM2
LCAxMTQsIDIxMCkpOwotICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNTUsIENv
bG9yKDM2LCAxMTQsIDIxMCkpOwotICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEu
MCwgQ29sb3IoNTcsIDE0MiwgMjQ0KSk7CisgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0
b3AoMC4wLCBPcHRpb25hbFJHQkEoMTk1LCAyMTcsIDI0NykpOworICAgICAgICBiYXJHcmFkaWVu
dC0+YWRkQ29sb3JTdG9wKDAuNDUsIE9wdGlvbmFsUkdCQSgxMTgsIDE2NCwgMjI4KSk7CisgICAg
ICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC40OSwgT3B0aW9uYWxSR0JBKDExOCwgMTY0
LCAyMjgpKTsKKyAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjUxLCBPcHRpb25h
bFJHQkEoMzYsIDExNCwgMjEwKSk7CisgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
MC41NSwgT3B0aW9uYWxSR0JBKDM2LCAxMTQsIDIxMCkpOworICAgICAgICBiYXJHcmFkaWVudC0+
YWRkQ29sb3JTdG9wKDEuMCwgT3B0aW9uYWxSR0JBKDU3LCAxNDIsIDI0NCkpOwogICAgICAgICBj
b250ZXh0LT5zZXRGaWxsR3JhZGllbnQoYmFyR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CiAK
ICAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBiYXJTdHJva2VHcmFkaWVudCA9IEdyYWRpZW50Ojpj
cmVhdGUoRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiksIEZs
b2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0Jh
ckhlaWdodCAtIDEpKTsKLSAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgw
LjAsIENvbG9yKDk1LCAxMDcsIDE4MykpOwotICAgICAgICBiYXJTdHJva2VHcmFkaWVudC0+YWRk
Q29sb3JTdG9wKDAuNSwgQ29sb3IoNjYsIDEwNiwgMTc0LCAyNDApKTsKLSAgICAgICAgYmFyU3Ry
b2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLjAsIENvbG9yKDM4LCAxMDQsIDE2NikpOworICAg
ICAgICBiYXJTdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgT3B0aW9uYWxSR0JBKDk1
LCAxMDcsIDE4MykpOworICAgICAgICBiYXJTdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAu
NSwgT3B0aW9uYWxSR0JBKDY2LCAxMDYsIDE3NCwgMjQwKSk7CisgICAgICAgIGJhclN0cm9rZUdy
YWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBPcHRpb25hbFJHQkEoMzgsIDEwNCwgMTY2KSk7CiAg
ICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KGJhclN0cm9rZUdyYWRpZW50LnJlbGVh
c2VOb25OdWxsKCkpOwogCiAgICAgICAgIFBhdGggYmFyUGF0aDsKQEAgLTEwMTcsNyArMTAxNyw3
IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50RmlsZVVwbG9hZEljb25EZWNvcmF0aW9ucyhj
b25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CiAKICAgICBJbnRTaXplIGNvcm5lclNp
emUoa1RodW1ibmFpbEJvcmRlckNvcm5lclJhZGl1cywga1RodW1ibmFpbEJvcmRlckNvcm5lclJh
ZGl1cyk7Ci0gICAgQ29sb3IgcGljdHVyZUZyYW1lQ29sb3IgPSBidXR0b25SZW5kZXJlci5zdHls
ZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKTsKKyAg
ICBPcHRpb25hbFJHQkEgcGljdHVyZUZyYW1lQ29sb3IgPSBidXR0b25SZW5kZXJlci5zdHlsZSgp
LnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKTsKIAogICAg
IEludFJlY3QgdGh1bWJuYWlsUGljdHVyZUZyYW1lUmVjdCA9IHJlY3Q7CiAgICAgSW50UmVjdCB0
aHVtYm5haWxSZWN0ID0gcmVjdDsKQEAgLTEwMzAsNyArMTAzMCw3IEBAIGJvb2wgUmVuZGVyVGhl
bWVJT1M6OnBhaW50RmlsZVVwbG9hZEljb25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3Qm
LCBjb25zdCBSCiAgICAgICAgIHRodW1ibmFpbFJlY3QuY29udHJhY3Qoa011bHRpcGxlVGh1bWJu
YWlsU2hyaW5rU2l6ZSwga011bHRpcGxlVGh1bWJuYWlsU2hyaW5rU2l6ZSk7CiAKICAgICAgICAg
Ly8gQmFja2dyb3VuZCBwaWN0dXJlIGZyYW1lIGFuZCBzaW1wbGUgYmFja2dyb3VuZCBpY29uIHdp
dGggYSBncmFkaWVudCBtYXRjaGluZyB0aGUgYnV0dG9uLgotICAgICAgICBDb2xvciBiYWNrZ3Jv
dW5kSW1hZ2VDb2xvciA9IENvbG9yKGJ1dHRvblJlbmRlcmVyLnN0eWxlKCkudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKS5yZ2IoKSk7CisgICAgICAgIE9w
dGlvbmFsUkdCQSBiYWNrZ3JvdW5kSW1hZ2VDb2xvciA9IE9wdGlvbmFsUkdCQShidXR0b25SZW5k
ZXJlci5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvcikucmdiKCkpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0
KEZsb2F0Um91bmRlZFJlY3QodGh1bWJuYWlsUGljdHVyZUZyYW1lUmVjdCwgY29ybmVyU2l6ZSwg
Y29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSksIHBpY3R1cmVGcmFtZUNvbG9yLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0
KHRodW1ibmFpbFJlY3QsIGJhY2tncm91bmRJbWFnZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKICAgICAgICAgewpAQCAtMTA1OCwxNCArMTA1OCwxNCBAQCBib29sIFJlbmRlclRoZW1lSU9T
OjpwYWludEZpbGVVcGxvYWRJY29uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29u
c3QgUgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVJT1M6OnBsYXRm
b3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBS
ZW5kZXJUaGVtZUlPUzo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBj
b25zdAogewotICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJlbnQ7CisgICAgcmV0dXJuIE9wdGlv
bmFsUkdCQTo6dHJhbnNwYXJlbnQ7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lSU9TOjpwbGF0Zm9y
bUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBS
ZW5kZXJUaGVtZUlPUzo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIENvbG9yOjp0cmFuc3BhcmVudDsKKyAgICByZXR1cm4gT3B0
aW9uYWxSR0JBOjp0cmFuc3BhcmVudDsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUlPUzo6c2hvdWxk
SGF2ZVNwaW5CdXR0b24oSFRNTElucHV0RWxlbWVudCYpIGNvbnN0CkBAIC0xMzAxLDEzICsxMzAx
LDEzIEBAIFN0cmluZyBSZW5kZXJUaGVtZUlPUzo6bWVkaWFDb250cm9sc1NjcmlwdCgpCiB9CiAj
ZW5kaWYgLy8gRU5BQkxFKFZJREVPKQogCi1Db2xvciBSZW5kZXJUaGVtZUlPUzo6c3lzdGVtQ29s
b3IoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlEKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlclRoZW1l
SU9TOjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUlEIGNzc1ZhbHVlSUQpIGNvbnN0CiB7Ci0gICAgYXV0
byBhZGRSZXN1bHQgPSBtX3N5c3RlbUNvbG9yQ2FjaGUuYWRkKGNzc1ZhbHVlSUQsIENvbG9yKCkp
OworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zeXN0ZW1Db2xvckNhY2hlLmFkZChjc3NWYWx1ZUlE
LCBPcHRpb25hbFJHQkEoKSk7CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAg
ICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAKLSAgICBDb2xvciBjb2xvcjsK
KyAgICBPcHRpb25hbFJHQkEgY29sb3I7CiAgICAgc3dpdGNoIChjc3NWYWx1ZUlEKSB7CiAgICAg
Y2FzZSBDU1NWYWx1ZUFwcGxlV2lyZWxlc3NQbGF5YmFja1RhcmdldEFjdGl2ZToKICAgICAgICAg
Y29sb3IgPSBbZ2V0VUlDb2xvckNsYXNzKCkgc3lzdGVtQmx1ZUNvbG9yXS5DR0NvbG9yOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAppbmRleCBlMmUwNjA4NGVkMGRk
MTQyYmVlMWM1MGI4M2E5ZDAyYjY4ZTYyZWRmLi40NjQ1YWM2ZDU0NjhmMGExMmQxNzJjNDJjNjk0
YmMzNzY0OTEzODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
aApAQCAtNTIsMTUgKzUyLDE1IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RS
ZXBhaW50UmVjdChjb25zdCBSZW5kZXJPYmplY3QmLCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRyb2xTdHlsZWQoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25z
dCBCb3JkZXJEYXRhJiwgY29uc3QgRmlsbExheWVyJiwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRD
b2xvcikgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtQWN0aXZl
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBD
b2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRm
b3JtQWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3Jt
SW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBib29sIGlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSYs
IGNvbnN0IEJvcmRlckRhdGEmLCBjb25zdCBGaWxsTGF5ZXImLCBjb25zdCBPcHRpb25hbFJHQkEm
IGJhY2tncm91bmRDb2xvcikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICB2aXJ0dWFsIE9wdGlvbmFs
UkdCQSBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdC
QSBwbGF0Zm9ybUFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBwbGF0Zm9ybUFjdGl2ZUxpc3RCb3hT
ZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIE9w
dGlvbmFsUkdCQSBwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xv
cigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHBsYXRmb3JtSW5h
Y3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCBPcHRpb25hbFJHQkEgcGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgaW50IHBsYXRmb3JtRm9jdXNSaW5nTWF4V2lkdGgoKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgU2Nyb2xsYmFyQ29udHJvbFNpemUgc2Nyb2xsYmFy
Q29udHJvbFNpemVGb3JQYXJ0KENvbnRyb2xQYXJ0KSBvdmVycmlkZSB7IHJldHVybiBTbWFsbFNj
cm9sbGJhcjsgfQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHByaXZhdGU6CiAKICAgICBGbG9hdFJlY3Qg
Y29udmVydFRvUGFpbnRpbmdSZWN0KGNvbnN0IFJlbmRlck9iamVjdCYgaW5wdXRSZW5kZXJlciwg
Y29uc3QgUmVuZGVyT2JqZWN0JiBwYXJ0UmVuZGVyZXIsIGNvbnN0IEZsb2F0UmVjdCYgaW5wdXRS
ZWN0LCBjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIENvbG9yIHN5c3RlbUNv
bG9yKENTU1ZhbHVlSUQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JB
IHN5c3RlbUNvbG9yKENTU1ZhbHVlSUQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gR2V0IHRo
ZSBjb250cm9sIHNpemUgYmFzZWQgb2ZmIHRoZSBmb250LiBVc2VkIGJ5IHNvbWUgb2YgdGhlIGNv
bnRyb2xzIChsaWtlIGJ1dHRvbnMpLgogICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemVGb3JG
b250KFJlbmRlclN0eWxlJikgY29uc3Q7CkBAIC0yNDcsNyArMjQ3LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1faXNTbGlkZXJUaHVtYkhvcml6b250YWxQcmVzc2VkOwogICAgIGJvb2wgbV9pc1Ns
aWRlclRodW1iVmVydGljYWxQcmVzc2VkOwogCi0gICAgbXV0YWJsZSBIYXNoTWFwPGludCwgQ29s
b3I+IG1fc3lzdGVtQ29sb3JDYWNoZTsKKyAgICBtdXRhYmxlIEhhc2hNYXA8aW50LCBPcHRpb25h
bFJHQkE+IG1fc3lzdGVtQ29sb3JDYWNoZTsKIAogICAgIFJldGFpblB0cjxXZWJDb3JlUmVuZGVy
VGhlbWVOb3RpZmljYXRpb25PYnNlcnZlcj4gbV9ub3RpZmljYXRpb25PYnNlcnZlcjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDk0MWUwYTRjYmQ0
ZWIwM2EyMDRjOWFjOTMzNmIyMmQ2ZTVkOTI4NTQuLjBlNWVjYzM4YjQwMmU0NjJhNjk0NTJiY2E2
ODc1N2E0OTQyMWU0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMubW0KQEAgLTI3MCwzNSArMjcwLDM1IEBAIFN0cmluZyBSZW5kZXJUaGVtZU1hYzo6aW1hZ2VD
b250cm9sc1N0eWxlU2hlZXQoKSBjb25zdAogfQogI2VuZGlmCiAKLUNvbG9yIFJlbmRlclRoZW1l
TWFjOjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CitPcHRp
b25hbFJHQkEgUmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3Vu
ZENvbG9yKCkgY29uc3QKIHsKICAgICBOU0NvbG9yKiBjb2xvciA9IFtbTlNDb2xvciBzZWxlY3Rl
ZFRleHRCYWNrZ3JvdW5kQ29sb3JdIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTpOU0RldmljZVJH
QkNvbG9yU3BhY2VdOwotICAgIHJldHVybiBDb2xvcihzdGF0aWNfY2FzdDxpbnQ+KDI1NS4wICog
W2NvbG9yIHJlZENvbXBvbmVudF0pLCBzdGF0aWNfY2FzdDxpbnQ+KDI1NS4wICogW2NvbG9yIGdy
ZWVuQ29tcG9uZW50XSksIHN0YXRpY19jYXN0PGludD4oMjU1LjAgKiBbY29sb3IgYmx1ZUNvbXBv
bmVudF0pKTsKKyAgICByZXR1cm4gT3B0aW9uYWxSR0JBKHN0YXRpY19jYXN0PGludD4oMjU1LjAg
KiBbY29sb3IgcmVkQ29tcG9uZW50XSksIHN0YXRpY19jYXN0PGludD4oMjU1LjAgKiBbY29sb3Ig
Z3JlZW5Db21wb25lbnRdKSwgc3RhdGljX2Nhc3Q8aW50PigyNTUuMCAqIFtjb2xvciBibHVlQ29t
cG9uZW50XSkpOwogfQogCi1Db2xvciBSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1JbmFjdGl2ZVNl
bGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWVN
YWM6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogewog
ICAgIE5TQ29sb3IqIGNvbG9yID0gW1tOU0NvbG9yIHNlY29uZGFyeVNlbGVjdGVkQ29udHJvbENv
bG9yXSBjb2xvclVzaW5nQ29sb3JTcGFjZU5hbWU6TlNEZXZpY2VSR0JDb2xvclNwYWNlXTsKLSAg
ICByZXR1cm4gQ29sb3Ioc3RhdGljX2Nhc3Q8aW50PigyNTUuMCAqIFtjb2xvciByZWRDb21wb25l
bnRdKSwgc3RhdGljX2Nhc3Q8aW50PigyNTUuMCAqIFtjb2xvciBncmVlbkNvbXBvbmVudF0pLCBz
dGF0aWNfY2FzdDxpbnQ+KDI1NS4wICogW2NvbG9yIGJsdWVDb21wb25lbnRdKSk7CisgICAgcmV0
dXJuIE9wdGlvbmFsUkdCQShzdGF0aWNfY2FzdDxpbnQ+KDI1NS4wICogW2NvbG9yIHJlZENvbXBv
bmVudF0pLCBzdGF0aWNfY2FzdDxpbnQ+KDI1NS4wICogW2NvbG9yIGdyZWVuQ29tcG9uZW50XSks
IHN0YXRpY19jYXN0PGludD4oMjU1LjAgKiBbY29sb3IgYmx1ZUNvbXBvbmVudF0pKTsKIH0KIAot
Q29sb3IgUmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtQWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWVNYWM6OnBsYXRmb3Jt
QWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgTlND
b2xvciogY29sb3IgPSBbW05TQ29sb3IgYWx0ZXJuYXRlU2VsZWN0ZWRDb250cm9sQ29sb3JdIGNv
bG9yVXNpbmdDb2xvclNwYWNlTmFtZTpOU0RldmljZVJHQkNvbG9yU3BhY2VdOwotICAgIHJldHVy
biBDb2xvcihzdGF0aWNfY2FzdDxpbnQ+KDI1NS4wICogW2NvbG9yIHJlZENvbXBvbmVudF0pLCBz
dGF0aWNfY2FzdDxpbnQ+KDI1NS4wICogW2NvbG9yIGdyZWVuQ29tcG9uZW50XSksIHN0YXRpY19j
YXN0PGludD4oMjU1LjAgKiBbY29sb3IgYmx1ZUNvbXBvbmVudF0pKTsKKyAgICByZXR1cm4gT3B0
aW9uYWxSR0JBKHN0YXRpY19jYXN0PGludD4oMjU1LjAgKiBbY29sb3IgcmVkQ29tcG9uZW50XSks
IHN0YXRpY19jYXN0PGludD4oMjU1LjAgKiBbY29sb3IgZ3JlZW5Db21wb25lbnRdKSwgc3RhdGlj
X2Nhc3Q8aW50PigyNTUuMCAqIFtjb2xvciBibHVlQ29tcG9uZW50XSkpOwogfQogCi1Db2xvciBS
ZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENv
bG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1BY3RpdmVM
aXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gQ29s
b3I6OndoaXRlOworICAgIHJldHVybiBPcHRpb25hbFJHQkE6OndoaXRlOwogfQogCi1Db2xvciBS
ZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5k
Q29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybUluYWN0
aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IENvbG9yOjpibGFjazsKKyAgICByZXR1cm4gT3B0aW9uYWxSR0JBOjpibGFjazsKIH0KIAotQ29s
b3IgUmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdAorT3B0aW9u
YWxSR0JBIFJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkgY29uc3QKIHsK
ICAgICBpZiAodXNlc1Rlc3RNb2RlRm9jdXNSaW5nQ29sb3IoKSkKICAgICAgICAgcmV0dXJuIG9s
ZEFxdWFGb2N1c1JpbmdDb2xvcigpOwpAQCAtMzEzLDcgKzMxMyw3IEBAIGludCBSZW5kZXJUaGVt
ZU1hYzo6cGxhdGZvcm1Gb2N1c1JpbmdNYXhXaWR0aCgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9
CiAKLUNvbG9yIFJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWVNYWM6OnBs
YXRmb3JtSW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOwog
fQpAQCAtNDY1LDEzICs0NjUsMTMgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1Db2xv
cnNEaWRDaGFuZ2UoKQogICAgIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUNvbG9yc0RpZENoYW5nZSgp
OwogfQogCi1Db2xvciBSZW5kZXJUaGVtZU1hYzo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCBjc3NW
YWx1ZUlEKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlclRoZW1lTWFjOjpzeXN0ZW1Db2xvcihD
U1NWYWx1ZUlEIGNzc1ZhbHVlSUQpIGNvbnN0CiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3N5
c3RlbUNvbG9yQ2FjaGUuYWRkKGNzc1ZhbHVlSUQsIENvbG9yKCkpOworICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9zeXN0ZW1Db2xvckNhY2hlLmFkZChjc3NWYWx1ZUlELCBPcHRpb25hbFJHQkEoKSk7
CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuIGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWU7CiAKLSAgICBDb2xvciBjb2xvcjsKKyAgICBPcHRpb25hbFJHQkEg
Y29sb3I7CiAgICAgc3dpdGNoIChjc3NWYWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2
ZWJvcmRlcjoKICAgICAgICAgY29sb3IgPSBjb252ZXJ0TlNDb2xvclRvQ29sb3IoW05TQ29sb3Ig
a2V5Ym9hcmRGb2N1c0luZGljYXRvckNvbG9yXSk7CkBAIC00NzksNyArNDc5LDcgQEAgQ29sb3Ig
UmVuZGVyVGhlbWVNYWM6OnN5c3RlbUNvbG9yKENTU1ZhbHVlSUQgY3NzVmFsdWVJRCkgY29uc3QK
ICAgICBjYXNlIENTU1ZhbHVlQWN0aXZlYnV0dG9udGV4dDoKICNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTAwMAogICAgICAgICAvLyBUaGVyZSBpcyBubyBjb3JyZXNw
b25kaW5nIE5TQ29sb3IgZm9yIHRoaXMgc28gd2UgdXNlIGEgaGFyZCBjb2RlZCB2YWx1ZS4KLSAg
ICAgICAgY29sb3IgPSBDb2xvcjo6d2hpdGU7CisgICAgICAgIGNvbG9yID0gT3B0aW9uYWxSR0JB
Ojp3aGl0ZTsKICNlbHNlCiAgICAgICAgIGNvbG9yID0gY29udmVydE5TQ29sb3JUb0NvbG9yKFtO
U0NvbG9yIGNvbnRyb2xUZXh0Q29sb3JdKTsKICNlbmRpZgpAQCAtNjI2LDcgKzYyNiw3IEBAIGJv
b2wgUmVuZGVyVGhlbWVNYWM6OnVzZXNUZXN0TW9kZUZvY3VzUmluZ0NvbG9yKCkgY29uc3QKIH0K
IAogYm9vbCBSZW5kZXJUaGVtZU1hYzo6aXNDb250cm9sU3R5bGVkKGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSwgY29uc3QgQm9yZGVyRGF0YSYgYm9yZGVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEZpbGxMYXllciYgYmFja2dyb3VuZCwgY29uc3QgQ29sb3Im
IGJhY2tncm91bmRDb2xvcikgY29uc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBGaWxsTGF5ZXImIGJhY2tncm91bmQsIGNvbnN0IE9wdGlvbmFsUkdCQSYgYmFj
a2dyb3VuZENvbG9yKSBjb25zdAogewogICAgIGlmIChzdHlsZS5hcHBlYXJhbmNlKCkgPT0gVGV4
dEZpZWxkUGFydCB8fCBzdHlsZS5hcHBlYXJhbmNlKCkgPT0gVGV4dEFyZWFQYXJ0IHx8IHN0eWxl
LmFwcGVhcmFuY2UoKSA9PSBMaXN0Ym94UGFydCkKICAgICAgICAgcmV0dXJuIHN0eWxlLmJvcmRl
cigpICE9IGJvcmRlcjsKQEAgLTEzMjYsOCArMTMyNiw4IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6
OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVy
LCBjCiAgICAgLy8gRHJhdyB0aGUgYm90dG9tIGFycm93CiAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PmRyYXdDb252ZXhQb2x5Z29uKDMsIGFycm93MiwgdHJ1ZSk7CiAKLSAgICBDb2xvciBsZWZ0U2Vw
YXJhdG9yQ29sb3IoMCwgMCwgMCwgNDApOwotICAgIENvbG9yIHJpZ2h0U2VwYXJhdG9yQ29sb3Io
MjU1LCAyNTUsIDI1NSwgNDApOworICAgIE9wdGlvbmFsUkdCQSBsZWZ0U2VwYXJhdG9yQ29sb3Io
MCwgMCwgMCwgNDApOworICAgIE9wdGlvbmFsUkdCQSByaWdodFNlcGFyYXRvckNvbG9yKDI1NSwg
MjU1LCAyNTUsIDQwKTsKIAogICAgIC8vIEZJWE1FOiBTaG91bGQgdGhlIHNlcGFyYXRvciB0aGlj
a25lc3MgYW5kIHNwYWNlIGJlIHNjYWxlZCB1cCBieSBmb250U2NhbGU/CiAgICAgaW50IHNlcGFy
YXRvclNwYWNlID0gMjsgLy8gRGVsaWJlcmF0ZWx5IGlnbm9yZXMgem9vbSBzaW5jZSBpdCBsb29r
cyBuaWNlciBpZiBpdCBzdGF5cyB0aGluLgpAQCAtMTM2Nyw3ICsxMzY3LDcgQEAgdm9pZCBSZW5k
ZXJUaGVtZU1hYzo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLCBSZW5kZXJTdHkKIAogICAgIC8vIFNldCB0aGUgZm9yZWdyb3VuZCBjb2xvciB0byBibGFj
ayBvciBncmF5IHdoZW4gd2UgaGF2ZSB0aGUgYXF1YSBsb29rLgogICAgIC8vIENhc3QgdG8gUkdC
MzIgaXMgdG8gd29yayBhcm91bmQgYSBjb21waWxlciBidWcuCi0gICAgc3R5bGUuc2V0Q29sb3Io
ZSAmJiAhZS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkgPyBzdGF0aWNfY2FzdDxSR0JBMzI+KENv
bG9yOjpibGFjaykgOiBDb2xvcjo6ZGFya0dyYXkpOworICAgIHN0eWxlLnNldENvbG9yKGUgJiYg
IWUtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpID8gc3RhdGljX2Nhc3Q8UkdCQTMyPihPcHRpb25h
bFJHQkE6OmJsYWNrKSA6IE9wdGlvbmFsUkdCQTo6ZGFya0dyYXkpOwogCiAgICAgLy8gU2V0IHRo
ZSBidXR0b24ncyB2ZXJ0aWNhbCBzaXplLgogICAgIHNldFNpemVGcm9tRm9udChzdHlsZSwgbWVu
dUxpc3RCdXR0b25TaXplcygpKTsKQEAgLTIxMjIsOCArMjEyMiw4IEBAIGNvbnN0IENHRmxvYXQg
YXR0YWNobWVudEljb25TZWxlY3Rpb25Cb3JkZXJUaGlja25lc3MgPSAxOwogY29uc3QgQ0dGbG9h
dCBhdHRhY2htZW50SWNvbkJhY2tncm91bmRSYWRpdXMgPSAzOwogY29uc3QgQ0dGbG9hdCBhdHRh
Y2htZW50SWNvblRvVGl0bGVNYXJnaW4gPSAyOwogCi1zdGF0aWMgQ29sb3IgYXR0YWNobWVudElj
b25CYWNrZ3JvdW5kQ29sb3IoKSB7IHJldHVybiBDb2xvcigwLCAwLCAwLCAzMCk7IH0KLXN0YXRp
YyBDb2xvciBhdHRhY2htZW50SWNvbkJvcmRlckNvbG9yKCkgeyByZXR1cm4gQ29sb3IoMjU1LCAy
NTUsIDI1NSwgMTI1KTsgfQorc3RhdGljIE9wdGlvbmFsUkdCQSBhdHRhY2htZW50SWNvbkJhY2tn
cm91bmRDb2xvcigpIHsgcmV0dXJuIE9wdGlvbmFsUkdCQSgwLCAwLCAwLCAzMCk7IH0KK3N0YXRp
YyBPcHRpb25hbFJHQkEgYXR0YWNobWVudEljb25Cb3JkZXJDb2xvcigpIHsgcmV0dXJuIE9wdGlv
bmFsUkdCQSgyNTUsIDI1NSwgMjU1LCAxMjUpOyB9CiAKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVu
dFRpdGxlRm9udFNpemUgPSAxMjsKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFRpdGxlQmFja2dy
b3VuZFJhZGl1cyA9IDM7CkBAIC0yMTMxLDE5ICsyMTMxLDE5IEBAIGNvbnN0IENHRmxvYXQgYXR0
YWNobWVudFRpdGxlQmFja2dyb3VuZFBhZGRpbmcgPSAzOwogY29uc3QgQ0dGbG9hdCBhdHRhY2ht
ZW50VGl0bGVNYXhpbXVtV2lkdGggPSAxMDAgLSAoYXR0YWNobWVudFRpdGxlQmFja2dyb3VuZFBh
ZGRpbmcgKiAyKTsKIGNvbnN0IENGSW5kZXggYXR0YWNobWVudFRpdGxlTWF4aW11bUxpbmVDb3Vu
dCA9IDI7CiAKLXN0YXRpYyBDb2xvciBhdHRhY2htZW50VGl0bGVJbmFjdGl2ZUJhY2tncm91bmRD
b2xvcigpIHsgcmV0dXJuIENvbG9yKDIwNCwgMjA0LCAyMDQsIDI1NSk7IH0KLXN0YXRpYyBDb2xv
ciBhdHRhY2htZW50VGl0bGVJbmFjdGl2ZVRleHRDb2xvcigpIHsgcmV0dXJuIENvbG9yKDEwMCwg
MTAwLCAxMDAsIDI1NSk7IH0KK3N0YXRpYyBPcHRpb25hbFJHQkEgYXR0YWNobWVudFRpdGxlSW5h
Y3RpdmVCYWNrZ3JvdW5kQ29sb3IoKSB7IHJldHVybiBPcHRpb25hbFJHQkEoMjA0LCAyMDQsIDIw
NCwgMjU1KTsgfQorc3RhdGljIE9wdGlvbmFsUkdCQSBhdHRhY2htZW50VGl0bGVJbmFjdGl2ZVRl
eHRDb2xvcigpIHsgcmV0dXJuIE9wdGlvbmFsUkdCQSgxMDAsIDEwMCwgMTAwLCAyNTUpOyB9CiAK
IGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFN1YnRpdGxlRm9udFNpemUgPSAxMDsKLXN0YXRpYyBD
b2xvciBhdHRhY2htZW50U3VidGl0bGVUZXh0Q29sb3IoKSB7IHJldHVybiBDb2xvcig4MiwgMTQ1
LCAyMTQsIDI1NSk7IH0KK3N0YXRpYyBPcHRpb25hbFJHQkEgYXR0YWNobWVudFN1YnRpdGxlVGV4
dENvbG9yKCkgeyByZXR1cm4gT3B0aW9uYWxSR0JBKDgyLCAxNDUsIDIxNCwgMjU1KTsgfQogCiBj
b25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRQcm9ncmVzc0JhcldpZHRoID0gMzA7CiBjb25zdCBDR0Zs
b2F0IGF0dGFjaG1lbnRQcm9ncmVzc0JhckhlaWdodCA9IDU7CiBjb25zdCBDR0Zsb2F0IGF0dGFj
aG1lbnRQcm9ncmVzc0Jhck9mZnNldCA9IC05OwogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UHJv
Z3Jlc3NCYXJCb3JkZXJXaWR0aCA9IDE7Ci1zdGF0aWMgQ29sb3IgYXR0YWNobWVudFByb2dyZXNz
QmFyQmFja2dyb3VuZENvbG9yKCkgeyByZXR1cm4gQ29sb3IoMCwgMCwgMCwgODkpOyB9Ci1zdGF0
aWMgQ29sb3IgYXR0YWNobWVudFByb2dyZXNzQmFyRmlsbENvbG9yKCkgeyByZXR1cm4gQ29sb3Io
Q29sb3I6OndoaXRlKTsgfQotc3RhdGljIENvbG9yIGF0dGFjaG1lbnRQcm9ncmVzc0JhckJvcmRl
ckNvbG9yKCkgeyByZXR1cm4gQ29sb3IoMCwgMCwgMCwgMTI4KTsgfQorc3RhdGljIE9wdGlvbmFs
UkdCQSBhdHRhY2htZW50UHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3IoKSB7IHJldHVybiBPcHRp
b25hbFJHQkEoMCwgMCwgMCwgODkpOyB9CitzdGF0aWMgT3B0aW9uYWxSR0JBIGF0dGFjaG1lbnRQ
cm9ncmVzc0JhckZpbGxDb2xvcigpIHsgcmV0dXJuIE9wdGlvbmFsUkdCQShPcHRpb25hbFJHQkE6
OndoaXRlKTsgfQorc3RhdGljIE9wdGlvbmFsUkdCQSBhdHRhY2htZW50UHJvZ3Jlc3NCYXJCb3Jk
ZXJDb2xvcigpIHsgcmV0dXJuIE9wdGlvbmFsUkdCQSgwLCAwLCAwLCAxMjgpOyB9CiAKIGNvbnN0
IENHRmxvYXQgYXR0YWNobWVudE1hcmdpbiA9IDM7CiAKQEAgLTIzODYsNyArMjM4Niw3IEBAIHN0
YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudFRpdGxlQmFja2dyb3VuZChjb25zdCBSZW5kZXJBdHRh
Y2htZW50JiBhdHRhY2htZW50LCBHCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsYXlvdXQu
bGluZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIGJhY2tncm91bmRSZWN0cy5hcHBlbmQobGF5b3V0
LmxpbmVzW2ldLmJhY2tncm91bmRSZWN0KTsKIAotICAgIENvbG9yIGJhY2tncm91bmRDb2xvcjsK
KyAgICBPcHRpb25hbFJHQkEgYmFja2dyb3VuZENvbG9yOwogICAgIGlmIChhdHRhY2htZW50LmZy
YW1lKCkuc2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkpCiAgICAgICAgIGJhY2tncm91
bmRDb2xvciA9IGNvbnZlcnROU0NvbG9yVG9Db2xvcihbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3Rl
ZENvbnRyb2xDb2xvcl0pOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVTYWZhcmkuY3BwCmluZGV4IDU1YzA4ZDU2NTIzZTk1ZmRlNzI1NjNlY2UyNDg4
MWFmMTAwOTAzY2EuLmE1Zjg3YjZkMGZiZDI3YzdjOGEzNDZkZGIzNTNmNDQwODZmODAwMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcApAQCAt
MTUzLDI1ICsxNTMsMjUgQEAgUmVuZGVyVGhlbWVTYWZhcmk6On5SZW5kZXJUaGVtZVNhZmFyaSgp
CiB7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lU2FmYXJpOjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWVTYWZhcmk6
OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gQ29sb3IoMTgxLCAyMTMsIDI1NSk7CisgICAgcmV0dXJuIE9wdGlvbmFsUkdCQSgxODEs
IDIxMywgMjU1KTsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVTYWZhcmk6OnBsYXRmb3JtSW5hY3Rp
dmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlclRo
ZW1lU2FmYXJpOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gQ29sb3IoMjEyLCAyMTIsIDIxMik7CisgICAgcmV0dXJuIE9wdGlv
bmFsUkdCQSgyMTIsIDIxMiwgMjEyKTsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVTYWZhcmk6OmFj
dGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JB
IFJlbmRlclRoZW1lU2FmYXJpOjphY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9y
KCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkganVzdCBiZSBh
IGRhcmtlciB2ZXJzaW9uIG9mIHRoZSBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRD
b2xvcgotICAgIHJldHVybiBDb2xvcig1NiwgMTE3LCAyMTUpOworICAgIHJldHVybiBPcHRpb25h
bFJHQkEoNTYsIDExNywgMjE1KTsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVTYWZhcmk6OnBsYXRm
b3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlclRoZW1lU2FmYXJp
OjpwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgQ29sb3IgZm9j
dXNSaW5nQ29sb3I7CisgICAgc3RhdGljIE9wdGlvbmFsUkdCQSBmb2N1c1JpbmdDb2xvcjsKIAog
ICAgIGlmICghZm9jdXNSaW5nQ29sb3IuaXNWYWxpZCgpKSB7CiAgICAgICAgIGlmIChTVENvcHlU
aGVtZUNvbG9yUHRyKCkpIHsKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIFJlbmRlclRoZW1lU2Fm
YXJpOjp1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCB2YWx1ZUlE
LCBGbwogfQogCiBib29sIFJlbmRlclRoZW1lU2FmYXJpOjppc0NvbnRyb2xTdHlsZWQoY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCb3JkZXJEYXRhJiBib3JkZXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmlsbExheWVyJiBiYWNrZ3JvdW5kLCBj
b25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKSBjb25zdAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEZpbGxMYXllciYgYmFja2dyb3VuZCwgY29uc3QgT3B0aW9u
YWxSR0JBJiBiYWNrZ3JvdW5kQ29sb3IpIGNvbnN0CiB7CiAgICAgLy8gSWYgd2UgZGlkbid0IGZp
bmQgU2FmYXJpVGhlbWUuZGxsIHdlIHdvbid0IGJlIGFibGUgdG8gcGFpbnQgYW55IHRoZW1lZCBj
b250cm9scy4KICAgICBpZiAoIVNhZmFyaVRoZW1lTGlicmFyeSgpKQpAQCAtODExLDggKzgxMSw4
IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9u
cyhjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlCiAgICAgLy8gRHJhdyB0aGUgYXJyb3cKICAgICBw
YWludEluZm8uY29udGV4dC0+ZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3csIHRydWUpOwogCi0g
ICAgQ29sb3IgbGVmdFNlcGFyYXRvckNvbG9yKDAsIDAsIDAsIDQwKTsKLSAgICBDb2xvciByaWdo
dFNlcGFyYXRvckNvbG9yKDI1NSwgMjU1LCAyNTUsIDQwKTsKKyAgICBPcHRpb25hbFJHQkEgbGVm
dFNlcGFyYXRvckNvbG9yKDAsIDAsIDAsIDQwKTsKKyAgICBPcHRpb25hbFJHQkEgcmlnaHRTZXBh
cmF0b3JDb2xvcigyNTUsIDI1NSwgMjU1LCA0MCk7CiAKICAgICAvLyBGSVhNRTogU2hvdWxkIHRo
ZSBzZXBhcmF0b3IgdGhpY2tuZXNzIGFuZCBzcGFjZSBiZSBzY2FsZWQgdXAgYnkgZm9udFNjYWxl
PwogICAgIGludCBzZXBhcmF0b3JTcGFjZSA9IDI7CkBAIC04NDgsNyArODQ4LDcgQEAgdm9pZCBS
ZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyJiBzdHls
ZVJlc29sdmVyLCBSZW5kZXIKIAogICAgIC8vIFNldCB0aGUgZm9yZWdyb3VuZCBjb2xvciB0byBi
bGFjayBvciBncmF5IHdoZW4gd2UgaGF2ZSB0aGUgYXF1YSBsb29rLgogICAgIC8vIENhc3QgdG8g
UkdCMzIgaXMgdG8gd29yayBhcm91bmQgYSBjb21waWxlciBidWcuCi0gICAgc3R5bGUuc2V0Q29s
b3IoZSAmJiAhZS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkgPyBzdGF0aWNfY2FzdDxSR0JBMzI+
KENvbG9yOjpibGFjaykgOiBDb2xvcjo6ZGFya0dyYXkpOworICAgIHN0eWxlLnNldENvbG9yKGUg
JiYgIWUtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpID8gc3RhdGljX2Nhc3Q8UkdCQTMyPihPcHRp
b25hbFJHQkE6OmJsYWNrKSA6IE9wdGlvbmFsUkdCQTo6ZGFya0dyYXkpOwogCiAgICAgLy8gU2V0
IHRoZSBidXR0b24ncyB2ZXJ0aWNhbCBzaXplLgogICAgIHNldEJ1dHRvblNpemUoc3R5bGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuaAppbmRleCAzMmJl
YWQ1MTE2OGFjYWUxNzM3NjEyMWU1NDcyNzYxZDNjNjE2MjhlLi4zM2NjNGVjMDM0YjIyYmJkN2U0
MDIyNmRlNmU3Yjk0ZGQ2N2I5MjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVTYWZhcmkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVTYWZhcmkuaApAQCAtNjMsMTMgKzYzLDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0UmVwYWludFJlY3QoY29uc3QgUmVuZGVyT2JqZWN0JiwgSW50UmVjdCYpOwog
CiAgICAgdmlydHVhbCBib29sIGlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSYsIGNv
bnN0IEJvcmRlckRhdGEmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
RmlsbExheWVyJiwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikgY29uc3Q7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGaWxsTGF5ZXImLCBjb25zdCBPcHRpb25h
bFJHQkEmIGJhY2tncm91bmRDb2xvcikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRm
b3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBD
b2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBDb2xvciBhY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBPcHRpb25hbFJHQkEgcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBwbGF0Zm9y
bUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CisgICAgdmlydHVhbCBP
cHRpb25hbFJHQkEgYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0
OwogCi0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBPcHRpb25hbFJHQkEgcGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpIGNvbnN0Owog
CiAgICAgdmlydHVhbCBpbnQgbWluaW11bU1lbnVMaXN0U2l6ZShSZW5kZXJTdHlsZSYpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAppbmRleCA4
M2MyN2NjZmRkN2RhYWNhYjE3ZTI2ODgzNDhhMzNkMDU4N2RjYmMyLi5lYjBlYzJiMjU1Mjc1NDkz
OWQwYjZkZTFiYjIxMjI0YmEwOGMxNWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTI5NSwyNSArMjk1LDI1IEBAIGJvb2wgUmVuZGVyVGhlbWVX
aW46OnN1cHBvcnRzSG92ZXIoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdAogICAgIHJldHVybiBo
YXZlVGhlbWU7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lV2luOjpwbGF0Zm9ybUFjdGl2ZVNlbGVj
dGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWVXaW46
OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIHsKICAgICBD
T0xPUlJFRiBjb2xvciA9IEdldFN5c0NvbG9yKENPTE9SX0hJR0hMSUdIVCk7Ci0gICAgcmV0dXJu
IENvbG9yKEdldFJWYWx1ZShjb2xvciksIEdldEdWYWx1ZShjb2xvciksIEdldEJWYWx1ZShjb2xv
cikpOworICAgIHJldHVybiBPcHRpb25hbFJHQkEoR2V0UlZhbHVlKGNvbG9yKSwgR2V0R1ZhbHVl
KGNvbG9yKSwgR2V0QlZhbHVlKGNvbG9yKSk7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lV2luOjpw
bGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK09wdGlvbmFs
UkdCQSBSZW5kZXJUaGVtZVdpbjo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRD
b2xvcigpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjb2xvciBtYXRjaGVzIEZpcmVmb3guCi0gICAg
cmV0dXJuIENvbG9yKDE3NiwgMTc2LCAxNzYpOworICAgIHJldHVybiBPcHRpb25hbFJHQkEoMTc2
LCAxNzYsIDE3Nik7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lV2luOjpwbGF0Zm9ybUFjdGl2ZVNl
bGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWVX
aW46OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIHsKICAg
ICBDT0xPUlJFRiBjb2xvciA9IEdldFN5c0NvbG9yKENPTE9SX0hJR0hMSUdIVFRFWFQpOwotICAg
IHJldHVybiBDb2xvcihHZXRSVmFsdWUoY29sb3IpLCBHZXRHVmFsdWUoY29sb3IpLCBHZXRCVmFs
dWUoY29sb3IpKTsKKyAgICByZXR1cm4gT3B0aW9uYWxSR0JBKEdldFJWYWx1ZShjb2xvciksIEdl
dEdWYWx1ZShjb2xvciksIEdldEJWYWx1ZShjb2xvcikpOwogfQogCi1Db2xvciBSZW5kZXJUaGVt
ZVdpbjo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CitP
cHRpb25hbFJHQkEgUmVuZGVyVGhlbWVXaW46OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3IoKSBjb25zdAogewogICAgIHJldHVybiBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlv
bkZvcmVncm91bmRDb2xvcigpOwogfQpAQCAtMTAxNCwxNCArMTAxNCwxNCBAQCBzdGF0aWMgaW50
IGNzc1ZhbHVlSWRUb1N5c0NvbG9ySW5kZXgoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlkKQogICAgIH0K
IH0KIAotQ29sb3IgUmVuZGVyVGhlbWVXaW46OnN5c3RlbUNvbG9yKENTU1ZhbHVlSUQgY3NzVmFs
dWVJZCkgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5kZXJUaGVtZVdpbjo6c3lzdGVtQ29sb3IoQ1NT
VmFsdWVJRCBjc3NWYWx1ZUlkKSBjb25zdAogewogICAgIGludCBzeXNDb2xvckluZGV4ID0gY3Nz
VmFsdWVJZFRvU3lzQ29sb3JJbmRleChjc3NWYWx1ZUlkKTsKICAgICBpZiAoc3lzQ29sb3JJbmRl
eCA9PSAtMSkKICAgICAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpzeXN0ZW1Db2xvcihjc3NWYWx1
ZUlkKTsKIAogICAgIENPTE9SUkVGIGNvbG9yID0gR2V0U3lzQ29sb3Ioc3lzQ29sb3JJbmRleCk7
Ci0gICAgcmV0dXJuIENvbG9yKEdldFJWYWx1ZShjb2xvciksIEdldEdWYWx1ZShjb2xvciksIEdl
dEJWYWx1ZShjb2xvcikpOworICAgIHJldHVybiBPcHRpb25hbFJHQkEoR2V0UlZhbHVlKGNvbG9y
KSwgR2V0R1ZhbHVlKGNvbG9yKSwgR2V0QlZhbHVlKGNvbG9yKSk7CiB9CiAKICNpZiBFTkFCTEUo
VklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVX
aW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oCmluZGV4IGEw
MWY1MjI2ZmRhYTllYzRjNWM3MWRjMTRlZThkZjIzNGUyYmFmNGEuLjZlNWExYjBmMjkxYTI4Y2Fk
YTZmMjE5Yzk3NWQ4NDhiZDhmMTc0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZVdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZVdpbi5oCkBAIC01NywxMiArNTcsMTIgQEAgcHVibGljOgogICAgIC8vIEEgbWV0aG9k
IGFza2luZyBpZiB0aGUgdGhlbWUncyBjb250cm9scyBhY3R1YWxseSBjYXJlIGFib3V0IHJlZHJh
d2luZyB3aGVuIGhvdmVyZWQuCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSG92ZXIoY29uc3Qg
UmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZv
cm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIENvbG9yIHBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9u
Rm9yZWdyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0
Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCBPcHRpb25hbFJHQkEgcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBwbGF0Zm9y
bUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBPcHRpb25hbFJHQkEgcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29s
b3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBwbGF0Zm9ybUlu
YWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIENvbG9yIHN5c3RlbUNvbG9yKENTU1ZhbHVlSUQpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZpcnR1YWwgT3B0aW9uYWxSR0JBIHN5c3RlbUNvbG9yKENTU1ZhbHVlSUQpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgdmlydHVhbCBib29sIHBhaW50Q2hlY2tib3goY29uc3QgUmVuZGVyT2JqZWN0
JiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpIG92ZXJyaWRlCiAgICAg
eyByZXR1cm4gcGFpbnRCdXR0b24obywgaSwgcik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCBlMWM4NjczOWVjMGU2M2I2ZDEwZGY2ZWEw
ZGI3MThiNTBhMjcyMzUxLi5jZmQ3MzllZmFmNTdhZDI0ZGYzYzA4NzNiNTViMTAwMTUwNTFiYmE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBA
IC0yMzgsMjIgKzIzOCwyMiBAQCB2b2lkIFJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2Jq
ZWN0KFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJPYmplY3QmIG8sCiAgICAgICAgICAgICB0
cyA8PCAiICIgPDwgcXVvdGVBbmRFc2NhcGVOb25QcmludGFibGVzKGRvd25jYXN0PFJlbmRlckZp
bGVVcGxvYWRDb250cm9sPihvKS5maWxlVGV4dFZhbHVlKCkpOwogCiAgICAgICAgIGlmIChvLnBh
cmVudCgpKSB7Ci0gICAgICAgICAgICBDb2xvciBjb2xvciA9IG8uc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcik7CisgICAgICAgICAgICBPcHRpb25hbFJHQkEg
Y29sb3IgPSBvLnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3Ip
OwogICAgICAgICAgICAgaWYgKG8ucGFyZW50KCktPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5Q29sb3IpICE9IGNvbG9yKQogICAgICAgICAgICAgICAgIHRzIDw8ICIg
W2NvbG9yPSIgPDwgY29sb3IubmFtZUZvclJlbmRlclRyZWVBc1RleHQoKSA8PCAiXSI7CiAKICAg
ICAgICAgICAgIC8vIERvIG5vdCBkdW1wIGludmFsaWQgb3IgdHJhbnNwYXJlbnQgYmFja2dyb3Vu
ZHMsIHNpbmNlIHRoYXQgaXMgdGhlIGRlZmF1bHQuCi0gICAgICAgICAgICBDb2xvciBiYWNrZ3Jv
dW5kQ29sb3IgPSBvLnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKTsKKyAgICAgICAgICAgIE9wdGlvbmFsUkdCQSBiYWNrZ3JvdW5kQ29sb3Ig
PSBvLnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yKTsKICAgICAgICAgICAgIGlmIChvLnBhcmVudCgpLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikgIT0gYmFja2dyb3VuZENvbG9yCiAg
ICAgICAgICAgICAgICAgJiYgYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSAmJiBiYWNrZ3JvdW5k
Q29sb3IucmdiKCkpCiAgICAgICAgICAgICAgICAgdHMgPDwgIiBbYmdjb2xvcj0iIDw8IGJhY2tn
cm91bmRDb2xvci5uYW1lRm9yUmVuZGVyVHJlZUFzVGV4dCgpIDw8ICJdIjsKICAgICAgICAgICAg
IAotICAgICAgICAgICAgQ29sb3IgdGV4dEZpbGxDb2xvciA9IG8uc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yKTsKKyAgICAgICAgICAg
IE9wdGlvbmFsUkdCQSB0ZXh0RmlsbENvbG9yID0gby5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IpOwogICAgICAgICAgICAgaWYgKG8u
cGFyZW50KCktPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5V2Via2l0
VGV4dEZpbGxDb2xvcikgIT0gdGV4dEZpbGxDb2xvcgogICAgICAgICAgICAgICAgICYmIHRleHRG
aWxsQ29sb3IuaXNWYWxpZCgpICYmIHRleHRGaWxsQ29sb3IgIT0gY29sb3IgJiYgdGV4dEZpbGxD
b2xvci5yZ2IoKSkKICAgICAgICAgICAgICAgICB0cyA8PCAiIFt0ZXh0RmlsbENvbG9yPSIgPDwg
dGV4dEZpbGxDb2xvci5uYW1lRm9yUmVuZGVyVHJlZUFzVGV4dCgpIDw8ICJdIjsKIAotICAgICAg
ICAgICAgQ29sb3IgdGV4dFN0cm9rZUNvbG9yID0gby5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcik7CisgICAgICAgICAgICBPcHRp
b25hbFJHQkEgdGV4dFN0cm9rZUNvbG9yID0gby5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcik7CiAgICAgICAgICAgICBpZiAoby5w
YXJlbnQoKS0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlXZWJraXRU
ZXh0U3Ryb2tlQ29sb3IpICE9IHRleHRTdHJva2VDb2xvcgogICAgICAgICAgICAgICAgICYmIHRl
eHRTdHJva2VDb2xvci5pc1ZhbGlkKCkgJiYgdGV4dFN0cm9rZUNvbG9yICE9IGNvbG9yICYmIHRl
eHRTdHJva2VDb2xvci5yZ2IoKSkKICAgICAgICAgICAgICAgICB0cyA8PCAiIFt0ZXh0U3Ryb2tl
Q29sb3I9IiA8PCB0ZXh0U3Ryb2tlQ29sb3IubmFtZUZvclJlbmRlclRyZWVBc1RleHQoKSA8PCAi
XSI7CkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRl
ck9iamVjdChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLAogICAgICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgdHMgPDwgIiAoIiA8PCBib3guYm9yZGVyVG9wKCkg
PDwgInB4ICI7CiAgICAgICAgICAgICAgICAgcHJpbnRCb3JkZXJTdHlsZSh0cywgby5zdHlsZSgp
LmJvcmRlclRvcFN0eWxlKCkpOwotICAgICAgICAgICAgICAgIENvbG9yIGNvbCA9IG8uc3R5bGUo
KS5ib3JkZXJUb3BDb2xvcigpOworICAgICAgICAgICAgICAgIE9wdGlvbmFsUkdCQSBjb2wgPSBv
LnN0eWxlKCkuYm9yZGVyVG9wQ29sb3IoKTsKICAgICAgICAgICAgICAgICBpZiAoIWNvbC5pc1Zh
bGlkKCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbCA9IG8uc3R5bGUoKS5jb2xvcigpOwogICAg
ICAgICAgICAgICAgIHRzIDw8IGNvbC5uYW1lRm9yUmVuZGVyVHJlZUFzVGV4dCgpIDw8ICIpIjsK
QEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIFJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2Jq
ZWN0KFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJPYmplY3QmIG8sCiAgICAgICAgICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHRzIDw8ICIgKCIgPDwgYm94LmJvcmRlclJp
Z2h0KCkgPDwgInB4ICI7CiAgICAgICAgICAgICAgICAgICAgIHByaW50Qm9yZGVyU3R5bGUodHMs
IG8uc3R5bGUoKS5ib3JkZXJSaWdodFN0eWxlKCkpOwotICAgICAgICAgICAgICAgICAgICBDb2xv
ciBjb2wgPSBvLnN0eWxlKCkuYm9yZGVyUmlnaHRDb2xvcigpOworICAgICAgICAgICAgICAgICAg
ICBPcHRpb25hbFJHQkEgY29sID0gby5zdHlsZSgpLmJvcmRlclJpZ2h0Q29sb3IoKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFjb2wuaXNWYWxpZCgpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgY29sID0gby5zdHlsZSgpLmNvbG9yKCk7CiAgICAgICAgICAgICAgICAgICAgIHRzIDw8IGNv
bC5uYW1lRm9yUmVuZGVyVHJlZUFzVGV4dCgpIDw8ICIpIjsKQEAgLTMwMiw3ICszMDIsNyBAQCB2
b2lkIFJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBSZW5kZXJPYmplY3QmIG8sCiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgIHRzIDw8ICIgKCIgPDwgYm94LmJvcmRlckJvdHRvbSgpIDw8ICJweCAiOwogICAg
ICAgICAgICAgICAgICAgICBwcmludEJvcmRlclN0eWxlKHRzLCBvLnN0eWxlKCkuYm9yZGVyQm90
dG9tU3R5bGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIENvbG9yIGNvbCA9IG8uc3R5bGUoKS5i
b3JkZXJCb3R0b21Db2xvcigpOworICAgICAgICAgICAgICAgICAgICBPcHRpb25hbFJHQkEgY29s
ID0gby5zdHlsZSgpLmJvcmRlckJvdHRvbUNvbG9yKCk7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICghY29sLmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbCA9IG8uc3R5bGUo
KS5jb2xvcigpOwogICAgICAgICAgICAgICAgICAgICB0cyA8PCBjb2wubmFtZUZvclJlbmRlclRy
ZWVBc1RleHQoKSA8PCAiKSI7CkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCBSZW5kZXJUcmVlQXNU
ZXh0Ojp3cml0ZVJlbmRlck9iamVjdChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0
JiBvLAogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICB0cyA8PCAi
ICgiIDw8IGJveC5ib3JkZXJMZWZ0KCkgPDwgInB4ICI7CiAgICAgICAgICAgICAgICAgICAgIHBy
aW50Qm9yZGVyU3R5bGUodHMsIG8uc3R5bGUoKS5ib3JkZXJMZWZ0U3R5bGUoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIENvbG9yIGNvbCA9IG8uc3R5bGUoKS5ib3JkZXJMZWZ0Q29sb3IoKTsKKyAg
ICAgICAgICAgICAgICAgICAgT3B0aW9uYWxSR0JBIGNvbCA9IG8uc3R5bGUoKS5ib3JkZXJMZWZ0
Q29sb3IoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb2wuaXNWYWxpZCgpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgY29sID0gby5zdHlsZSgpLmNvbG9yKCk7CiAgICAgICAgICAgICAg
ICAgICAgIHRzIDw8IGNvbC5uYW1lRm9yUmVuZGVyVHJlZUFzVGV4dCgpIDw8ICIpIjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA0MjhjMTYwMjliYzA3NWY2NDhj
MjJkYTU3MWU0Y2M4N2JjZjljOTA3Li5kMDMyNTFkMTE0NWJhY2M4YmM0MjVlZmI5Nzg3MWM2MGFl
MDhjM2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC01OTQs
NyArNTk0LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiAgICAgfQogCiAgICAgYm9vbCBiYWNr
Z3JvdW5kU2hvdWxkRXh0ZW5kQmV5b25kUGFnZSA9IGZyYW1lVmlldygpLmZyYW1lKCkuc2V0dGlu
Z3MoKS5iYWNrZ3JvdW5kU2hvdWxkRXh0ZW5kQmV5b25kUGFnZSgpOwotICAgIGNvbXBvc2l0b3Io
KS5zZXRSb290RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZFNob3VsZEV4dGVuZEJl
eW9uZFBhZ2UgPyBmcmFtZVZpZXcoKS5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpIDogQ29sb3Io
KSk7CisgICAgY29tcG9zaXRvcigpLnNldFJvb3RFeHRlbmRlZEJhY2tncm91bmRDb2xvcihiYWNr
Z3JvdW5kU2hvdWxkRXh0ZW5kQmV5b25kUGFnZSA/IGZyYW1lVmlldygpLmRvY3VtZW50QmFja2dy
b3VuZENvbG9yKCkgOiBPcHRpb25hbFJHQkEoKSk7CiAKICAgICBQYWdlKiBwYWdlID0gZG9jdW1l
bnQoKS5wYWdlKCk7CiAgICAgZmxvYXQgcGFnZVNjYWxlRmFjdG9yID0gcGFnZSA/IHBhZ2UtPnBh
Z2VTY2FsZUZhY3RvcigpIDogMTsKQEAgLTYxMiw4ICs2MTIsOCBAQCB2b2lkIFJlbmRlclZpZXc6
OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JikKICAgICBpZiAoZnJhbWVWaWV3KCkuaXNUcmFuc3BhcmVudCgpKSAvLyBGSVhNRTogVGhp
cyBuZWVkcyB0byBiZSBkeW5hbWljLiBXZSBzaG91bGQgYmUgYWJsZSB0byBnbyBiYWNrIHRvIGJs
aXR0aW5nIGlmIHdlIGV2ZXIgc3RvcCBiZWluZyB0cmFuc3BhcmVudC4KICAgICAgICAgZnJhbWVW
aWV3KCkuc2V0Q2Fubm90QmxpdFRvV2luZG93KCk7IC8vIFRoZSBwYXJlbnQgbXVzdCBzaG93IGJl
aGluZCB0aGUgY2hpbGQuCiAgICAgZWxzZSB7Ci0gICAgICAgIENvbG9yIGRvY3VtZW50QmFja2dy
b3VuZENvbG9yID0gZnJhbWVWaWV3KCkuZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKTsKLSAgICAg
ICAgQ29sb3IgYmFja2dyb3VuZENvbG9yID0gKGJhY2tncm91bmRTaG91bGRFeHRlbmRCZXlvbmRQ
YWdlICYmIGRvY3VtZW50QmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkgPyBkb2N1bWVudEJhY2tn
cm91bmRDb2xvciA6IGZyYW1lVmlldygpLmJhc2VCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAg
T3B0aW9uYWxSR0JBIGRvY3VtZW50QmFja2dyb3VuZENvbG9yID0gZnJhbWVWaWV3KCkuZG9jdW1l
bnRCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAgT3B0aW9uYWxSR0JBIGJhY2tncm91bmRDb2xv
ciA9IChiYWNrZ3JvdW5kU2hvdWxkRXh0ZW5kQmV5b25kUGFnZSAmJiBkb2N1bWVudEJhY2tncm91
bmRDb2xvci5pc1ZhbGlkKCkpID8gZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IgOiBmcmFtZVZpZXco
KS5iYXNlQmFja2dyb3VuZENvbG9yKCk7CiAgICAgICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IuYWxw
aGEoKSkgewogICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVyYXRvciA9
IHBhaW50SW5mby5jb250ZXh0LT5jb21wb3NpdGVPcGVyYXRpb24oKTsKICAgICAgICAgICAgIHBh
aW50SW5mby5jb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0
aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0
aW9ucy5jcHAKaW5kZXggOWVmNWViMDgwMWIyZTk5Zjc2ODlmNzYwYmVjMmNkNzg1NTBjYmRjYy4u
Y2MxNDAzNDcyNTViOTdmYWY5Mjk3MThlNzdhNmMxODVmMjhlZTQzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcApA
QCAtNTMsOCArNTMsOCBAQCBzdGF0aWMgdm9pZCBwYWludERlYnVnQm9yZGVycyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIExheW91dFJlY3QgYm9yZGVyUmVjdCwgYwogICAgIGlmIChzbmFwcGVk
UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihD
b2xvcigwLCAyNTUsIDApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBjb250ZXh0LnNldEZp
bGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNv
bnRleHQuc2V0U3Ryb2tlQ29sb3IoT3B0aW9uYWxSR0JBKDAsIDI1NSwgMCksIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKE9wdGlvbmFsUkdCQTo6dHJhbnNw
YXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGNvbnRleHQuZHJhd1JlY3Qoc25hcHBl
ZFJlY3QpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBh
aW50U3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNw
cAppbmRleCAyMjI2ZWNkZjY5ZTUzYmJmNmJjODlkZTlkYmViYzczNjAzOTU2YTMxLi4zOGQ0YjYw
OWRmNDNiZjA0ZWIyOThkYmVmZWZhYWIxODc3MjllNDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgVGV4dFBhaW50U3R5
bGU6OlRleHRQYWludFN0eWxlKENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKIH0KIAotVGV4dFBh
aW50U3R5bGU6OlRleHRQYWludFN0eWxlKENvbG9yIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UpCitUZXh0UGFpbnRTdHlsZTo6VGV4dFBhaW50U3R5bGUoT3B0aW9uYWxSR0JBIGNvbG9yLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UpCiAgICAgOiBjb2xvclNwYWNlKGNvbG9yU3BhY2UpCiAgICAg
LCBmaWxsQ29sb3IoY29sb3IpCiAgICAgLCBzdHJva2VDb2xvcihjb2xvcikKQEAgLTU5LDE1ICs1
OSwxNSBAQCBUZXh0UGFpbnRTdHlsZTo6VGV4dFBhaW50U3R5bGUoQ29sb3IgY29sb3IsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKIHsKIH0KIAotc3RhdGljIENvbG9yIGFkanVzdENvbG9yRm9yVmlz
aWJpbGl0eU9uQmFja2dyb3VuZChDb2xvciB0ZXh0Q29sb3IsIENvbG9yIGJhY2tncm91bmRDb2xv
cikKK3N0YXRpYyBPcHRpb25hbFJHQkEgYWRqdXN0Q29sb3JGb3JWaXNpYmlsaXR5T25CYWNrZ3Jv
dW5kKE9wdGlvbmFsUkdCQSB0ZXh0Q29sb3IsIE9wdGlvbmFsUkdCQSBiYWNrZ3JvdW5kQ29sb3Ip
CiB7CiAgICAgaW50IGQgPSBkaWZmZXJlbmNlU3F1YXJlZCh0ZXh0Q29sb3IsIGJhY2tncm91bmRD
b2xvcik7CiAgICAgLy8gU2VtaS1hcmJpdHJhcmlseSBjaG9zZSA2NTAyNSAoMjU1XjIpIHZhbHVl
IGhlcmUgYWZ0ZXIgYSBmZXcgdGVzdHMuCiAgICAgaWYgKGQgPiA2NTAyNSkKICAgICAgICAgcmV0
dXJuIHRleHRDb2xvcjsKIAotICAgIGludCBkaXN0YW5jZUZyb21XaGl0ZSA9IGRpZmZlcmVuY2VT
cXVhcmVkKHRleHRDb2xvciwgQ29sb3I6OndoaXRlKTsKLSAgICBpbnQgZGlzdGFuY2VGcm9tQmxh
Y2sgPSBkaWZmZXJlbmNlU3F1YXJlZCh0ZXh0Q29sb3IsIENvbG9yOjpibGFjayk7CisgICAgaW50
IGRpc3RhbmNlRnJvbVdoaXRlID0gZGlmZmVyZW5jZVNxdWFyZWQodGV4dENvbG9yLCBPcHRpb25h
bFJHQkE6OndoaXRlKTsKKyAgICBpbnQgZGlzdGFuY2VGcm9tQmxhY2sgPSBkaWZmZXJlbmNlU3F1
YXJlZCh0ZXh0Q29sb3IsIE9wdGlvbmFsUkdCQTo6YmxhY2spOwogICAgIGlmIChkaXN0YW5jZUZy
b21XaGl0ZSA8IGRpc3RhbmNlRnJvbUJsYWNrKQogICAgICAgICByZXR1cm4gdGV4dENvbG9yLmRh
cmsoKTsKIApAQCAtMTEwLDE5ICsxMTAsMTkgQEAgVGV4dFBhaW50U3R5bGUgY29tcHV0ZVRleHRQ
YWludFN0eWxlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVuZGVyU3R5bGUmIGxpbmUKIAog
ICAgIC8vIE1ha2UgdGhlIHRleHQgZmlsbCBjb2xvciBsZWdpYmxlIGFnYWluc3QgYSB3aGl0ZSBi
YWNrZ3JvdW5kCiAgICAgaWYgKGZvcmNlQmFja2dyb3VuZFRvV2hpdGUpCi0gICAgICAgIHBhaW50
U3R5bGUuZmlsbENvbG9yID0gYWRqdXN0Q29sb3JGb3JWaXNpYmlsaXR5T25CYWNrZ3JvdW5kKHBh
aW50U3R5bGUuZmlsbENvbG9yLCBDb2xvcjo6d2hpdGUpOworICAgICAgICBwYWludFN0eWxlLmZp
bGxDb2xvciA9IGFkanVzdENvbG9yRm9yVmlzaWJpbGl0eU9uQmFja2dyb3VuZChwYWludFN0eWxl
LmZpbGxDb2xvciwgT3B0aW9uYWxSR0JBOjp3aGl0ZSk7CiAKICAgICBwYWludFN0eWxlLnN0cm9r
ZUNvbG9yID0gbGluZVN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtp
dFRleHRTdHJva2VDb2xvcik7CiAKICAgICAvLyBNYWtlIHRoZSB0ZXh0IHN0cm9rZSBjb2xvciBs
ZWdpYmxlIGFnYWluc3QgYSB3aGl0ZSBiYWNrZ3JvdW5kCiAgICAgaWYgKGZvcmNlQmFja2dyb3Vu
ZFRvV2hpdGUpCi0gICAgICAgIHBhaW50U3R5bGUuc3Ryb2tlQ29sb3IgPSBhZGp1c3RDb2xvckZv
clZpc2liaWxpdHlPbkJhY2tncm91bmQocGFpbnRTdHlsZS5zdHJva2VDb2xvciwgQ29sb3I6Ondo
aXRlKTsKKyAgICAgICAgcGFpbnRTdHlsZS5zdHJva2VDb2xvciA9IGFkanVzdENvbG9yRm9yVmlz
aWJpbGl0eU9uQmFja2dyb3VuZChwYWludFN0eWxlLnN0cm9rZUNvbG9yLCBPcHRpb25hbFJHQkE6
OndoaXRlKTsKIAogICAgIHBhaW50U3R5bGUuZW1waGFzaXNNYXJrQ29sb3IgPSBsaW5lU3R5bGUu
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3Ip
OwogCiAgICAgLy8gTWFrZSB0aGUgdGV4dCBzdHJva2UgY29sb3IgbGVnaWJsZSBhZ2FpbnN0IGEg
d2hpdGUgYmFja2dyb3VuZAogICAgIGlmIChmb3JjZUJhY2tncm91bmRUb1doaXRlKQotICAgICAg
ICBwYWludFN0eWxlLmVtcGhhc2lzTWFya0NvbG9yID0gYWRqdXN0Q29sb3JGb3JWaXNpYmlsaXR5
T25CYWNrZ3JvdW5kKHBhaW50U3R5bGUuZW1waGFzaXNNYXJrQ29sb3IsIENvbG9yOjp3aGl0ZSk7
CisgICAgICAgIHBhaW50U3R5bGUuZW1waGFzaXNNYXJrQ29sb3IgPSBhZGp1c3RDb2xvckZvclZp
c2liaWxpdHlPbkJhY2tncm91bmQocGFpbnRTdHlsZS5lbXBoYXNpc01hcmtDb2xvciwgT3B0aW9u
YWxSR0JBOjp3aGl0ZSk7CiAKICAgICByZXR1cm4gcGFpbnRTdHlsZTsKIH0KQEAgLTEzNiwxNCAr
MTM2LDE0IEBAIFRleHRQYWludFN0eWxlIGNvbXB1dGVUZXh0U2VsZWN0aW9uUGFpbnRTdHlsZShj
b25zdCBUZXh0UGFpbnRTdHlsZSYgdGV4dFBhaW50U3R5CiAgICAgVGV4dFBhaW50U3R5bGUgc2Vs
ZWN0aW9uUGFpbnRTdHlsZSA9IHRleHRQYWludFN0eWxlOwogCiAjaWYgRU5BQkxFKFRFWFRfU0VM
RUNUSU9OKQotICAgIENvbG9yIGZvcmVncm91bmQgPSBwYWludEluZm8uZm9yY2VUZXh0Q29sb3Io
KSA/IHBhaW50SW5mby5mb3JjZWRUZXh0Q29sb3IoKSA6IHJlbmRlcmVyLnNlbGVjdGlvbkZvcmVn
cm91bmRDb2xvcigpOworICAgIE9wdGlvbmFsUkdCQSBmb3JlZ3JvdW5kID0gcGFpbnRJbmZvLmZv
cmNlVGV4dENvbG9yKCkgPyBwYWludEluZm8uZm9yY2VkVGV4dENvbG9yKCkgOiByZW5kZXJlci5z
ZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKTsKICAgICBpZiAoZm9yZWdyb3VuZC5pc1ZhbGlkKCkg
JiYgZm9yZWdyb3VuZCAhPSBzZWxlY3Rpb25QYWludFN0eWxlLmZpbGxDb2xvcikgewogICAgICAg
ICBpZiAoIXBhaW50U2VsZWN0ZWRUZXh0T25seSkKICAgICAgICAgICAgIHBhaW50U2VsZWN0ZWRU
ZXh0U2VwYXJhdGVseSA9IHRydWU7CiAgICAgICAgIHNlbGVjdGlvblBhaW50U3R5bGUuZmlsbENv
bG9yID0gZm9yZWdyb3VuZDsKICAgICB9CiAKLSAgICBDb2xvciBlbXBoYXNpc01hcmtGb3JlZ3Jv
dW5kID0gcGFpbnRJbmZvLmZvcmNlVGV4dENvbG9yKCkgPyBwYWludEluZm8uZm9yY2VkVGV4dENv
bG9yKCkgOiByZW5kZXJlci5zZWxlY3Rpb25FbXBoYXNpc01hcmtDb2xvcigpOworICAgIE9wdGlv
bmFsUkdCQSBlbXBoYXNpc01hcmtGb3JlZ3JvdW5kID0gcGFpbnRJbmZvLmZvcmNlVGV4dENvbG9y
KCkgPyBwYWludEluZm8uZm9yY2VkVGV4dENvbG9yKCkgOiByZW5kZXJlci5zZWxlY3Rpb25FbXBo
YXNpc01hcmtDb2xvcigpOwogICAgIGlmIChlbXBoYXNpc01hcmtGb3JlZ3JvdW5kLmlzVmFsaWQo
KSAmJiBlbXBoYXNpc01hcmtGb3JlZ3JvdW5kICE9IHNlbGVjdGlvblBhaW50U3R5bGUuZW1waGFz
aXNNYXJrQ29sb3IpIHsKICAgICAgICAgaWYgKCFwYWludFNlbGVjdGVkVGV4dE9ubHkpCiAgICAg
ICAgICAgICBwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkgPSB0cnVlOwpAQCAtMTY1LDcgKzE2
NSw3IEBAIFRleHRQYWludFN0eWxlIGNvbXB1dGVUZXh0U2VsZWN0aW9uUGFpbnRTdHlsZShjb25z
dCBUZXh0UGFpbnRTdHlsZSYgdGV4dFBhaW50U3R5CiAgICAgICAgICAgICBzZWxlY3Rpb25QYWlu
dFN0eWxlLnN0cm9rZVdpZHRoID0gc3Ryb2tlV2lkdGg7CiAgICAgICAgIH0KIAotICAgICAgICBD
b2xvciBzdHJva2UgPSBwYWludEluZm8uZm9yY2VUZXh0Q29sb3IoKSA/IHBhaW50SW5mby5mb3Jj
ZWRUZXh0Q29sb3IoKSA6IHBzZXVkb1N0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJv
cGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IpOworICAgICAgICBPcHRpb25hbFJHQkEgc3Ryb2tl
ID0gcGFpbnRJbmZvLmZvcmNlVGV4dENvbG9yKCkgPyBwYWludEluZm8uZm9yY2VkVGV4dENvbG9y
KCkgOiBwc2V1ZG9TdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5V2Via2l0
VGV4dFN0cm9rZUNvbG9yKTsKICAgICAgICAgaWYgKHN0cm9rZSAhPSBzZWxlY3Rpb25QYWludFN0
eWxlLnN0cm9rZUNvbG9yKSB7CiAgICAgICAgICAgICBpZiAoIXBhaW50U2VsZWN0ZWRUZXh0T25s
eSkKICAgICAgICAgICAgICAgICBwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkgPSB0cnVlOwpA
QCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgdXBkYXRlR3JhcGhpY3NDb250ZXh0KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFBhaW50U3R5bGUmIHBhaW50CiAgICAgICAgIG1vZGUg
PSBuZXdNb2RlOwogICAgIH0KIAotICAgIENvbG9yIGZpbGxDb2xvciA9IGZpbGxDb2xvclR5cGUg
PT0gVXNlRW1waGFzaXNNYXJrQ29sb3IgPyBwYWludFN0eWxlLmVtcGhhc2lzTWFya0NvbG9yIDog
cGFpbnRTdHlsZS5maWxsQ29sb3I7CisgICAgT3B0aW9uYWxSR0JBIGZpbGxDb2xvciA9IGZpbGxD
b2xvclR5cGUgPT0gVXNlRW1waGFzaXNNYXJrQ29sb3IgPyBwYWludFN0eWxlLmVtcGhhc2lzTWFy
a0NvbG9yIDogcGFpbnRTdHlsZS5maWxsQ29sb3I7CiAgICAgaWYgKG1vZGUgJiBUZXh0TW9kZUZp
bGwgJiYgKGZpbGxDb2xvciAhPSBjb250ZXh0LmZpbGxDb2xvcigpIHx8IHBhaW50U3R5bGUuY29s
b3JTcGFjZSAhPSBjb250ZXh0LmZpbGxDb2xvclNwYWNlKCkpKQogICAgICAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihmaWxsQ29sb3IsIHBhaW50U3R5bGUuY29sb3JTcGFjZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKaW5kZXggOTk0ZTQ1ZGNmNGU4YTQ4OTg4
NGNkY2JjMjNiMWMyMDZiNzBhOTgwNi4uODcwNzVjYmE1YTFhNjQ3ODk5ZTg3ZmIxYTIyMzE1Yzg2
YTBjYjk2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0
eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKQEAg
LTQwLDEyICs0MCwxMiBAQCBzdHJ1Y3QgUGFpbnRJbmZvOwogCiBzdHJ1Y3QgVGV4dFBhaW50U3R5
bGUgewogICAgIFRleHRQYWludFN0eWxlKENvbG9yU3BhY2UpOwotICAgIFRleHRQYWludFN0eWxl
KENvbG9yLCBDb2xvclNwYWNlKTsKKyAgICBUZXh0UGFpbnRTdHlsZShPcHRpb25hbFJHQkEsIENv
bG9yU3BhY2UpOwogCiAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlOwotICAgIENvbG9yIGZpbGxD
b2xvcjsKLSAgICBDb2xvciBzdHJva2VDb2xvcjsKLSAgICBDb2xvciBlbXBoYXNpc01hcmtDb2xv
cjsKKyAgICBPcHRpb25hbFJHQkEgZmlsbENvbG9yOworICAgIE9wdGlvbmFsUkdCQSBzdHJva2VD
b2xvcjsKKyAgICBPcHRpb25hbFJHQkEgZW1waGFzaXNNYXJrQ29sb3I7CiAgICAgZmxvYXQgc3Ry
b2tlV2lkdGg7CiAjaWYgRU5BQkxFKExFVFRFUlBSRVNTKQogICAgIGJvb2wgdXNlTGV0dGVycHJl
c3NFZmZlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcAppbmRleCBl
NDI4NmMwNDEwM2NjYjc5YjRlNmU2NmI3YmJiNTQyNmZjMmQ2ODczLi43NDYyYTA5ODVhZDA0YTdl
MzNkNmQ5OWZlODgyY2Q4OGRkMTg5MjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
UGFpbnRlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgU2hhZG93QXBwbGllcjo6U2hhZG93QXBwbGll
cihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywKICAg
ICBpbnQgc2hhZG93WSA9IG9yaWVudGF0aW9uID09IEhvcml6b250YWwgPyBzaGFkb3ctPnkoKSA6
IC1zaGFkb3ctPngoKTsKICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0KHNoYWRvd1gsIHNoYWRv
d1kpOwogICAgIGludCBzaGFkb3dSYWRpdXMgPSBzaGFkb3ctPnJhZGl1cygpOwotICAgIGNvbnN0
IENvbG9yJiBzaGFkb3dDb2xvciA9IHNoYWRvdy0+Y29sb3IoKTsKKyAgICBjb25zdCBPcHRpb25h
bFJHQkEmIHNoYWRvd0NvbG9yID0gc2hhZG93LT5jb2xvcigpOwogCiAgICAgLy8gV2hlbiBkcmF3
aW5nIHNoYWRvd3MsIHdlIHVzdWFsbHkgY2xpcCB0aGUgY29udGV4dCB0byB0aGUgYXJlYSB0aGUg
c2hhZG93IHdpbGwgcmVzaWRlLCBhbmQgdGhlbgogICAgIC8vIGRyYXcgdGhlIHRleHQgaXRzZWxm
IG91dHNpZGUgdGhlIGNsaXBwZWQgYXJlYSAoc28gb25seSB0aGUgc2hhZG93IHNob3dzIHVwKS4g
SG93ZXZlciwgd2UgY2FuCkBAIC0xMTcsMTIgKzExNywxMiBAQCBzdGF0aWMgdm9pZCBwYWludFRl
eHRXaXRoU2hhZG93cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRl
JiBmbwogICAgIGludCBlbXBoYXNpc01hcmtPZmZzZXQsIGludCBzdGFydE9mZnNldCwgaW50IGVu
ZE9mZnNldCwgaW50IHRydW5jYXRpb25Qb2ludCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdp
biwgY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0LAogICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRv
dywgYm9vbCBzdHJva2VkLCBib29sIGhvcml6b250YWwpCiB7Ci0gICAgQ29sb3IgZmlsbENvbG9y
ID0gY29udGV4dC5maWxsQ29sb3IoKTsKKyAgICBPcHRpb25hbFJHQkEgZmlsbENvbG9yID0gY29u
dGV4dC5maWxsQ29sb3IoKTsKICAgICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlID0gY29udGV4
dC5maWxsQ29sb3JTcGFjZSgpOwogICAgIGJvb2wgb3BhcXVlID0gIWZpbGxDb2xvci5oYXNBbHBo
YSgpOwogICAgIGJvb2wgbGFzdFNoYWRvd0l0ZXJhdGlvblNob3VsZERyYXdUZXh0ID0gIXN0cm9r
ZWQgJiYgb3BhcXVlOwogICAgIGlmICghb3BhcXVlKQotICAgICAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihDb2xvcjo6YmxhY2ssIGZpbGxDb2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4dC5zZXRG
aWxsQ29sb3IoT3B0aW9uYWxSR0JBOjpibGFjaywgZmlsbENvbG9yU3BhY2UpOwogCiAgICAgZG8g
ewogICAgICAgICBTaGFkb3dBcHBsaWVyIHNoYWRvd0FwcGxpZXIoY29udGV4dCwgc2hhZG93LCBi
b3hSZWN0LCBsYXN0U2hhZG93SXRlcmF0aW9uU2hvdWxkRHJhd1RleHQsIG9wYXF1ZSwgaG9yaXpv
bnRhbCA/IEhvcml6b250YWwgOiBWZXJ0aWNhbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCmluZGV4IDdhYTU0ZmI4YzIx
M2QwMzhlMTk4MzFiZDkyNTExMGExODdjZTRlNGYuLjNlMDFiMWIyODIzZDY1MTZjZmU0YzA3ZTYw
YmNmOGE0MjhkNzk5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBSZW5k
ZXJNYXRoTUxCbG9jazo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQpCiAgICAgCiAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3Mo
MS4wZik7CiAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0g
ICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAwLCAyNTUpLCBDb2xvclNw
YWNlU1JHQik7CisgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihPcHRpb25hbFJHQkEo
MCwgMCwgMjU1KSwgQ29sb3JTcGFjZVNSR0IpOwogICAgIAogICAgIGluZm8uY29udGV4dC0+ZHJh
d0xpbmUoYWRqdXN0ZWRQYWludE9mZnNldCwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54
KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkp
OwogICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNl
dC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0Lnko
KSksIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0
V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRIZWln
aHQoKSkpOwpAQCAtMTEzLDEzICsxMTMsMTMgQEAgdm9pZCBSZW5kZXJNYXRoTUxCbG9jazo6cGFp
bnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAg
CiAgICAgaW50IHRvcFN0YXJ0ID0gcGFkZGluZ1RvcCgpOwogICAgIAotICAgIGluZm8uY29udGV4
dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMjU1LCAwKSwgQ29sb3JTcGFjZVNSR0IpOworICAg
IGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoT3B0aW9uYWxSR0JBKDAsIDI1NSwgMCksIENv
bG9yU3BhY2VTUkdCKTsKICAgICAKICAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50
KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHRvcFN0
YXJ0KSwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZz
ZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHRvcFN0YXJ0KSk7CiAgICAgCiAg
ICAgaW50IGJhc2VsaW5lID0gcm91bmRUb0ludChiYXNlbGluZVBvc2l0aW9uKEFscGhhYmV0aWNC
YXNlbGluZSwgdHJ1ZSwgSG9yaXpvbnRhbExpbmUpKTsKICAgICAKLSAgICBpbmZvLmNvbnRleHQt
PnNldFN0cm9rZUNvbG9yKENvbG9yKDI1NSwgMCwgMCksIENvbG9yU3BhY2VTUkdCKTsKKyAgICBp
bmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKE9wdGlvbmFsUkdCQSgyNTUsIDAsIDApLCBDb2xv
clNwYWNlU1JHQik7CiAgICAgCiAgICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQb2ludChh
ZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBiYXNlbGlu
ZSksIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0
V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBiYXNlbGluZSkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9z
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNs
b3NlLmNwcAppbmRleCAxNzQ2OGMxMTk5MzA0YTcwZDY3Yjc1MDBiZTJkYjc0MDc1ZDQyZTc1Li5k
ZDhmZTA2ZmUwZGU0MTEyMDIyNGRjMWUxMjE1MjIzZWVkYjg5MmVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNw
cApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MTWVuY2xvc2U6OnBhaW50KFBh
aW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0CiAgICAgICAgICAg
ICBlbHNlIGlmIChub3RhdGlvblZhbHVlc1tpXSA9PSAiaG9yaXpvbnRhbHN0cmlrZSIpCiAgICAg
ICAgICAgICAgICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQb2ludChsZWZ0LCB0b3AgKyBo
YWxmYm94SGVpZ2h0KSwgSW50UG9pbnQobGVmdCArIGJveFdpZHRoLCB0b3AgKyBoYWxmYm94SGVp
Z2h0KSk7CiAgICAgICAgICAgICBlbHNlIGlmIChub3RhdGlvblZhbHVlc1tpXSA9PSAiY2lyY2xl
IikgewotICAgICAgICAgICAgICAgIGluZm8uY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjp0
cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICAgICAgaW5mby5j
b250ZXh0LT5zZXRGaWxsQ29sb3IoT3B0aW9uYWxSR0JBOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFj
ZURldmljZVJHQik7CiAgICAgICAgICAgICAgICAgaW5mby5jb250ZXh0LT5kcmF3RWxsaXBzZShy
ZWN0KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobm90YXRpb25WYWx1ZXNbaV0gPT0gImxvbmdk
aXYiKQogICAgICAgICAgICAgICAgIGlzRGVmYXVsdExvbmdEaXYgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlclZhbHVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUuaAppbmRleCBjZjM0MGQwZjY4MmU3
NGFlNDkyY2NlZmNmYWNjYTExNjcyNzdhNGJkLi5jMjRmNWU1NTZhM2Q2ZjcwMDdlNTAzNTYzZmEy
NDdkNjdjODA5ODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
Qm9yZGVyVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVy
VmFsdWUuaApAQCAtNjcsMTMgKzY3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICEoKnRo
aXMgPT0gbyk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
CisgICAgdm9pZCBzZXRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yKQogICAgIHsKICAg
ICAgICAgbV9jb2xvciA9IGNvbG9yLnJnYigpOwogICAgICAgICBtX2NvbG9ySXNWYWxpZCA9IGNv
bG9yLmlzVmFsaWQoKTsKICAgICB9CiAKLSAgICBDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJu
IENvbG9yKG1fY29sb3IsIG1fY29sb3JJc1ZhbGlkKTsgfQorICAgIE9wdGlvbmFsUkdCQSBjb2xv
cigpIGNvbnN0IHsgcmV0dXJuIE9wdGlvbmFsUkdCQShtX2NvbG9yLCBtX2NvbG9ySXNWYWxpZCk7
IH0KIAogICAgIGZsb2F0IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQogICAgIEVC
b3JkZXJTdHlsZSBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3JkZXJTdHls
ZT4obV9zdHlsZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9Db2xsYXBzZWRCb3JkZXJWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0NvbGxhcHNlZEJvcmRlclZhbHVlLmgKaW5kZXggMTIwMTczYmRhNzBjODQwY2FlMTg3ZWYyMTE2
MWU3NzAzODcwYjY5MS4uZGYxNmMxNTVhYjNlNDY4ODFiNDk3NDI4YmU2YzNlNWMyZThmYWYyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbGxhcHNlZEJvcmRl
clZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbGxhcHNlZEJv
cmRlclZhbHVlLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAg
ICBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyLCBjb25zdCBD
b2xvciYgY29sb3IsIEVCb3JkZXJQcmVjZWRlbmNlIHByZWNlZGVuY2UpCisgICAgQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUoY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlciwgY29uc3QgT3B0aW9uYWxSR0JB
JiBjb2xvciwgRUJvcmRlclByZWNlZGVuY2UgcHJlY2VkZW5jZSkKICAgICAgICAgOiBtX2NvbG9y
KGNvbG9yLnJnYigpKQogICAgICAgICAsIG1fY29sb3JJc1ZhbGlkKGNvbG9yLmlzVmFsaWQoKSkK
ICAgICAgICAgLCBtX3dpZHRoKGJvcmRlci5ub25aZXJvKCkgPyBib3JkZXIud2lkdGgoKSA6IDAp
CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCB3aWR0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3R5bGUgPiBCSElEREVOID8gbV93aWR0aCA6IDA7IH0KICAgICBFQm9yZGVyU3R5
bGUgc3R5bGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm9yZGVyU3R5bGU+KG1fc3R5
bGUpOyB9CiAgICAgYm9vbCBleGlzdHMoKSBjb25zdCB7IHJldHVybiBtX3ByZWNlZGVuY2UgIT0g
Qk9GRjsgfQotICAgIENvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IobV9jb2xvciwg
bV9jb2xvcklzVmFsaWQpOyB9CisgICAgT3B0aW9uYWxSR0JBIGNvbG9yKCkgY29uc3QgeyByZXR1
cm4gT3B0aW9uYWxSR0JBKG1fY29sb3IsIG1fY29sb3JJc1ZhbGlkKTsgfQogICAgIGJvb2wgaXNU
cmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNwYXJlbnQ7IH0KICAgICBFQm9yZGVy
UHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJvcmRl
clByZWNlZGVuY2U+KG1fcHJlY2VkZW5jZSk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggZGRmMDE5OGRhYjhjMmY1NjZkMzFkZjYx
ZGZhYjY2ZjAxNjIwM2E4OS4uOTU0NmFlZjMwYTRiMGE4ODhlODk0MmIyZWZkZTBjZTgyYTk0MzMx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CkBAIC0xMTMxLDEwICsxMTMxLDEwIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldExpc3RTdHlsZUlt
YWdlKFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gdikKICAgICAgICAgcmFyZUluaGVyaXRlZERhdGEu
YWNjZXNzKCktPmxpc3RTdHlsZUltYWdlID0gdjsKIH0KIAotQ29sb3IgUmVuZGVyU3R5bGU6OmNv
bG9yKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5jb2xvcjsgfQotQ29sb3IgUmVuZGVyU3R5
bGU6OnZpc2l0ZWRMaW5rQ29sb3IoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPnZpc2l0ZWRM
aW5rQ29sb3I7IH0KLXZvaWQgUmVuZGVyU3R5bGU6OnNldENvbG9yKGNvbnN0IENvbG9yJiB2KSB7
IFNFVF9WQVIoaW5oZXJpdGVkLCBjb2xvciwgdik7IH0KLXZvaWQgUmVuZGVyU3R5bGU6OnNldFZp
c2l0ZWRMaW5rQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihpbmhlcml0ZWQsIHZpc2l0
ZWRMaW5rQ29sb3IsIHYpOyB9CitPcHRpb25hbFJHQkEgUmVuZGVyU3R5bGU6OmNvbG9yKCkgY29u
c3QgeyByZXR1cm4gaW5oZXJpdGVkLT5jb2xvcjsgfQorT3B0aW9uYWxSR0JBIFJlbmRlclN0eWxl
Ojp2aXNpdGVkTGlua0NvbG9yKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT52aXNpdGVkTGlu
a0NvbG9yOyB9Cit2b2lkIFJlbmRlclN0eWxlOjpzZXRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEm
IHYpIHsgU0VUX1ZBUihpbmhlcml0ZWQsIGNvbG9yLCB2KTsgfQordm9pZCBSZW5kZXJTdHlsZTo6
c2V0VmlzaXRlZExpbmtDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIHYpIHsgU0VUX1ZBUihpbmhl
cml0ZWQsIHZpc2l0ZWRMaW5rQ29sb3IsIHYpOyB9CiAKIHNob3J0IFJlbmRlclN0eWxlOjpob3Jp
em9udGFsQm9yZGVyU3BhY2luZygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+aG9yaXpvbnRh
bF9ib3JkZXJfc3BhY2luZzsgfQogc2hvcnQgUmVuZGVyU3R5bGU6OnZlcnRpY2FsQm9yZGVyU3Bh
Y2luZygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmc7
IH0KQEAgLTE1NjUsOSArMTU2NSw5IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmdldFNoYWRvd1ZlcnRp
Y2FsRXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgTGF5b3V0VW5pdCAmCiAgICAgfQog
fQogCi1Db2xvciBSZW5kZXJTdHlsZTo6Y29sb3JJbmNsdWRpbmdGYWxsYmFjayhpbnQgY29sb3JQ
cm9wZXJ0eSwgYm9vbCB2aXNpdGVkTGluaykgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5kZXJTdHls
ZTo6Y29sb3JJbmNsdWRpbmdGYWxsYmFjayhpbnQgY29sb3JQcm9wZXJ0eSwgYm9vbCB2aXNpdGVk
TGluaykgY29uc3QKIHsKLSAgICBDb2xvciByZXN1bHQ7CisgICAgT3B0aW9uYWxSR0JBIHJlc3Vs
dDsKICAgICBFQm9yZGVyU3R5bGUgYm9yZGVyU3R5bGUgPSBCTk9ORTsKICAgICBzd2l0Y2ggKGNv
bG9yUHJvcGVydHkpIHsKICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yOgpAQCAt
MTYyMywxMyArMTYyMywxMyBAQCBDb2xvciBSZW5kZXJTdHlsZTo6Y29sb3JJbmNsdWRpbmdGYWxs
YmFjayhpbnQgY29sb3JQcm9wZXJ0eSwgYm9vbCB2aXNpdGVkTGluaykgYwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLUNvbG9yIFJlbmRlclN0eWxlOjp2aXNpdGVkRGVwZW5kZW50Q29sb3IoaW50
IGNvbG9yUHJvcGVydHkpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyU3R5bGU6OnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihpbnQgY29sb3JQcm9wZXJ0eSkgY29uc3QKIHsKLSAgICBDb2xvciB1bnZp
c2l0ZWRDb2xvciA9IGNvbG9ySW5jbHVkaW5nRmFsbGJhY2soY29sb3JQcm9wZXJ0eSwgZmFsc2Up
OworICAgIE9wdGlvbmFsUkdCQSB1bnZpc2l0ZWRDb2xvciA9IGNvbG9ySW5jbHVkaW5nRmFsbGJh
Y2soY29sb3JQcm9wZXJ0eSwgZmFsc2UpOwogICAgIGlmIChpbnNpZGVMaW5rKCkgIT0gSW5zaWRl
VmlzaXRlZExpbmspCiAgICAgICAgIHJldHVybiB1bnZpc2l0ZWRDb2xvcjsKIAotICAgIENvbG9y
IHZpc2l0ZWRDb2xvciA9IGNvbG9ySW5jbHVkaW5nRmFsbGJhY2soY29sb3JQcm9wZXJ0eSwgdHJ1
ZSk7CisgICAgT3B0aW9uYWxSR0JBIHZpc2l0ZWRDb2xvciA9IGNvbG9ySW5jbHVkaW5nRmFsbGJh
Y2soY29sb3JQcm9wZXJ0eSwgdHJ1ZSk7CiAKICAgICAvLyBUZXh0IGRlY29yYXRpb24gY29sb3Ig
dmFsaWRpdHkgaXMgcHJlc2VydmVkIChjaGVja2VkIGluIFJlbmRlck9iamVjdDo6ZGVjb3JhdGlv
bkNvbG9yKS4KICAgICBpZiAoY29sb3JQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRE
ZWNvcmF0aW9uQ29sb3IpCkBAIC0xNjQwLDExICsxNjQwLDExIEBAIENvbG9yIFJlbmRlclN0eWxl
Ojp2aXNpdGVkRGVwZW5kZW50Q29sb3IoaW50IGNvbG9yUHJvcGVydHkpIGNvbnN0CiAgICAgLy8g
d2UncmUgcmV0dXJuaW5nIHVudmlzaXRlZCBpbmZvIGZvciBhIHZpc2l0ZWQgbGluaywgYnV0IGdp
dmVuIG91ciByZXN0cmljdGlvbiB0aGF0IHRoZSBhbHBoYSB2YWx1ZXMKICAgICAvLyBoYXZlIHRv
IG1hdGNoLCBpdCBtYWtlcyBtb3JlIHNlbnNlIHRvIHJldHVybiB0aGUgdW52aXNpdGVkIGJhY2tn
cm91bmQgY29sb3IgaWYgc3BlY2lmaWVkIHRoYW4gaXQKICAgICAvLyBkb2VzIHRvIHJldHVybiBi
bGFjay4gVGhpcyBiZWhhdmlvciBtYXRjaGVzIHdoYXQgRmlyZWZveCA0IGRvZXMgYXMgd2VsbC4K
LSAgICBpZiAoY29sb3JQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciAmJiB2
aXNpdGVkQ29sb3IgPT0gQ29sb3I6OnRyYW5zcGFyZW50KQorICAgIGlmIChjb2xvclByb3BlcnR5
ID09IENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yICYmIHZpc2l0ZWRDb2xvciA9PSBPcHRpb25h
bFJHQkE6OnRyYW5zcGFyZW50KQogICAgICAgICByZXR1cm4gdW52aXNpdGVkQ29sb3I7CiAKICAg
ICAvLyBUYWtlIHRoZSBhbHBoYSBmcm9tIHRoZSB1bnZpc2l0ZWQgY29sb3IsIGJ1dCBnZXQgdGhl
IFJHQiB2YWx1ZXMgZnJvbSB0aGUgdmlzaXRlZCBjb2xvci4KLSAgICByZXR1cm4gQ29sb3Iodmlz
aXRlZENvbG9yLnJlZCgpLCB2aXNpdGVkQ29sb3IuZ3JlZW4oKSwgdmlzaXRlZENvbG9yLmJsdWUo
KSwgdW52aXNpdGVkQ29sb3IuYWxwaGEoKSk7CisgICAgcmV0dXJuIE9wdGlvbmFsUkdCQSh2aXNp
dGVkQ29sb3IucmVkKCksIHZpc2l0ZWRDb2xvci5ncmVlbigpLCB2aXNpdGVkQ29sb3IuYmx1ZSgp
LCB1bnZpc2l0ZWRDb2xvci5hbHBoYSgpKTsKIH0KIAogY29uc3QgQm9yZGVyVmFsdWUmIFJlbmRl
clN0eWxlOjpib3JkZXJCZWZvcmUoKSBjb25zdApAQCAtMTc4Miw3ICsxNzgyLDcgQEAgVGV4dEVt
cGhhc2lzTWFyayBSZW5kZXJTdHlsZTo6dGV4dEVtcGhhc2lzTWFyaygpIGNvbnN0CiB9CiAKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotQ29sb3IgUmVuZGVyU3R5bGU6OmluaXRpYWxUYXBIaWdo
bGlnaHRDb2xvcigpCitPcHRpb25hbFJHQkEgUmVuZGVyU3R5bGU6OmluaXRpYWxUYXBIaWdobGln
aHRDb2xvcigpCiB7CiAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjp0YXBIaWdobGlnaHRDb2xvcigp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRl
eCBjY2NjOTNkODBlZmRjZGIyYmU5YjE3ODJhMmIzYzVkZDhkNTM3NjEyLi4xMGNhMDExZjk1YTlh
ZDUzODEyN2EyNTExODQ1MzhmZWEwNGRmNmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtNTQ3LDcgKzU0Nyw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaGFzQmFja2dyb3VuZCgpIGNvbnN0CiAgICAgewotICAgICAgICBDb2xvciBjb2xvciA9
IHZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CisgICAg
ICAgIE9wdGlvbmFsUkdCQSBjb2xvciA9IHZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eUJhY2tncm91bmRDb2xvcik7CiAgICAgICAgIGlmIChjb2xvci5pc1ZhbGlkKCkgJiYgY29sb3Iu
YWxwaGEoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICByZXR1cm4gaGFzQmFj
a2dyb3VuZEltYWdlKCk7CkBAIC04OTUsNyArODk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0
VGV4dFNoYWRvd0Jsb2NrRGlyZWN0aW9uRXh0ZW50KExheW91dFVuaXQmIGxvZ2ljYWxUb3AsIExh
eW91dFVuaXQmIGxvZ2ljYWxCb3R0b20pIGNvbnN0IHsgZ2V0U2hhZG93QmxvY2tEaXJlY3Rpb25F
eHRlbnQodGV4dFNoYWRvdygpLCBsb2dpY2FsVG9wLCBsb2dpY2FsQm90dG9tKTsgfQogCiAgICAg
ZmxvYXQgdGV4dFN0cm9rZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEt
PnRleHRTdHJva2VXaWR0aDsgfQotICAgIHN0YXRpYyBDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSB7
IHJldHVybiBDb2xvclNwYWNlU1JHQjsgfSAvLyBGSVhNRTogUmVtb3ZlIGFmdGVyIGFkZGluZyBj
b2xvciBzcGFjZSBoYW5kbGluZyBpbnRvIHRoZSBDb2xvciBjbGFzcy4KKyAgICBzdGF0aWMgQ29s
b3JTcGFjZSBjb2xvclNwYWNlKCkgeyByZXR1cm4gQ29sb3JTcGFjZVNSR0I7IH0gLy8gRklYTUU6
IFJlbW92ZSBhZnRlciBhZGRpbmcgY29sb3Igc3BhY2UgaGFuZGxpbmcgaW50byB0aGUgT3B0aW9u
YWxSR0JBIGNsYXNzLgogICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCB7IHJldHVybiByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+b3BhY2l0eTsgfQogICAgIENvbnRyb2xQYXJ0IGFwcGVhcmFuY2UoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb250cm9sUGFydD4ocmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fYXBwZWFyYW5jZSk7IH0KICAgICBBc3BlY3RSYXRpb1R5cGUgYXNwZWN0UmF0aW9UeXBl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXNwZWN0UmF0aW9UeXBlPihyYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9hc3BlY3RSYXRpb1R5cGUpOyB9CkBAIC0xMTE4LDcgKzExMTgsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgQ29sb3IgdGFw
SGlnaGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGFwSGln
aGxpZ2h0Q29sb3I7IH0KKyAgICBPcHRpb25hbFJHQkEgdGFwSGlnaGxpZ2h0Q29sb3IoKSBjb25z
dCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGFwSGlnaGxpZ2h0Q29sb3I7IH0KICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTI2MSw3ICsxMjYxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBi
b3JkZXIubV9ib3R0b21MZWZ0LCBpbml0aWFsQm9yZGVyUmFkaXVzKCkpOyB9CiAgICAgdm9pZCBy
ZXNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIu
bV9ib3R0b21SaWdodCwgaW5pdGlhbEJvcmRlclJhZGl1cygpKTsgfQogCi0gICAgdm9pZCBzZXRC
YWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1f
Y29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWxS
R0JBJiB2KSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX2NvbG9yLCB2KTsgfQogCiAgICAgdm9p
ZCBzZXRCYWNrZ3JvdW5kWFBvc2l0aW9uKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihtX2JhY2tn
cm91bmQsIG1fYmFja2dyb3VuZC5tX3hQb3NpdGlvbiwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CiAg
ICAgdm9pZCBzZXRCYWNrZ3JvdW5kWVBvc2l0aW9uKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUiht
X2JhY2tncm91bmQsIG1fYmFja2dyb3VuZC5tX3lQb3NpdGlvbiwgV1RGOjptb3ZlKGxlbmd0aCkp
OyB9CkBAIC0xMjk5LDIxICsxMjk5LDIxIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Qm9yZGVy
TGVmdFdpZHRoKGZsb2F0IHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fbGVmdC5tX3dp
ZHRoLCB2KTsgfQogICAgIHZvaWQgc2V0Qm9yZGVyTGVmdFN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7
IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2xlZnQubV9zdHlsZSwgdik7IH0KLSAgICB2b2lk
IHNldEJvcmRlckxlZnRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfQk9SREVSVkFMVUVfQ09M
T1Ioc3Vycm91bmQsIGJvcmRlci5tX2xlZnQsIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJMZWZ0
Q29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiB2KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihzdXJy
b3VuZCwgYm9yZGVyLm1fbGVmdCwgdik7IH0KICAgICB2b2lkIHNldEJvcmRlclJpZ2h0V2lkdGgo
ZmxvYXQgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9yaWdodC5tX3dpZHRoLCB2KTsg
fQogICAgIHZvaWQgc2V0Qm9yZGVyUmlnaHRTdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFS
KHN1cnJvdW5kLCBib3JkZXIubV9yaWdodC5tX3N0eWxlLCB2KTsgfQotICAgIHZvaWQgc2V0Qm9y
ZGVyUmlnaHRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1Ioc3Vy
cm91bmQsIGJvcmRlci5tX3JpZ2h0LCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyUmlnaHRDb2xv
cihjb25zdCBPcHRpb25hbFJHQkEmIHYpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKHN1cnJvdW5k
LCBib3JkZXIubV9yaWdodCwgdik7IH0KICAgICB2b2lkIHNldEJvcmRlclRvcFdpZHRoKGZsb2F0
IHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wLm1fd2lkdGgsIHYpOyB9CiAgICAg
dm9pZCBzZXRCb3JkZXJUb3BTdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKHN1cnJvdW5k
LCBib3JkZXIubV90b3AubV9zdHlsZSwgdik7IH0KLSAgICB2b2lkIHNldEJvcmRlclRvcENvbG9y
KGNvbnN0IENvbG9yJiB2KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihzdXJyb3VuZCwgYm9yZGVy
Lm1fdG9wLCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyVG9wQ29sb3IoY29uc3QgT3B0aW9uYWxS
R0JBJiB2KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wLCB2
KTsgfQogICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tV2lkdGgoZmxvYXQgdikgeyBTRVRfVkFSKHN1
cnJvdW5kLCBib3JkZXIubV9ib3R0b20ubV93aWR0aCwgdik7IH0KICAgICB2b2lkIHNldEJvcmRl
ckJvdHRvbVN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5t
X2JvdHRvbS5tX3N0eWxlLCB2KTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tQ29sb3IoY29u
c3QgQ29sb3ImIHYpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKHN1cnJvdW5kLCBib3JkZXIubV9i
b3R0b20sIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJCb3R0b21Db2xvcihjb25zdCBPcHRpb25h
bFJHQkEmIHYpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0
b20sIHYpOyB9CiAKICAgICB2b2lkIHNldE91dGxpbmVXaWR0aCh1bnNpZ25lZCBzaG9ydCB2KSB7
IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX291dGxpbmUubV93aWR0aCwgdik7IH0KICAgICB2b2lk
IHNldE91dGxpbmVTdHlsZUlzQXV0byhPdXRsaW5lSXNBdXRvIGlzQXV0bykgeyBTRVRfVkFSKG1f
YmFja2dyb3VuZCwgbV9vdXRsaW5lLm1faXNBdXRvLCBpc0F1dG8pOyB9CiAgICAgdm9pZCBzZXRP
dXRsaW5lU3R5bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1fb3V0
bGluZS5tX3N0eWxlLCB2KTsgfQotICAgIHZvaWQgc2V0T3V0bGluZUNvbG9yKGNvbnN0IENvbG9y
JiB2KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihtX2JhY2tncm91bmQsIG1fb3V0bGluZSwgdik7
IH0KKyAgICB2b2lkIHNldE91dGxpbmVDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIHYpIHsgU0VU
X0JPUkRFUlZBTFVFX0NPTE9SKG1fYmFja2dyb3VuZCwgbV9vdXRsaW5lLCB2KTsgfQogCiAgICAg
dm9pZCBzZXRPdmVyZmxvd1goRU92ZXJmbG93IHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldE92
ZXJmbG93WCh2KTsgfQogICAgIHZvaWQgc2V0T3ZlcmZsb3dZKEVPdmVyZmxvdyB2KSB7IG5vbmlu
aGVyaXRlZF9mbGFncy5zZXRPdmVyZmxvd1kodik7IH0KQEAgLTEzNDYsNyArMTM0Niw3IEBAIHB1
YmxpYzoKICAgICB9CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0Q29sb3IoY29uc3QgQ29sb3ImKTsK
KyAgICB2b2lkIHNldENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYpOwogICAgIHZvaWQgc2V0VGV4
dEluZGVudChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIGluZGVu
dCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICB2b2lk
IHNldFRleHRJbmRlbnRMaW5lKFRleHRJbmRlbnRMaW5lIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJp
dGVkRGF0YSwgbV90ZXh0SW5kZW50TGluZSwgdik7IH0KQEAgLTE0ODYsOSArMTQ4Niw5IEBAIHB1
YmxpYzoKICAgICAvLyBDU1MzIFNldHRlcnMKICAgICB2b2lkIHNldE91dGxpbmVPZmZzZXQoaW50
IHYpIHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1fb3V0bGluZS5tX29mZnNldCwgdik7IH0KICAg
ICB2b2lkIHNldFRleHRTaGFkb3coc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+LCBib29sIGFk
ZCA9IGZhbHNlKTsKLSAgICB2b2lkIHNldFRleHRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgYykg
eyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0U3Ryb2tlQ29sb3IsIGMpOyB9CisgICAg
dm9pZCBzZXRUZXh0U3Ryb2tlQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiBjKSB7IFNFVF9WQVIo
cmFyZUluaGVyaXRlZERhdGEsIHRleHRTdHJva2VDb2xvciwgYyk7IH0KICAgICB2b2lkIHNldFRl
eHRTdHJva2VXaWR0aChmbG9hdCB3KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRT
dHJva2VXaWR0aCwgdyk7IH0KLSAgICB2b2lkIHNldFRleHRGaWxsQ29sb3IoY29uc3QgQ29sb3Im
IGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEZpbGxDb2xvciwgYyk7IH0KKyAg
ICB2b2lkIHNldFRleHRGaWxsQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiBjKSB7IFNFVF9WQVIo
cmFyZUluaGVyaXRlZERhdGEsIHRleHRGaWxsQ29sb3IsIGMpOyB9CiAgICAgdm9pZCBzZXRPcGFj
aXR5KGZsb2F0IGYpIHsgZmxvYXQgdiA9IGNsYW1wVG88ZmxvYXQ+KGYsIDAsIDEpOyBTRVRfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBvcGFjaXR5LCB2KTsgfQogICAgIHZvaWQgc2V0QXBwZWFy
YW5jZShDb250cm9sUGFydCBhKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYXBw
ZWFyYW5jZSwgYSk7IH0KICAgICAvLyBGb3IgdmFsaWQgdmFsdWVzIG9mIGJveC1hbGlnbiBzZWUg
aHR0cDovL3d3dy53My5vcmcvVFIvMjAwOS9XRC1jc3MzLWZsZXhib3gtMjAwOTA3MjMvI2FsaWdu
bWVudApAQCAtMTU4Miw3ICsxNTgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29sdW1uRmls
bChDb2x1bW5GaWxsIGNvbHVtbkZpbGwpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS0+bV9tdWx0aUNvbCwgbV9maWxsLCBjb2x1bW5GaWxsKTsgfQogICAgIHZvaWQgc2V0
Q29sdW1uR2FwKGZsb2F0IGYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3Mo
KS0+bV9tdWx0aUNvbCwgbV9ub3JtYWxHYXAsIGZhbHNlKTsgU0VUX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbCwgbV9nYXAsIGYpOyB9CiAgICAgdm9pZCBzZXRI
YXNOb3JtYWxDb2x1bW5HYXAoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCktPm1fbXVsdGlDb2wsIG1fbm9ybWFsR2FwLCB0cnVlKTsgU0VUX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbCwgbV9nYXAsIDApOyB9Ci0gICAgdm9pZCBzZXRD
b2x1bW5SdWxlQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKHJh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29sLCBtX3J1bGUsIGMpOyB9Cisg
ICAgdm9pZCBzZXRDb2x1bW5SdWxlQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiBjKSB7IFNFVF9C
T1JERVJWQUxVRV9DT0xPUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNv
bCwgbV9ydWxlLCBjKTsgfQogICAgIHZvaWQgc2V0Q29sdW1uUnVsZVN0eWxlKEVCb3JkZXJTdHls
ZSBiKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbXVsdGlDb2ws
IG1fcnVsZS5tX3N0eWxlLCBiKTsgfQogICAgIHZvaWQgc2V0Q29sdW1uUnVsZVdpZHRoKHVuc2ln
bmVkIHNob3J0IHcpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9t
dWx0aUNvbCwgbV9ydWxlLm1fd2lkdGgsIHcpOyB9CiAgICAgdm9pZCByZXNldENvbHVtblJ1bGUo
KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbXVsdGlDb2wsIG1f
cnVsZSwgQm9yZGVyVmFsdWUoKSk7IH0KQEAgLTE2MDEsOCArMTYwMSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFRyYW5zZm9ybU9yaWdpblooZmxvYXQgZikgeyBTRVRfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX3RyYW5zZm9ybSwgbV96LCBmKTsgfQogICAgIHZvaWQgc2V0
U3BlYWsoRVNwZWFrIHMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgc3BlYWssIHMpOyB9
CiAgICAgdm9pZCBzZXRUZXh0Q29tYmluZShUZXh0Q29tYmluZSB2KSB7IFNFVF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fdGV4dENvbWJpbmUsIHYpOyB9Ci0gICAgdm9pZCBzZXRUZXh0RGVj
b3JhdGlvbkNvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERh
dGEsIG1fdGV4dERlY29yYXRpb25Db2xvciwgYyk7IH0KLSAgICB2b2lkIHNldFRleHRFbXBoYXNp
c0NvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRF
bXBoYXNpc0NvbG9yLCBjKTsgfQorICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25Db2xvcihjb25z
dCBPcHRpb25hbFJHQkEmIGMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV90ZXh0
RGVjb3JhdGlvbkNvbG9yLCBjKTsgfQorICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzQ29sb3IoY29u
c3QgT3B0aW9uYWxSR0JBJiBjKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBo
YXNpc0NvbG9yLCBjKTsgfQogICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzRmlsbChUZXh0RW1waGFz
aXNGaWxsIGZpbGwpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzRmls
bCwgZmlsbCk7IH0KICAgICB2b2lkIHNldFRleHRFbXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFy
ayBtYXJrKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc01hcmssIG1h
cmspOyB9CiAgICAgdm9pZCBzZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKGNvbnN0IEF0b21pY1N0
cmluZyYgbWFyaykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RW1waGFzaXNDdXN0
b21NYXJrLCBtYXJrKTsgfQpAQCAtMTY3Myw3ICsxNjczLDcgQEAgcHVibGljOgogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIHZvaWQgc2V0VGFwSGlnaGxpZ2h0Q29sb3Io
Y29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGFwSGlnaGxpZ2h0
Q29sb3IsIGMpOyB9CisgICAgdm9pZCBzZXRUYXBIaWdobGlnaHRDb2xvcihjb25zdCBPcHRpb25h
bFJHQkEmIGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGFwSGlnaGxpZ2h0Q29sb3Is
IGMpOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTE2OTgsMTQgKzE2OTgsMTQg
QEAgcHVibGljOgogICAgIFNWR1JlbmRlclN0eWxlJiBhY2Nlc3NTVkdTdHlsZSgpIHsgcmV0dXJu
ICptX3N2Z1N0eWxlLmFjY2VzcygpOyB9CiAKICAgICBjb25zdCBTVkdQYWludDo6U1ZHUGFpbnRU
eXBlJiBmaWxsUGFpbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5maWxsUGFpbnRU
eXBlKCk7IH0KLSAgICBDb2xvciBmaWxsUGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0
eWxlKCkuZmlsbFBhaW50Q29sb3IoKTsgfQotICAgIHZvaWQgc2V0RmlsbFBhaW50Q29sb3IoY29u
c3QgQ29sb3ImIGMpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRGaWxsUGFpbnQoU1ZHUGFpbnQ6OlNW
R19QQUlOVFRZUEVfUkdCQ09MT1IsIGMsICIiKTsgfQorICAgIE9wdGlvbmFsUkdCQSBmaWxsUGFp
bnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuZmlsbFBhaW50Q29sb3IoKTsgfQor
ICAgIHZvaWQgc2V0RmlsbFBhaW50Q29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiBjKSB7IGFjY2Vz
c1NWR1N0eWxlKCkuc2V0RmlsbFBhaW50KFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX1JHQkNPTE9S
LCBjLCAiIik7IH0KICAgICBmbG9hdCBmaWxsT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0
eWxlKCkuZmlsbE9wYWNpdHkoKTsgfQogICAgIHZvaWQgc2V0RmlsbE9wYWNpdHkoZmxvYXQgZikg
eyBhY2Nlc3NTVkdTdHlsZSgpLnNldEZpbGxPcGFjaXR5KGYpOyB9CiAKICAgICBjb25zdCBTVkdQ
YWludDo6U1ZHUGFpbnRUeXBlJiBzdHJva2VQYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBzdmdT
dHlsZSgpLnN0cm9rZVBhaW50VHlwZSgpOyB9Ci0gICAgQ29sb3Igc3Ryb2tlUGFpbnRDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuc3Ryb2tlUGFpbnRDb2xvcigpOyB9Ci0gICAgdm9p
ZCBzZXRTdHJva2VQYWludENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IGFjY2Vzc1NWR1N0eWxlKCku
c2V0U3Ryb2tlUGFpbnQoU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfUkdCQ09MT1IsIGMsICIiKTsg
fQorICAgIE9wdGlvbmFsUkdCQSBzdHJva2VQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3Zn
U3R5bGUoKS5zdHJva2VQYWludENvbG9yKCk7IH0KKyAgICB2b2lkIHNldFN0cm9rZVBhaW50Q29s
b3IoY29uc3QgT3B0aW9uYWxSR0JBJiBjKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Ryb2tlUGFp
bnQoU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfUkdCQ09MT1IsIGMsICIiKTsgfQogICAgIGZsb2F0
IHN0cm9rZU9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLnN0cm9rZU9wYWNpdHko
KTsgfQogICAgIHZvaWQgc2V0U3Ryb2tlT3BhY2l0eShmbG9hdCBmKSB7IGFjY2Vzc1NWR1N0eWxl
KCkuc2V0U3Ryb2tlT3BhY2l0eShmKTsgfQogICAgIGNvbnN0IExlbmd0aCYgc3Ryb2tlV2lkdGgo
KSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLnN0cm9rZVdpZHRoKCk7IH0KQEAgLTE3MzgsOSAr
MTczOCw5IEBAIHB1YmxpYzoKICAgICBmbG9hdCBzdG9wT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJu
IHN2Z1N0eWxlKCkuc3RvcE9wYWNpdHkoKTsgfQogICAgIHZvaWQgc2V0U3RvcE9wYWNpdHkoZmxv
YXQgZikgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFN0b3BPcGFjaXR5KGYpOyB9CiAKLSAgICB2b2lk
IHNldFN0b3BDb2xvcihjb25zdCBDb2xvciYgYykgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldFN0b3BD
b2xvcihjKTsgfQotICAgIHZvaWQgc2V0Rmxvb2RDb2xvcihjb25zdCBDb2xvciYgYykgeyBhY2Nl
c3NTVkdTdHlsZSgpLnNldEZsb29kQ29sb3IoYyk7IH0KLSAgICB2b2lkIHNldExpZ2h0aW5nQ29s
b3IoY29uc3QgQ29sb3ImIGMpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRMaWdodGluZ0NvbG9yKGMp
OyB9CisgICAgdm9pZCBzZXRTdG9wQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiBjKSB7IGFjY2Vz
c1NWR1N0eWxlKCkuc2V0U3RvcENvbG9yKGMpOyB9CisgICAgdm9pZCBzZXRGbG9vZENvbG9yKGNv
bnN0IE9wdGlvbmFsUkdCQSYgYykgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldEZsb29kQ29sb3IoYyk7
IH0KKyAgICB2b2lkIHNldExpZ2h0aW5nQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiBjKSB7IGFj
Y2Vzc1NWR1N0eWxlKCkuc2V0TGlnaHRpbmdDb2xvcihjKTsgfQogCiAgICAgU1ZHTGVuZ3RoIGJh
c2VsaW5lU2hpZnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuYmFzZWxpbmVTaGlm
dFZhbHVlKCk7IH0KICAgICB2b2lkIHNldEJhc2VsaW5lU2hpZnRWYWx1ZShTVkdMZW5ndGggcykg
eyBhY2Nlc3NTVkdTdHlsZSgpLnNldEJhc2VsaW5lU2hpZnRWYWx1ZShzKTsgfQpAQCAtMTg0Myw3
ICsxODQzLDcgQEAgcHVibGljOgogICAgIGJvb2wgbGFzdENoaWxkU3RhdGUoKSBjb25zdCB7IHJl
dHVybiBub25pbmhlcml0ZWRfZmxhZ3MubGFzdENoaWxkU3RhdGUoKTsgfQogICAgIHZvaWQgc2V0
TGFzdENoaWxkU3RhdGUoKSB7IHNldFVuaXF1ZSgpOyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0TGFz
dENoaWxkU3RhdGUodHJ1ZSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yIHZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihpbnQgY29sb3JQcm9wZXJ0eSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgT3B0aW9uYWxSR0JBIHZpc2l0ZWREZXBlbmRlbnRDb2xvcihpbnQgY29sb3JQcm9wZXJ0eSkg
Y29uc3Q7CiAKICAgICB2b2lkIHNldEhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkg
eyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0SGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMo
dHJ1ZSk7IH0KICAgICBib29sIGhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgY29u
c3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9w
ZXJ0aWVzKCk7IH0KQEAgLTE4ODQsNyArMTg4NCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ1VS
U09SX1ZJU0lCSUxJVFkpCiAgICAgc3RhdGljIEN1cnNvclZpc2liaWxpdHkgaW5pdGlhbEN1cnNv
clZpc2liaWxpdHkoKSB7IHJldHVybiBDdXJzb3JWaXNpYmlsaXR5QXV0bzsgfQogI2VuZGlmCi0g
ICAgc3RhdGljIENvbG9yIGluaXRpYWxDb2xvcigpIHsgcmV0dXJuIENvbG9yOjpibGFjazsgfQor
ICAgIHN0YXRpYyBPcHRpb25hbFJHQkEgaW5pdGlhbENvbG9yKCkgeyByZXR1cm4gT3B0aW9uYWxS
R0JBOjpibGFjazsgfQogICAgIHN0YXRpYyBTdHlsZUltYWdlKiBpbml0aWFsTGlzdFN0eWxlSW1h
Z2UoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxCb3JkZXJXaWR0aCgp
IHsgcmV0dXJuIDM7IH0KICAgICBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5pdGlhbENvbHVtblJ1
bGVXaWR0aCgpIHsgcmV0dXJuIDM7IH0KQEAgLTE5ODQsOCArMTk4NCw4IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgZmxvYXQgaW5pdGlhbFBlcnNwZWN0aXZlKCkgeyByZXR1cm4gMDsgfQogICAgIHN0
YXRpYyBMZW5ndGggaW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWCgpIHsgcmV0dXJuIExlbmd0aCg1
MC4wZiwgUGVyY2VudCk7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxQZXJzcGVjdGl2ZU9y
aWdpblkoKSB7IHJldHVybiBMZW5ndGgoNTAuMGYsIFBlcmNlbnQpOyB9Ci0gICAgc3RhdGljIENv
bG9yIGluaXRpYWxCYWNrZ3JvdW5kQ29sb3IoKSB7IHJldHVybiBDb2xvcjo6dHJhbnNwYXJlbnQ7
IH0KLSAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbFRleHRFbXBoYXNpc0NvbG9yKCkgeyByZXR1cm4g
VGV4dEVtcGhhc2lzRmlsbEZpbGxlZDsgfQorICAgIHN0YXRpYyBPcHRpb25hbFJHQkEgaW5pdGlh
bEJhY2tncm91bmRDb2xvcigpIHsgcmV0dXJuIE9wdGlvbmFsUkdCQTo6dHJhbnNwYXJlbnQ7IH0K
KyAgICBzdGF0aWMgT3B0aW9uYWxSR0JBIGluaXRpYWxUZXh0RW1waGFzaXNDb2xvcigpIHsgcmV0
dXJuIFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQ7IH0KICAgICBzdGF0aWMgVGV4dEVtcGhhc2lzRmls
bCBpbml0aWFsVGV4dEVtcGhhc2lzRmlsbCgpIHsgcmV0dXJuIFRleHRFbXBoYXNpc0ZpbGxGaWxs
ZWQ7IH0KICAgICBzdGF0aWMgVGV4dEVtcGhhc2lzTWFyayBpbml0aWFsVGV4dEVtcGhhc2lzTWFy
aygpIHsgcmV0dXJuIFRleHRFbXBoYXNpc01hcmtOb25lOyB9CiAgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgaW5pdGlhbFRleHRFbXBoYXNpc0N1c3RvbU1hcmsoKSB7IHJldHVybiBudWxs
QXRvbTsgfQpAQCAtMjA2Miw3ICsyMDYyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlu
aXRpYWxUb3VjaENhbGxvdXRFbmFibGVkKCkgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbFRhcEhpZ2hsaWdo
dENvbG9yKCk7CisgICAgc3RhdGljIE9wdGlvbmFsUkdCQSBpbml0aWFsVGFwSGlnaGxpZ2h0Q29s
b3IoKTsKICNlbmRpZgogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcp
CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbFVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcoKSB7IHJl
dHVybiBmYWxzZTsgfQpAQCAtMjA5MSwxOCArMjA5MSwxOCBAQCBwcml2YXRlOgogICAgIGJvb2wg
Y2hhbmdlUmVxdWlyZXNSZXBhaW50SWZUZXh0T3JCb3JkZXJPck91dGxpbmUoY29uc3QgUmVuZGVy
U3R5bGUmLCB1bnNpZ25lZCYgY2hhbmdlZENvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25z
dDsKICAgICBib29sIGNoYW5nZVJlcXVpcmVzUmVjb21wb3NpdGVMYXllcihjb25zdCBSZW5kZXJT
dHlsZSYsIHVuc2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNvbnN0
OwogCi0gICAgdm9pZCBzZXRWaXNpdGVkTGlua0NvbG9yKGNvbnN0IENvbG9yJik7Ci0gICAgdm9p
ZCBzZXRWaXNpdGVkTGlua0JhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yLCB2KTsg
fQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IoY29uc3QgQ29sb3ImIHYp
IHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92aXNpdGVkTGlua0JvcmRlckxlZnRD
b2xvciwgdik7IH0KLSAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcihjb25z
dCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5r
Qm9yZGVyUmlnaHRDb2xvciwgdik7IH0KLSAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVyQm90
dG9tQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bV92aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yLCB2KTsgfQotICAgIHZvaWQgc2V0VmlzaXRl
ZExpbmtCb3JkZXJUb3BDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IsIHYpOyB9Ci0gICAgdm9pZCBz
ZXRWaXNpdGVkTGlua091dGxpbmVDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9yLCB2KTsgfQotICAgIHZv
aWQgc2V0VmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbCwgbV92aXNpdGVkTGlu
a0NvbHVtblJ1bGVDb2xvciwgdik7IH0KLSAgICB2b2lkIHNldFZpc2l0ZWRMaW5rVGV4dERlY29y
YXRpb25Db2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX3Zpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvciwgdik7IH0KLSAgICB2b2lkIHNldFZp
c2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJl
SW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvciwgdik7IH0KLSAgICB2
b2lkIHNldFZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFS
KHJhcmVJbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua1RleHRGaWxsQ29sb3IsIHYpOyB9Ci0gICAg
dm9pZCBzZXRWaXNpdGVkTGlua1RleHRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRf
VkFSKHJhcmVJbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua1RleHRTdHJva2VDb2xvciwgdik7IH0K
KyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJik7CisgICAg
dm9pZCBzZXRWaXNpdGVkTGlua0JhY2tncm91bmRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIHYp
IHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92aXNpdGVkTGlua0JhY2tncm91bmRD
b2xvciwgdik7IH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKGNvbnN0
IE9wdGlvbmFsUkdCQSYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0
ZWRMaW5rQm9yZGVyTGVmdENvbG9yLCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3Jk
ZXJSaWdodENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvciwgdik7IH0KKyAgICB2b2lk
IHNldFZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiB2KSB7
IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdmlzaXRlZExpbmtCb3JkZXJCb3R0b21D
b2xvciwgdik7IH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IoY29uc3Qg
T3B0aW9uYWxSR0JBJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdmlzaXRl
ZExpbmtCb3JkZXJUb3BDb2xvciwgdik7IH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rT3V0bGlu
ZUNvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLCBtX3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9yLCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRl
ZExpbmtDb2x1bW5SdWxlQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiB2KSB7IFNFVF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbXVsdGlDb2wsIG1fdmlzaXRlZExpbmtDb2x1
bW5SdWxlQ29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua1RleHREZWNvcmF0aW9u
Q29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERh
dGEsIG1fdmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9yLCB2KTsgfQorICAgIHZvaWQgc2V0
VmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIHYpIHsgU0VU
X1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvciwgdik7
IH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvcihjb25zdCBPcHRpb25hbFJH
QkEmIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtUZXh0RmlsbENv
bG9yLCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IoY29uc3Qg
T3B0aW9uYWxSR0JBJiB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5r
VGV4dFN0cm9rZUNvbG9yLCB2KTsgfQogCiAgICAgdm9pZCBpbmhlcml0VW5pY29kZUJpZGlGcm9t
KGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnQpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldFVuaWNv
ZGVCaWRpKHBhcmVudC0+bm9uaW5oZXJpdGVkX2ZsYWdzLnVuaWNvZGVCaWRpKCkpOyB9CiAgICAg
dm9pZCBnZXRTaGFkb3dFeHRlbnQoY29uc3QgU2hhZG93RGF0YSosIExheW91dFVuaXQmIHRvcCwg
TGF5b3V0VW5pdCYgcmlnaHQsIExheW91dFVuaXQmIGJvdHRvbSwgTGF5b3V0VW5pdCYgbGVmdCkg
Y29uc3Q7CkBAIC0yMTUyLDM4ICsyMTUyLDM4IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBp
c0Rpc3BsYXlGbGV4aWJsZUJveChkaXNwbGF5KSB8fCBpc0Rpc3BsYXlHcmlkQm94KGRpc3BsYXkp
OwogICAgIH0KIAotICAgIC8vIENvbG9yIGFjY2Vzc29ycyBhcmUgYWxsIHByaXZhdGUgdG8gbWFr
ZSBzdXJlIGNhbGxlcnMgdXNlIHZpc2l0ZWREZXBlbmRlbnRDb2xvciBpbnN0ZWFkIHRvIGFjY2Vz
cyB0aGVtLgotICAgIHN0YXRpYyBDb2xvciBpbnZhbGlkQ29sb3IoKSB7IHJldHVybiBDb2xvcigp
OyB9Ci0gICAgQ29sb3IgYm9yZGVyTGVmdENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQt
PmJvcmRlci5sZWZ0KCkuY29sb3IoKTsgfQotICAgIENvbG9yIGJvcmRlclJpZ2h0Q29sb3IoKSBj
b25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnJpZ2h0KCkuY29sb3IoKTsgfQotICAgIENv
bG9yIGJvcmRlclRvcENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci50b3Ao
KS5jb2xvcigpOyB9Ci0gICAgQ29sb3IgYm9yZGVyQm90dG9tQ29sb3IoKSBjb25zdCB7IHJldHVy
biBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbSgpLmNvbG9yKCk7IH0KLSAgICBDb2xvciBiYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmQtPmNvbG9yKCk7IH0KLSAgICBD
b2xvciBjb2xvcigpIGNvbnN0OwotICAgIENvbG9yIGNvbHVtblJ1bGVDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sLT5tX3J1bGUuY29sb3IoKTsg
fQotICAgIENvbG9yIG91dGxpbmVDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZC0+
b3V0bGluZSgpLmNvbG9yKCk7IH0KLSAgICBDb2xvciB0ZXh0RW1waGFzaXNDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNDb2xvcjsgfQotICAgIENv
bG9yIHRleHRGaWxsQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4
dEZpbGxDb2xvcjsgfQotICAgIENvbG9yIHRleHRTdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJu
IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U3Ryb2tlQ29sb3I7IH0KLSAgICBDb2xvciB2aXNpdGVk
TGlua0NvbG9yKCkgY29uc3Q7Ci0gICAgQ29sb3IgdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3Io
KSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV92aXNpdGVkTGlua0JhY2tn
cm91bmRDb2xvcjsgfQotICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRlZExpbmtCb3JkZXJMZWZ0
Q29sb3I7IH0KLSAgICBDb2xvciB2aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV92aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29s
b3I7IH0KLSAgICBDb2xvciB2aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xv
cjsgfQotICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IoKSBjb25zdCB7IHJldHVy
biByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV92aXNpdGVkTGlua0JvcmRlclRvcENvbG9yOyB9Ci0g
ICAgQ29sb3IgdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV92aXNpdGVkTGlua091dGxpbmVDb2xvcjsgfQotICAgIENvbG9yIHZp
c2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fbXVsdGlDb2wtPm1fdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3I7IH0KLSAgICBD
b2xvciB0ZXh0RGVjb3JhdGlvbkNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fdGV4dERlY29yYXRpb25Db2xvcjsgfQotICAgIENvbG9yIHZpc2l0ZWRMaW5rVGV4
dERlY29yYXRpb25Db2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X3Zpc2l0ZWRMaW5rVGV4dERlY29yYXRpb25Db2xvcjsgfQotICAgIENvbG9yIHZpc2l0ZWRMaW5r
VGV4dEVtcGhhc2lzQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dmlz
aXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcjsgfQotICAgIENvbG9yIHZpc2l0ZWRMaW5rVGV4dEZp
bGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT52aXNpdGVkTGlua1Rl
eHRGaWxsQ29sb3I7IH0KLSAgICBDb2xvciB2aXNpdGVkTGlua1RleHRTdHJva2VDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT52aXNpdGVkTGlua1RleHRTdHJva2VDb2xv
cjsgfQotCi0gICAgQ29sb3IgY29sb3JJbmNsdWRpbmdGYWxsYmFjayhpbnQgY29sb3JQcm9wZXJ0
eSwgYm9vbCB2aXNpdGVkTGluaykgY29uc3Q7Ci0KLSAgICBDb2xvciBzdG9wQ29sb3IoKSBjb25z
dCB7IHJldHVybiBzdmdTdHlsZSgpLnN0b3BDb2xvcigpOyB9Ci0gICAgQ29sb3IgZmxvb2RDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuZmxvb2RDb2xvcigpOyB9Ci0gICAgQ29sb3Ig
bGlnaHRpbmdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigp
OyB9CisgICAgLy8gT3B0aW9uYWxSR0JBIGFjY2Vzc29ycyBhcmUgYWxsIHByaXZhdGUgdG8gbWFr
ZSBzdXJlIGNhbGxlcnMgdXNlIHZpc2l0ZWREZXBlbmRlbnRDb2xvciBpbnN0ZWFkIHRvIGFjY2Vz
cyB0aGVtLgorICAgIHN0YXRpYyBPcHRpb25hbFJHQkEgaW52YWxpZENvbG9yKCkgeyByZXR1cm4g
T3B0aW9uYWxSR0JBKCk7IH0KKyAgICBPcHRpb25hbFJHQkEgYm9yZGVyTGVmdENvbG9yKCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5sZWZ0KCkuY29sb3IoKTsgfQorICAgIE9wdGlv
bmFsUkdCQSBib3JkZXJSaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRl
ci5yaWdodCgpLmNvbG9yKCk7IH0KKyAgICBPcHRpb25hbFJHQkEgYm9yZGVyVG9wQ29sb3IoKSBj
b25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnRvcCgpLmNvbG9yKCk7IH0KKyAgICBPcHRp
b25hbFJHQkEgYm9yZGVyQm90dG9tQ29sb3IoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9y
ZGVyLmJvdHRvbSgpLmNvbG9yKCk7IH0KKyAgICBPcHRpb25hbFJHQkEgYmFja2dyb3VuZENvbG9y
KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kLT5jb2xvcigpOyB9CisgICAgT3B0aW9uYWxS
R0JBIGNvbG9yKCkgY29uc3Q7CisgICAgT3B0aW9uYWxSR0JBIGNvbHVtblJ1bGVDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sLT5tX3J1bGUuY29s
b3IoKTsgfQorICAgIE9wdGlvbmFsUkdCQSBvdXRsaW5lQ29sb3IoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tncm91bmQtPm91dGxpbmUoKS5jb2xvcigpOyB9CisgICAgT3B0aW9uYWxSR0JBIHRleHRF
bXBoYXNpc0NvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBo
YXNpc0NvbG9yOyB9CisgICAgT3B0aW9uYWxSR0JBIHRleHRGaWxsQ29sb3IoKSBjb25zdCB7IHJl
dHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEZpbGxDb2xvcjsgfQorICAgIE9wdGlvbmFsUkdC
QSB0ZXh0U3Ryb2tlQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4
dFN0cm9rZUNvbG9yOyB9CisgICAgT3B0aW9uYWxSR0JBIHZpc2l0ZWRMaW5rQ29sb3IoKSBjb25z
dDsKKyAgICBPcHRpb25hbFJHQkEgdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xv
cjsgfQorICAgIE9wdGlvbmFsUkdCQSB2aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENv
bG9yOyB9CisgICAgT3B0aW9uYWxSR0JBIHZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rQm9yZGVyUmln
aHRDb2xvcjsgfQorICAgIE9wdGlvbmFsUkdCQSB2aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9y
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRlZExpbmtCb3Jk
ZXJCb3R0b21Db2xvcjsgfQorICAgIE9wdGlvbmFsUkdCQSB2aXNpdGVkTGlua0JvcmRlclRvcENv
bG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRlZExpbmtC
b3JkZXJUb3BDb2xvcjsgfQorICAgIE9wdGlvbmFsUkdCQSB2aXNpdGVkTGlua091dGxpbmVDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rT3V0
bGluZUNvbG9yOyB9CisgICAgT3B0aW9uYWxSR0JBIHZpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9y
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1fdmlz
aXRlZExpbmtDb2x1bW5SdWxlQ29sb3I7IH0KKyAgICBPcHRpb25hbFJHQkEgdGV4dERlY29yYXRp
b25Db2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RleHREZWNv
cmF0aW9uQ29sb3I7IH0KKyAgICBPcHRpb25hbFJHQkEgdmlzaXRlZExpbmtUZXh0RGVjb3JhdGlv
bkNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRlZExp
bmtUZXh0RGVjb3JhdGlvbkNvbG9yOyB9CisgICAgT3B0aW9uYWxSR0JBIHZpc2l0ZWRMaW5rVGV4
dEVtcGhhc2lzQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dmlzaXRl
ZExpbmtUZXh0RW1waGFzaXNDb2xvcjsgfQorICAgIE9wdGlvbmFsUkdCQSB2aXNpdGVkTGlua1Rl
eHRGaWxsQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExp
bmtUZXh0RmlsbENvbG9yOyB9CisgICAgT3B0aW9uYWxSR0JBIHZpc2l0ZWRMaW5rVGV4dFN0cm9r
ZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rVGV4
dFN0cm9rZUNvbG9yOyB9CisKKyAgICBPcHRpb25hbFJHQkEgY29sb3JJbmNsdWRpbmdGYWxsYmFj
ayhpbnQgY29sb3JQcm9wZXJ0eSwgYm9vbCB2aXNpdGVkTGluaykgY29uc3Q7CisKKyAgICBPcHRp
b25hbFJHQkEgc3RvcENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5zdG9wQ29sb3Io
KTsgfQorICAgIE9wdGlvbmFsUkdCQSBmbG9vZENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5
bGUoKS5mbG9vZENvbG9yKCk7IH0KKyAgICBPcHRpb25hbFJHQkEgbGlnaHRpbmdDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpOyB9CiAKICAgICB2b2lkIGFw
cGVuZENvbnRlbnQoc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPik7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAppbmRleCBiZjk3YWNl
MTdlNDU5ODQxNWRlMDVlYTE1MDFhOGQ5YjgxNTA3OWQ4Li41ZTQ2YzA5ZTY1ZGFjZTE5MzgxNTgy
NTk4ZWY0Mzg5MDAxMzJkOTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU1ZHUmVuZGVyU3R5bGUuaApAQCAtNzUsMTkgKzc1LDE5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgRUdseXBoT3JpZW50YXRpb24gaW5pdGlhbEdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCgpIHsg
cmV0dXJuIEdPX0FVVE87IH0KICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbEZpbGxPcGFjaXR5KCkg
eyByZXR1cm4gMTsgfQogICAgIHN0YXRpYyBTVkdQYWludDo6U1ZHUGFpbnRUeXBlIGluaXRpYWxG
aWxsUGFpbnRUeXBlKCkgeyByZXR1cm4gU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfUkdCQ09MT1I7
IH0KLSAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbEZpbGxQYWludENvbG9yKCkgeyByZXR1cm4gQ29s
b3I6OmJsYWNrOyB9CisgICAgc3RhdGljIE9wdGlvbmFsUkdCQSBpbml0aWFsRmlsbFBhaW50Q29s
b3IoKSB7IHJldHVybiBPcHRpb25hbFJHQkE6OmJsYWNrOyB9CiAgICAgc3RhdGljIFN0cmluZyBp
bml0aWFsRmlsbFBhaW50VXJpKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICBzdGF0aWMgZmxv
YXQgaW5pdGlhbFN0cm9rZU9wYWNpdHkoKSB7IHJldHVybiAxOyB9CiAgICAgc3RhdGljIFNWR1Bh
aW50OjpTVkdQYWludFR5cGUgaW5pdGlhbFN0cm9rZVBhaW50VHlwZSgpIHsgcmV0dXJuIFNWR1Bh
aW50OjpTVkdfUEFJTlRUWVBFX05PTkU7IH0KLSAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbFN0cm9r
ZVBhaW50Q29sb3IoKSB7IHJldHVybiBDb2xvcigpOyB9CisgICAgc3RhdGljIE9wdGlvbmFsUkdC
QSBpbml0aWFsU3Ryb2tlUGFpbnRDb2xvcigpIHsgcmV0dXJuIE9wdGlvbmFsUkdCQSgpOyB9CiAg
ICAgc3RhdGljIFN0cmluZyBpbml0aWFsU3Ryb2tlUGFpbnRVcmkoKSB7IHJldHVybiBTdHJpbmco
KTsgfQogICAgIHN0YXRpYyBWZWN0b3I8U1ZHTGVuZ3RoPiBpbml0aWFsU3Ryb2tlRGFzaEFycmF5
KCkgeyByZXR1cm4gVmVjdG9yPFNWR0xlbmd0aD4oKTsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0
aWFsU3Ryb2tlTWl0ZXJMaW1pdCgpIHsgcmV0dXJuIDQ7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5p
dGlhbFN0b3BPcGFjaXR5KCkgeyByZXR1cm4gMTsgfQotICAgIHN0YXRpYyBDb2xvciBpbml0aWFs
U3RvcENvbG9yKCkgeyByZXR1cm4gQ29sb3IoMCwgMCwgMCk7IH0KKyAgICBzdGF0aWMgT3B0aW9u
YWxSR0JBIGluaXRpYWxTdG9wQ29sb3IoKSB7IHJldHVybiBPcHRpb25hbFJHQkEoMCwgMCwgMCk7
IH0KICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbEZsb29kT3BhY2l0eSgpIHsgcmV0dXJuIDE7IH0K
LSAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbEZsb29kQ29sb3IoKSB7IHJldHVybiBDb2xvcigwLCAw
LCAwKTsgfQotICAgIHN0YXRpYyBDb2xvciBpbml0aWFsTGlnaHRpbmdDb2xvcigpIHsgcmV0dXJu
IENvbG9yKDI1NSwgMjU1LCAyNTUpOyB9CisgICAgc3RhdGljIE9wdGlvbmFsUkdCQSBpbml0aWFs
Rmxvb2RDb2xvcigpIHsgcmV0dXJuIE9wdGlvbmFsUkdCQSgwLCAwLCAwKTsgfQorICAgIHN0YXRp
YyBPcHRpb25hbFJHQkEgaW5pdGlhbExpZ2h0aW5nQ29sb3IoKSB7IHJldHVybiBPcHRpb25hbFJH
QkEoMjU1LCAyNTUsIDI1NSk7IH0KICAgICBzdGF0aWMgU2hhZG93RGF0YSogaW5pdGlhbFNoYWRv
dygpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgU3RyaW5nIGluaXRpYWxDbGlwcGVyUmVzb3Vy
Y2UoKSB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHN0YXRpYyBTdHJpbmcgaW5pdGlhbEZpbHRl
clJlc291cmNlKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KQEAgLTE3NCw3ICsxNzQsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBmaWxsLmFjY2VzcygpLT5vcGFjaXR5ID0gb2JqOwogICAgIH0KIAot
ICAgIHZvaWQgc2V0RmlsbFBhaW50KFNWR1BhaW50OjpTVkdQYWludFR5cGUgdHlwZSwgY29uc3Qg
Q29sb3ImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHVyaSwgYm9vbCBhcHBseVRvUmVndWxhclN0eWxl
ID0gdHJ1ZSwgYm9vbCBhcHBseVRvVmlzaXRlZExpbmtTdHlsZSA9IGZhbHNlKQorICAgIHZvaWQg
c2V0RmlsbFBhaW50KFNWR1BhaW50OjpTVkdQYWludFR5cGUgdHlwZSwgY29uc3QgT3B0aW9uYWxS
R0JBJiBjb2xvciwgY29uc3QgU3RyaW5nJiB1cmksIGJvb2wgYXBwbHlUb1JlZ3VsYXJTdHlsZSA9
IHRydWUsIGJvb2wgYXBwbHlUb1Zpc2l0ZWRMaW5rU3R5bGUgPSBmYWxzZSkKICAgICB7CiAgICAg
ICAgIGlmIChhcHBseVRvUmVndWxhclN0eWxlKSB7CiAgICAgICAgICAgICBpZiAoIShmaWxsLT5w
YWludFR5cGUgPT0gdHlwZSkpCkBAIC0yMDAsNyArMjAwLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgc3Ryb2tlLmFjY2VzcygpLT5vcGFjaXR5ID0gb2JqOwogICAgIH0KIAotICAgIHZvaWQgc2V0
U3Ryb2tlUGFpbnQoU1ZHUGFpbnQ6OlNWR1BhaW50VHlwZSB0eXBlLCBjb25zdCBDb2xvciYgY29s
b3IsIGNvbnN0IFN0cmluZyYgdXJpLCBib29sIGFwcGx5VG9SZWd1bGFyU3R5bGUgPSB0cnVlLCBi
b29sIGFwcGx5VG9WaXNpdGVkTGlua1N0eWxlID0gZmFsc2UpCisgICAgdm9pZCBzZXRTdHJva2VQ
YWludChTVkdQYWludDo6U1ZHUGFpbnRUeXBlIHR5cGUsIGNvbnN0IE9wdGlvbmFsUkdCQSYgY29s
b3IsIGNvbnN0IFN0cmluZyYgdXJpLCBib29sIGFwcGx5VG9SZWd1bGFyU3R5bGUgPSB0cnVlLCBi
b29sIGFwcGx5VG9WaXNpdGVkTGlua1N0eWxlID0gZmFsc2UpCiAgICAgewogICAgICAgICBpZiAo
YXBwbHlUb1JlZ3VsYXJTdHlsZSkgewogICAgICAgICAgICAgaWYgKCEoc3Ryb2tlLT5wYWludFR5
cGUgPT0gdHlwZSkpCkBAIC0yNTYsNyArMjU2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgc3Rv
cHMuYWNjZXNzKCktPm9wYWNpdHkgPSBvYmo7CiAgICAgfQogCi0gICAgdm9pZCBzZXRTdG9wQ29s
b3IoY29uc3QgQ29sb3ImIG9iaikKKyAgICB2b2lkIHNldFN0b3BDb2xvcihjb25zdCBPcHRpb25h
bFJHQkEmIG9iaikKICAgICB7CiAgICAgICAgIGlmICghKHN0b3BzLT5jb2xvciA9PSBvYmopKQog
ICAgICAgICAgICAgc3RvcHMuYWNjZXNzKCktPmNvbG9yID0gb2JqOwpAQCAtMjY4LDEzICsyNjgs
MTMgQEAgcHVibGljOgogICAgICAgICAgICAgbWlzYy5hY2Nlc3MoKS0+Zmxvb2RPcGFjaXR5ID0g
b2JqOwogICAgIH0KIAotICAgIHZvaWQgc2V0Rmxvb2RDb2xvcihjb25zdCBDb2xvciYgb2JqKQor
ICAgIHZvaWQgc2V0Rmxvb2RDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIG9iaikKICAgICB7CiAg
ICAgICAgIGlmICghKG1pc2MtPmZsb29kQ29sb3IgPT0gb2JqKSkKICAgICAgICAgICAgIG1pc2Mu
YWNjZXNzKCktPmZsb29kQ29sb3IgPSBvYmo7CiAgICAgfQogCi0gICAgdm9pZCBzZXRMaWdodGlu
Z0NvbG9yKGNvbnN0IENvbG9yJiBvYmopCisgICAgdm9pZCBzZXRMaWdodGluZ0NvbG9yKGNvbnN0
IE9wdGlvbmFsUkdCQSYgb2JqKQogICAgIHsKICAgICAgICAgaWYgKCEobWlzYy0+bGlnaHRpbmdD
b2xvciA9PSBvYmopKQogICAgICAgICAgICAgbWlzYy5hY2Nlc3MoKS0+bGlnaHRpbmdDb2xvciA9
IG9iajsKQEAgLTM0NiwxMSArMzQ2LDExIEBAIHB1YmxpYzoKICAgICBFR2x5cGhPcmllbnRhdGlv
biBnbHlwaE9yaWVudGF0aW9uVmVydGljYWwoKSBjb25zdCB7IHJldHVybiAoRUdseXBoT3JpZW50
YXRpb24pIHN2Z19pbmhlcml0ZWRfZmxhZ3MuX2dseXBoT3JpZW50YXRpb25WZXJ0aWNhbDsgfQog
ICAgIGZsb2F0IGZpbGxPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gZmlsbC0+b3BhY2l0eTsgfQog
ICAgIGNvbnN0IFNWR1BhaW50OjpTVkdQYWludFR5cGUmIGZpbGxQYWludFR5cGUoKSBjb25zdCB7
IHJldHVybiBmaWxsLT5wYWludFR5cGU7IH0KLSAgICBjb25zdCBDb2xvciYgZmlsbFBhaW50Q29s
b3IoKSBjb25zdCB7IHJldHVybiBmaWxsLT5wYWludENvbG9yOyB9CisgICAgY29uc3QgT3B0aW9u
YWxSR0JBJiBmaWxsUGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIGZpbGwtPnBhaW50Q29sb3I7
IH0KICAgICBjb25zdCBTdHJpbmcmIGZpbGxQYWludFVyaSgpIGNvbnN0IHsgcmV0dXJuIGZpbGwt
PnBhaW50VXJpOyB9ICAgIAogICAgIGZsb2F0IHN0cm9rZU9wYWNpdHkoKSBjb25zdCB7IHJldHVy
biBzdHJva2UtPm9wYWNpdHk7IH0KICAgICBjb25zdCBTVkdQYWludDo6U1ZHUGFpbnRUeXBlJiBz
dHJva2VQYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBzdHJva2UtPnBhaW50VHlwZTsgfQotICAg
IGNvbnN0IENvbG9yJiBzdHJva2VQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3Ryb2tlLT5w
YWludENvbG9yOyB9CisgICAgY29uc3QgT3B0aW9uYWxSR0JBJiBzdHJva2VQYWludENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gc3Ryb2tlLT5wYWludENvbG9yOyB9CiAgICAgY29uc3QgU3RyaW5nJiBz
dHJva2VQYWludFVyaSgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZS0+cGFpbnRVcmk7IH0KICAgICBW
ZWN0b3I8U1ZHTGVuZ3RoPiBzdHJva2VEYXNoQXJyYXkoKSBjb25zdCB7IHJldHVybiBzdHJva2Ut
PmRhc2hBcnJheTsgfQogICAgIGZsb2F0IHN0cm9rZU1pdGVyTGltaXQoKSBjb25zdCB7IHJldHVy
biBzdHJva2UtPm1pdGVyTGltaXQ7IH0KQEAgLTM1OCwxMCArMzU4LDEwIEBAIHB1YmxpYzoKICAg
ICBjb25zdCBMZW5ndGgmIHN0cm9rZURhc2hPZmZzZXQoKSBjb25zdCB7IHJldHVybiBzdHJva2Ut
PmRhc2hPZmZzZXQ7IH0KICAgICBTVkdMZW5ndGgga2VybmluZygpIGNvbnN0IHsgcmV0dXJuIHRl
eHQtPmtlcm5pbmc7IH0KICAgICBmbG9hdCBzdG9wT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN0
b3BzLT5vcGFjaXR5OyB9Ci0gICAgY29uc3QgQ29sb3ImIHN0b3BDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIHN0b3BzLT5jb2xvcjsgfQorICAgIGNvbnN0IE9wdGlvbmFsUkdCQSYgc3RvcENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gc3RvcHMtPmNvbG9yOyB9CiAgICAgZmxvYXQgZmxvb2RPcGFjaXR5KCkg
Y29uc3QgeyByZXR1cm4gbWlzYy0+Zmxvb2RPcGFjaXR5OyB9Ci0gICAgY29uc3QgQ29sb3ImIGZs
b29kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtaXNjLT5mbG9vZENvbG9yOyB9Ci0gICAgY29uc3Qg
Q29sb3ImIGxpZ2h0aW5nQ29sb3IoKSBjb25zdCB7IHJldHVybiBtaXNjLT5saWdodGluZ0NvbG9y
OyB9CisgICAgY29uc3QgT3B0aW9uYWxSR0JBJiBmbG9vZENvbG9yKCkgY29uc3QgeyByZXR1cm4g
bWlzYy0+Zmxvb2RDb2xvcjsgfQorICAgIGNvbnN0IE9wdGlvbmFsUkdCQSYgbGlnaHRpbmdDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1pc2MtPmxpZ2h0aW5nQ29sb3I7IH0KICAgICBTVkdMZW5ndGgg
YmFzZWxpbmVTaGlmdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbWlzYy0+YmFzZWxpbmVTaGlmdFZh
bHVlOyB9CiAgICAgU2hhZG93RGF0YSogc2hhZG93KCkgY29uc3QgeyByZXR1cm4gc2hhZG93U1ZH
LT5zaGFkb3cuZ2V0KCk7IH0KICAgICBjb25zdCBMZW5ndGgmIGN4KCkgY29uc3QgeyByZXR1cm4g
bGF5b3V0LT5jeDsgfQpAQCAtMzgyLDEwICszODIsMTAgQEAgcHVibGljOgogICAgIFZlY3RvcjxQ
YWludFR5cGUsIDM+IHBhaW50VHlwZXNGb3JQYWludE9yZGVyKCkgY29uc3Q7CiAKICAgICBjb25z
dCBTVkdQYWludDo6U1ZHUGFpbnRUeXBlJiB2aXNpdGVkTGlua0ZpbGxQYWludFR5cGUoKSBjb25z
dCB7IHJldHVybiBmaWxsLT52aXNpdGVkTGlua1BhaW50VHlwZTsgfQotICAgIGNvbnN0IENvbG9y
JiB2aXNpdGVkTGlua0ZpbGxQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gZmlsbC0+dmlzaXRl
ZExpbmtQYWludENvbG9yOyB9CisgICAgY29uc3QgT3B0aW9uYWxSR0JBJiB2aXNpdGVkTGlua0Zp
bGxQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gZmlsbC0+dmlzaXRlZExpbmtQYWludENvbG9y
OyB9CiAgICAgY29uc3QgU3RyaW5nJiB2aXNpdGVkTGlua0ZpbGxQYWludFVyaSgpIGNvbnN0IHsg
cmV0dXJuIGZpbGwtPnZpc2l0ZWRMaW5rUGFpbnRVcmk7IH0KICAgICBjb25zdCBTVkdQYWludDo6
U1ZHUGFpbnRUeXBlJiB2aXNpdGVkTGlua1N0cm9rZVBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJu
IHN0cm9rZS0+dmlzaXRlZExpbmtQYWludFR5cGU7IH0KLSAgICBjb25zdCBDb2xvciYgdmlzaXRl
ZExpbmtTdHJva2VQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3Ryb2tlLT52aXNpdGVkTGlu
a1BhaW50Q29sb3I7IH0KKyAgICBjb25zdCBPcHRpb25hbFJHQkEmIHZpc2l0ZWRMaW5rU3Ryb2tl
UGFpbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZS0+dmlzaXRlZExpbmtQYWludENvbG9y
OyB9CiAgICAgY29uc3QgU3RyaW5nJiB2aXNpdGVkTGlua1N0cm9rZVBhaW50VXJpKCkgY29uc3Qg
eyByZXR1cm4gc3Ryb2tlLT52aXNpdGVkTGlua1BhaW50VXJpOyB9CiAKICAgICAvLyBjb252ZW5p
ZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRl
clN0eWxlRGVmcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0
eWxlRGVmcy5oCmluZGV4IDc2YzFhNDllMzEyMjhkNmFmOGE3ZTAzYTU2MzI3ZTA3OGMxYzIyN2Iu
LmE2ZGEzNmNhZWRlNzEzYWUwYjQ2YWZmYThiYWM3MWM1OGZjYTg1NTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmgKQEAgLTEy
OCwxMCArMTI4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBmbG9hdCBvcGFj
aXR5OwogICAgICAgICBTVkdQYWludDo6U1ZHUGFpbnRUeXBlIHBhaW50VHlwZTsKLSAgICAgICAg
Q29sb3IgcGFpbnRDb2xvcjsKKyAgICAgICAgT3B0aW9uYWxSR0JBIHBhaW50Q29sb3I7CiAgICAg
ICAgIFN0cmluZyBwYWludFVyaTsKICAgICAgICAgU1ZHUGFpbnQ6OlNWR1BhaW50VHlwZSB2aXNp
dGVkTGlua1BhaW50VHlwZTsKLSAgICAgICAgQ29sb3IgdmlzaXRlZExpbmtQYWludENvbG9yOwor
ICAgICAgICBPcHRpb25hbFJHQkEgdmlzaXRlZExpbmtQYWludENvbG9yOwogICAgICAgICBTdHJp
bmcgdmlzaXRlZExpbmtQYWludFVyaTsKIAogICAgIHByaXZhdGU6CkBAIC0xNTgsMTAgKzE1OCwx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFZlY3RvcjxTVkdMZW5ndGg+IGRhc2hB
cnJheTsKIAogICAgICAgICBTVkdQYWludDo6U1ZHUGFpbnRUeXBlIHBhaW50VHlwZTsKLSAgICAg
ICAgQ29sb3IgcGFpbnRDb2xvcjsKKyAgICAgICAgT3B0aW9uYWxSR0JBIHBhaW50Q29sb3I7CiAg
ICAgICAgIFN0cmluZyBwYWludFVyaTsKICAgICAgICAgU1ZHUGFpbnQ6OlNWR1BhaW50VHlwZSB2
aXNpdGVkTGlua1BhaW50VHlwZTsKLSAgICAgICAgQ29sb3IgdmlzaXRlZExpbmtQYWludENvbG9y
OworICAgICAgICBPcHRpb25hbFJHQkEgdmlzaXRlZExpbmtQYWludENvbG9yOwogICAgICAgICBT
dHJpbmcgdmlzaXRlZExpbmtQYWludFVyaTsKIAogICAgIHByaXZhdGU6ICAgICAgICAKQEAgLTE4
MSw3ICsxODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KIAogICAgICAgICBm
bG9hdCBvcGFjaXR5OwotICAgICAgICBDb2xvciBjb2xvcjsKKyAgICAgICAgT3B0aW9uYWxSR0JB
IGNvbG9yOwogCiAgICAgcHJpdmF0ZTogICAgICAgIAogICAgICAgICBTdHlsZVN0b3BEYXRhKCk7
CkBAIC0yMTgsOSArMjE4LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogICAgICAgICB9CiAKLSAgICAgICAgQ29sb3IgZmxvb2RD
b2xvcjsKKyAgICAgICAgT3B0aW9uYWxSR0JBIGZsb29kQ29sb3I7CiAgICAgICAgIGZsb2F0IGZs
b29kT3BhY2l0eTsKLSAgICAgICAgQ29sb3IgbGlnaHRpbmdDb2xvcjsKKyAgICAgICAgT3B0aW9u
YWxSR0JBIGxpZ2h0aW5nQ29sb3I7CiAKICAgICAgICAgLy8gbm9uLWluaGVyaXRlZCB0ZXh0IHN0
dWZmIGxpdmVzIGhlcmUgbm90IGluIFN0eWxlVGV4dERhdGEuCiAgICAgICAgIFNWR0xlbmd0aCBi
YXNlbGluZVNoaWZ0VmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU2hhZG93RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRv
d0RhdGEuaAppbmRleCA4YTFjYWMzMzgzNmU3MWM5ZjJiZWUwZDNlOGE4MTMyY2RhNzZiODAyLi44
NDA1ZGY5MmQ1NzM0OTlmZmRjNTY0MzgwZjdiNWU0NmQ1Nzg3ODg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGlj
OgogICAgIHsKICAgICB9CiAKLSAgICBTaGFkb3dEYXRhKGNvbnN0IEludFBvaW50JiBsb2NhdGlv
biwgaW50IHJhZGl1cywgaW50IHNwcmVhZCwgU2hhZG93U3R5bGUgc3R5bGUsIGJvb2wgaXNXZWJr
aXRCb3hTaGFkb3csIGNvbnN0IENvbG9yJiBjb2xvcikKKyAgICBTaGFkb3dEYXRhKGNvbnN0IElu
dFBvaW50JiBsb2NhdGlvbiwgaW50IHJhZGl1cywgaW50IHNwcmVhZCwgU2hhZG93U3R5bGUgc3R5
bGUsIGJvb2wgaXNXZWJraXRCb3hTaGFkb3csIGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IpCiAg
ICAgICAgIDogbV9sb2NhdGlvbihsb2NhdGlvbikKICAgICAgICAgLCBtX3JhZGl1cyhyYWRpdXMp
CiAgICAgICAgICwgbV9zcHJlYWQoc3ByZWFkKQpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAg
ICAgfQogICAgIGludCBzcHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3NwcmVhZDsgfQogICAgIFNo
YWRvd1N0eWxlIHN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZTsgfQotICAgIGNvbnN0IENv
bG9yJiBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH0KKyAgICBjb25zdCBPcHRpb25h
bFJHQkEmIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfQogICAgIGJvb2wgaXNXZWJr
aXRCb3hTaGFkb3coKSBjb25zdCB7IHJldHVybiBtX2lzV2Via2l0Qm94U2hhZG93OyB9CiAKICAg
ICBjb25zdCBTaGFkb3dEYXRhKiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0LmdldCgpOyB9
CkBAIC05MSw3ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgSW50UG9pbnQgbV9sb2NhdGlvbjsKICAg
ICBpbnQgbV9yYWRpdXM7IC8vIFRoaXMgaXMgdGhlICJibHVyIHJhZGl1cyIsIG9yIHR3aWNlIHRo
ZSBzdGFuZGFyZCBkZXZpYXRpb24gb2YgdGhlIEdhdXNzaWFuIGJsdXIuCiAgICAgaW50IG1fc3By
ZWFkOwotICAgIENvbG9yIG1fY29sb3I7CisgICAgT3B0aW9uYWxSR0JBIG1fY29sb3I7CiAgICAg
U2hhZG93U3R5bGUgbV9zdHlsZTsKICAgICBib29sIG1faXNXZWJraXRCb3hTaGFkb3c7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IG1fbmV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5oCmluZGV4IDJlMWI2OTgy
MDcwMDk0NzNlZmZkNzEyMDg3ZjliY2VjMzdlYmE4NjUuLjc2NjFkNTFiZWM3M2QyZjRiNWVjMGI0
OTk1MWU4NDM4MDRjMjUxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc0VxdWl2YWxlbnRGb3JQYWludGluZyhjb25zdCBTdHlsZUJhY2tncm91bmREYXRh
JikgY29uc3Q7CiAKICAgICBjb25zdCBGaWxsTGF5ZXImIGJhY2tncm91bmQoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tncm91bmQ7IH0KLSAgICBjb25zdCBDb2xvciYgY29sb3IoKSBjb25zdCB7IHJl
dHVybiBtX2NvbG9yOyB9CisgICAgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvcigpIGNvbnN0IHsg
cmV0dXJuIG1fY29sb3I7IH0KICAgICBjb25zdCBPdXRsaW5lVmFsdWUmIG91dGxpbmUoKSBjb25z
dCB7IHJldHVybiBtX291dGxpbmU7IH0KIAogcHJpdmF0ZToKQEAgLTU4LDcgKzU4LDcgQEAgcHJp
dmF0ZToKICAgICBTdHlsZUJhY2tncm91bmREYXRhKGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEm
KTsgCiAKICAgICBGaWxsTGF5ZXIgbV9iYWNrZ3JvdW5kOwotICAgIENvbG9yIG1fY29sb3I7Cisg
ICAgT3B0aW9uYWxSR0JBIG1fY29sb3I7CiAgICAgT3V0bGluZVZhbHVlIG1fb3V0bGluZTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVy
aXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRl
ZERhdGEuaAppbmRleCBhZTJjZjY3OGMzOWVkZDhjY2M1MjU2MzY2Mzg5OWExYmM4YmI3MzczLi4z
YzdjMGFkY2E3ZmIyMjM1OGZjMDJkZDM2MGQ1N2U3OGFhNDg1MWQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5oCkBAIC01Nyw4
ICs1Nyw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgRm9udENhc2NhZGUgZm9udENhc2NhZGU7
Ci0gICAgQ29sb3IgY29sb3I7Ci0gICAgQ29sb3IgdmlzaXRlZExpbmtDb2xvcjsKKyAgICBPcHRp
b25hbFJHQkEgY29sb3I7CisgICAgT3B0aW9uYWxSR0JBIHZpc2l0ZWRMaW5rQ29sb3I7CiAKIHBy
aXZhdGU6CiAgICAgU3R5bGVJbmhlcml0ZWREYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5oCmluZGV4IGYzNzU2MjEwOTFiZDhi
NzBlMjZjOTA0ZTliZjhlZjYwY2RjYjE0ZmQuLjk3NzFkMDUwZWIyYzRkYTIwNjA0NDk1YjY5NzAy
MmZhNjJhMmI0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZU11bHRpQ29sRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZU11bHRpQ29sRGF0YS5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25l
ZCBzaG9ydCBtX2NvdW50OwogICAgIGZsb2F0IG1fZ2FwOwogICAgIEJvcmRlclZhbHVlIG1fcnVs
ZTsKLSAgICBDb2xvciBtX3Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yOworICAgIE9wdGlvbmFs
UkdCQSBtX3Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yOwogCiAgICAgYm9vbCBtX2F1dG9XaWR0
aCA6IDE7CiAgICAgYm9vbCBtX2F1dG9Db3VudCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXgg
NmIzOTI0YzRiY2E2YjY3OWI1ZTYxMDI1ZDdmNzQzMjkxYzhhZjY5NC4uNTdjMzVhN2RmNmMxMTUy
MWFlMGQzYmRlNDBiNjc0MThiZWQxYzU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcApAQCAtMzMsOSAr
MzMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBHcmVhdGVyVGhhbk9yU2FtZVNp
emVBc1N0eWxlUmFyZUluaGVyaXRlZERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmVhdGVyVGhh
bk9yU2FtZVNpemVBc1N0eWxlUmFyZUluaGVyaXRlZERhdGE+IHsKICAgICB2b2lkKiBzdHlsZUlt
YWdlOwotICAgIENvbG9yIGZpcnN0Q29sb3I7CisgICAgT3B0aW9uYWxSR0JBIGZpcnN0Q29sb3I7
CiAgICAgZmxvYXQgZmlyc3RGbG9hdDsKLSAgICBDb2xvciBjb2xvcnNbNV07CisgICAgT3B0aW9u
YWxSR0JBIGNvbG9yc1s1XTsKICAgICB2b2lkKiBvd25QdHJzWzFdOwogICAgIEF0b21pY1N0cmlu
ZyBhdG9taWNTdHJpbmdzWzVdOwogICAgIHZvaWQqIHJlZlB0cnNbMl07CkBAIC00Nyw3ICs0Nyw3
IEBAIHN0cnVjdCBHcmVhdGVyVGhhbk9yU2FtZVNpemVBc1N0eWxlUmFyZUluaGVyaXRlZERhdGEg
OiBwdWJsaWMgUmVmQ291bnRlZDxHcmVhdGVyCiAgICAgc2hvcnQgaHlwaGVuYXRpb25TaG9ydHNb
M107CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgQ29sb3IgY29tcG9zaXRpb25Db2xvcjsKKyAg
ICBPcHRpb25hbFJHQkEgY29tcG9zaXRpb25Db2xvcjsKICNlbmRpZgogI2lmIEVOQUJMRShJT1Nf
VEVYVF9BVVRPU0laSU5HKQogICAgIFRleHRTaXplQWRqdXN0bWVudCB0ZXh0U2l6ZUFkanVzdDsK
QEAgLTU4LDcgKzU4LDcgQEAgc3RydWN0IEdyZWF0ZXJUaGFuT3JTYW1lU2l6ZUFzU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEdyZWF0ZXIKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBDb2xvciB0YXBIaWdobGlnaHRDb2xvcjsKKyAgICBP
cHRpb25hbFJHQkEgdGFwSGlnaGxpZ2h0Q29sb3I7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5o
CmluZGV4IGU4NTAzMWIxODU0Mzg0NTM1N2ViZjVmNzJjZDJmYjk0YTc1NzE5NjQuLmQzM2FhNTVk
NzAzMmEzNTI1YWNhMWJkMmYxZTljNWNlZTdiZDc5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaApAQCAtNjAs
MTQgKzYwLDE0IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxTdHlsZUltYWdlPiBsaXN0U3R5bGVJ
bWFnZTsKIAotICAgIENvbG9yIHRleHRTdHJva2VDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgdGV4
dFN0cm9rZUNvbG9yOwogICAgIGZsb2F0IHRleHRTdHJva2VXaWR0aDsKLSAgICBDb2xvciB0ZXh0
RmlsbENvbG9yOwotICAgIENvbG9yIHRleHRFbXBoYXNpc0NvbG9yOworICAgIE9wdGlvbmFsUkdC
QSB0ZXh0RmlsbENvbG9yOworICAgIE9wdGlvbmFsUkdCQSB0ZXh0RW1waGFzaXNDb2xvcjsKICAg
ICAKLSAgICBDb2xvciB2aXNpdGVkTGlua1RleHRTdHJva2VDb2xvcjsKLSAgICBDb2xvciB2aXNp
dGVkTGlua1RleHRGaWxsQ29sb3I7Ci0gICAgQ29sb3IgdmlzaXRlZExpbmtUZXh0RW1waGFzaXND
b2xvcjsgICAgCisgICAgT3B0aW9uYWxSR0JBIHZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yOwor
ICAgIE9wdGlvbmFsUkdCQSB2aXNpdGVkTGlua1RleHRGaWxsQ29sb3I7CisgICAgT3B0aW9uYWxS
R0JBIHZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3I7ICAgIAogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFNoYWRvd0RhdGE+IHRleHRTaGFkb3c7IC8vIE91ciB0ZXh0IHNoYWRvdyBpbmZvcm1hdGlv
biBmb3Igc2hhZG93ZWQgdGV4dCBkcmF3aW5nLgogICAgIApAQCAtMTU0LDcgKzE1NCw3IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBDb2xvciB0YXBI
aWdobGlnaHRDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgdGFwSGlnaGxpZ2h0Q29sb3I7CiAjZW5k
aWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCmluZGV4IGRjOTdlMTU0NDMzZWI4MGRj
NjFkNzc0OGNiZmNkZjZmMTc4MTI5YmUuLmE1NTg2MDU2NjY1N2FjNjdmNDU3ZDI4ZjQ4ZGM3Njc1
YTZmOGI2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaApAQCAtMTYzLDE0ICsxNjMsMTQgQEAgcHVi
bGljOgogCiAgICAgUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiBtX2NsaXBQYXRoOwogCi0gICAg
Q29sb3IgbV90ZXh0RGVjb3JhdGlvbkNvbG9yOwotICAgIENvbG9yIG1fdmlzaXRlZExpbmtUZXh0
RGVjb3JhdGlvbkNvbG9yOwotICAgIENvbG9yIG1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3I7
Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlua091dGxpbmVDb2xvcjsKLSAgICBDb2xvciBtX3Zpc2l0
ZWRMaW5rQm9yZGVyTGVmdENvbG9yOwotICAgIENvbG9yIG1fdmlzaXRlZExpbmtCb3JkZXJSaWdo
dENvbG9yOwotICAgIENvbG9yIG1fdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcjsKLSAgICBDb2xv
ciBtX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3I7CisgICAgT3B0aW9uYWxSR0JBIG1fdGV4
dERlY29yYXRpb25Db2xvcjsKKyAgICBPcHRpb25hbFJHQkEgbV92aXNpdGVkTGlua1RleHREZWNv
cmF0aW9uQ29sb3I7CisgICAgT3B0aW9uYWxSR0JBIG1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29s
b3I7CisgICAgT3B0aW9uYWxSR0JBIG1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3I7CisgICAgT3B0
aW9uYWxSR0JBIG1fdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3I7CisgICAgT3B0aW9uYWxSR0JB
IG1fdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yOworICAgIE9wdGlvbmFsUkdCQSBtX3Zpc2l0
ZWRMaW5rQm9yZGVyVG9wQ29sb3I7CisgICAgT3B0aW9uYWxSR0JBIG1fdmlzaXRlZExpbmtCb3Jk
ZXJCb3R0b21Db2xvcjsKIAogICAgIGludCBtX29yZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuY3BwCmluZGV4IDExMWRjNTc3MWE3
ZDllNWY4OTFhYzk5NjI2ZmRmNjM3Yzg3OGJkYzAuLjY5NzZjNjFiOGY4NDY4MjFhNzZhYTZmZjhh
MDEwYWJiZjZjOGRiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2UuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIGlubGluZSBib29sIGluaGVyaXRDb2xvckZyb21QYXJlbnRTdHlsZUlm
TmVlZGVkKFJlbmRlckVsZW1lbnQmIG9iamVjdCwgYm9vbCBhcHBseVRvRmlsbCwgQ29sb3ImIGNv
bG9yKQorc3RhdGljIGlubGluZSBib29sIGluaGVyaXRDb2xvckZyb21QYXJlbnRTdHlsZUlmTmVl
ZGVkKFJlbmRlckVsZW1lbnQmIG9iamVjdCwgYm9vbCBhcHBseVRvRmlsbCwgT3B0aW9uYWxSR0JB
JiBjb2xvcikKIHsKICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIGlubGluZSBib29sIGluaGVyaXRDb2xvckZyb21Q
YXJlbnRTdHlsZUlmTmVlZGVkKFJlbmRlckVsZW1lbnQmIG9iamVjdCwgYm8KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBSZW5kZXJTVkdSZXNvdXJjZSogcmVxdWVzdFBhaW50
aW5nUmVzb3VyY2UoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlIG1vZGUsIFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIENvbG9yJiBmYWxsYmFja0NvbG9yKQor
c3RhdGljIGlubGluZSBSZW5kZXJTVkdSZXNvdXJjZSogcmVxdWVzdFBhaW50aW5nUmVzb3VyY2Uo
UmVuZGVyU1ZHUmVzb3VyY2VNb2RlIG1vZGUsIFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUsIE9wdGlvbmFsUkdCQSYgZmFsbGJhY2tDb2xvcikKIHsKICAg
ICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZS5zdmdTdHlsZSgpOwogCkBA
IC03NCw3ICs3NCw3IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyU1ZHUmVzb3VyY2UqIHJlcXVlc3RQ
YWludGluZ1Jlc291cmNlKFJlbmRlclNWR1Jlc291cmNlTW9kZSBtCiAgICAgaWYgKHBhaW50VHlw
ZSA9PSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9OT05FKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIENvbG9yIGNvbG9yOworICAgIE9wdGlvbmFsUkdCQSBjb2xvcjsKICAgICBzd2l0
Y2ggKHBhaW50VHlwZSkgewogICAgIGNhc2UgU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfQ1VSUkVO
VENPTE9SOgogICAgIGNhc2UgU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfUkdCQ09MT1I6CkBAIC05
NCw5ICs5NCw5IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyU1ZHUmVzb3VyY2UqIHJlcXVlc3RQYWlu
dGluZ1Jlc291cmNlKFJlbmRlclNWR1Jlc291cmNlTW9kZSBtCiAKICAgICAgICAgLy8gRm9yIFNW
R19QQUlOVFRZUEVfQ1VSUkVOVENPTE9SLCAnY29sb3InIGFscmVhZHkgY29udGFpbnMgdGhlICd2
aXNpdGVkQ29sb3InLgogICAgICAgICBpZiAodmlzaXRlZFBhaW50VHlwZSA8IFNWR1BhaW50OjpT
VkdfUEFJTlRUWVBFX1VSSV9OT05FICYmIHZpc2l0ZWRQYWludFR5cGUgIT0gU1ZHUGFpbnQ6OlNW
R19QQUlOVFRZUEVfQ1VSUkVOVENPTE9SKSB7Ci0gICAgICAgICAgICBjb25zdCBDb2xvciYgdmlz
aXRlZENvbG9yID0gYXBwbHlUb0ZpbGwgPyBzdmdTdHlsZS52aXNpdGVkTGlua0ZpbGxQYWludENv
bG9yKCkgOiBzdmdTdHlsZS52aXNpdGVkTGlua1N0cm9rZVBhaW50Q29sb3IoKTsKKyAgICAgICAg
ICAgIGNvbnN0IE9wdGlvbmFsUkdCQSYgdmlzaXRlZENvbG9yID0gYXBwbHlUb0ZpbGwgPyBzdmdT
dHlsZS52aXNpdGVkTGlua0ZpbGxQYWludENvbG9yKCkgOiBzdmdTdHlsZS52aXNpdGVkTGlua1N0
cm9rZVBhaW50Q29sb3IoKTsKICAgICAgICAgICAgIGlmICh2aXNpdGVkQ29sb3IuaXNWYWxpZCgp
KQotICAgICAgICAgICAgICAgIGNvbG9yID0gQ29sb3IodmlzaXRlZENvbG9yLnJlZCgpLCB2aXNp
dGVkQ29sb3IuZ3JlZW4oKSwgdmlzaXRlZENvbG9yLmJsdWUoKSwgY29sb3IuYWxwaGEoKSk7Cisg
ICAgICAgICAgICAgICAgY29sb3IgPSBPcHRpb25hbFJHQkEodmlzaXRlZENvbG9yLnJlZCgpLCB2
aXNpdGVkQ29sb3IuZ3JlZW4oKSwgdmlzaXRlZENvbG9yLmJsdWUoKSwgY29sb3IuYWxwaGEoKSk7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEzNiwxMiArMTM2LDEyIEBAIHN0YXRpYyBpbmxpbmUg
UmVuZGVyU1ZHUmVzb3VyY2UqIHJlcXVlc3RQYWludGluZ1Jlc291cmNlKFJlbmRlclNWR1Jlc291
cmNlTW9kZSBtCiAgICAgcmV0dXJuIHVyaVJlc291cmNlOwogfQogCi1SZW5kZXJTVkdSZXNvdXJj
ZSogUmVuZGVyU1ZHUmVzb3VyY2U6OmZpbGxQYWludGluZ1Jlc291cmNlKFJlbmRlckVsZW1lbnQm
IHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIENvbG9yJiBmYWxsYmFja0NvbG9y
KQorUmVuZGVyU1ZHUmVzb3VyY2UqIFJlbmRlclNWR1Jlc291cmNlOjpmaWxsUGFpbnRpbmdSZXNv
dXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBP
cHRpb25hbFJHQkEmIGZhbGxiYWNrQ29sb3IpCiB7CiAgICAgcmV0dXJuIHJlcXVlc3RQYWludGlu
Z1Jlc291cmNlKEFwcGx5VG9GaWxsTW9kZSwgcmVuZGVyZXIsIHN0eWxlLCBmYWxsYmFja0NvbG9y
KTsKIH0KIAotUmVuZGVyU1ZHUmVzb3VyY2UqIFJlbmRlclNWR1Jlc291cmNlOjpzdHJva2VQYWlu
dGluZ1Jlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUsIENvbG9yJiBmYWxsYmFja0NvbG9yKQorUmVuZGVyU1ZHUmVzb3VyY2UqIFJlbmRlclNW
R1Jlc291cmNlOjpzdHJva2VQYWludGluZ1Jlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIE9wdGlvbmFsUkdCQSYgZmFsbGJhY2tDb2xvcikK
IHsKICAgICByZXR1cm4gcmVxdWVzdFBhaW50aW5nUmVzb3VyY2UoQXBwbHlUb1N0cm9rZU1vZGUs
IHJlbmRlcmVyLCBzdHlsZSwgZmFsbGJhY2tDb2xvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmgKaW5kZXggZWQ3YTcwZjUwNzVkYjc0
NmZlZGQ0ZTYzZjM0OWMwMDk2MTg0YTE0Ny4uNDIwNmE5MmQxNWNjN2NmNDFjMGM4ZGZlYzk1ODk2
ZWI2OGQ0ZTgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2UuaApAQCAtNDYsNyArNDYsNyBAQCBlbnVtIFJlbmRlclNWR1Jlc291cmNlTW9k
ZSB7CiAgICAgQXBwbHlUb1RleHRNb2RlICAgID0gMSA8PCAzIC8vIHVzZWQgaW4gY29tYmluYXRp
b24gd2l0aCBBcHBseVRve0ZpbGx8U3Ryb2tlfU1vZGUKIH07CiAKLWNsYXNzIENvbG9yOworY2xh
c3MgT3B0aW9uYWxSR0JBOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwogY2xhc3MgUGF0aDsKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVu
ZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0ID0gMDsKIAogICAgIC8vIEhl
bHBlciB1dGlsaXRpZXMgdXNlZCBpbiB0aGUgcmVuZGVyIHRyZWUgdG8gYWNjZXNzIHJlc291cmNl
cyB1c2VkIGZvciBwYWludGluZyBzaGFwZXMvdGV4dCAoZ3JhZGllbnRzICYgcGF0dGVybnMgJiBz
b2xpZCBjb2xvcnMgb25seSkKLSAgICBzdGF0aWMgUmVuZGVyU1ZHUmVzb3VyY2UqIGZpbGxQYWlu
dGluZ1Jlc291cmNlKFJlbmRlckVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIENvbG9yJiBm
YWxsYmFja0NvbG9yKTsKLSAgICBzdGF0aWMgUmVuZGVyU1ZHUmVzb3VyY2UqIHN0cm9rZVBhaW50
aW5nUmVzb3VyY2UoUmVuZGVyRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgQ29sb3ImIGZh
bGxiYWNrQ29sb3IpOworICAgIHN0YXRpYyBSZW5kZXJTVkdSZXNvdXJjZSogZmlsbFBhaW50aW5n
UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgT3B0aW9uYWxSR0JB
JiBmYWxsYmFja0NvbG9yKTsKKyAgICBzdGF0aWMgUmVuZGVyU1ZHUmVzb3VyY2UqIHN0cm9rZVBh
aW50aW5nUmVzb3VyY2UoUmVuZGVyRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgT3B0aW9u
YWxSR0JBJiBmYWxsYmFja0NvbG9yKTsKICAgICBzdGF0aWMgUmVuZGVyU1ZHUmVzb3VyY2VTb2xp
ZENvbG9yKiBzaGFyZWRTb2xpZFBhaW50aW5nUmVzb3VyY2UoKTsKIAogICAgIHN0YXRpYyB2b2lk
IG1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihSZW5kZXJPYmplY3Qm
LCBib29sIG5lZWRzTGF5b3V0ID0gdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuaAppbmRleCA0YmFk
NWI1MjI2ODYyYTFhZDY5OWI0NzI2ZDZhMGI3NTE4MThhNjY0Li4xNTYxYzc1YjRhMGFjNDNkNTFl
ZTA2OTBjZmFkYzYzM2UwODUxMzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmgKQEAgLTQwLDExICs0
MCwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNv
dXJjZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTb2xpZENvbG9yUmVzb3VyY2VUeXBl
OyB9CiAKLSAgICBjb25zdCBDb2xvciYgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9
Ci0gICAgdm9pZCBzZXRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9jb2xvciA9IGNvbG9y
OyB9CisgICAgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29s
b3I7IH0KKyAgICB2b2lkIHNldENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IpIHsgbV9j
b2xvciA9IGNvbG9yOyB9CiAKIHByaXZhdGU6Ci0gICAgQ29sb3IgbV9jb2xvcjsKKyAgICBPcHRp
b25hbFJHQkEgbV9jb2xvcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKaW5kZXggYTE5Y2RiYjZjNWIxN2MzYjdlZWM4NjZjZDQ1
NTVhZjY2NjU2MGViMC4uNDFkMWEwZDExYzMwZDdiYTAxMTgzYWFkMzNiNDExMzAwYTU2ZmRlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAK
QEAgLTEzMyw3ICsxMzMsNyBAQCBib29sIFJlbmRlclNWR1NoYXBlOjpmaWxsQ29udGFpbnMoY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIGJvb2wgcmVxdWlyZXNGaWxsLCBjbwogICAgIGlmICghbV9m
aWxsQm91bmRpbmdCb3guY29udGFpbnMocG9pbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBDb2xvciBmYWxsYmFja0NvbG9yOworICAgIE9wdGlvbmFsUkdCQSBmYWxsYmFja0NvbG9y
OwogICAgIGlmIChyZXF1aXJlc0ZpbGwgJiYgIVJlbmRlclNWR1Jlc291cmNlOjpmaWxsUGFpbnRp
bmdSZXNvdXJjZSgqdGhpcywgc3R5bGUoKSwgZmFsbGJhY2tDb2xvcikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApAQCAtMTQ1LDcgKzE0NSw3IEBAIGJvb2wgUmVuZGVyU1ZHU2hhcGU6OnN0cm9r
ZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBib29sIHJlcXVpcmVzU3Ryb2tlCiAg
ICAgaWYgKCFzdHJva2VCb3VuZGluZ0JveCgpLmNvbnRhaW5zKHBvaW50KSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgQ29sb3IgZmFsbGJhY2tDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEg
ZmFsbGJhY2tDb2xvcjsKICAgICBpZiAocmVxdWlyZXNTdHJva2UgJiYgIVJlbmRlclNWR1Jlc291
cmNlOjpzdHJva2VQYWludGluZ1Jlc291cmNlKCp0aGlzLCBzdHlsZSgpLCBmYWxsYmFja0NvbG9y
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yMjcsNyArMjI3LDcgQEAgYm9vbCBSZW5k
ZXJTVkdTaGFwZTo6c2hvdWxkR2VuZXJhdGVNYXJrZXJQb3NpdGlvbnMoKSBjb25zdAogCiB2b2lk
IFJlbmRlclNWR1NoYXBlOjpmaWxsU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgQ29sb3IgZmFsbGJhY2tDb2xvcjsKKyAgICBP
cHRpb25hbFJHQkEgZmFsbGJhY2tDb2xvcjsKICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2UqIGZp
bGxQYWludGluZ1Jlc291cmNlID0gUmVuZGVyU1ZHUmVzb3VyY2U6OmZpbGxQYWludGluZ1Jlc291
cmNlKCp0aGlzLCBzdHlsZSwgZmFsbGJhY2tDb2xvcikpIHsKICAgICAgICAgaWYgKGZpbGxQYWlu
dGluZ1Jlc291cmNlLT5hcHBseVJlc291cmNlKCp0aGlzLCBzdHlsZSwgY29udGV4dCwgQXBwbHlU
b0ZpbGxNb2RlKSkKICAgICAgICAgICAgIGZpbGxQYWludGluZ1Jlc291cmNlLT5wb3N0QXBwbHlS
ZXNvdXJjZSgqdGhpcywgY29udGV4dCwgQXBwbHlUb0ZpbGxNb2RlLCAwLCB0aGlzKTsKQEAgLTI0
Miw3ICsyNDIsNyBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjpmaWxsU2hhcGUoY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleAogCiB2b2lkIFJlbmRlclNWR1No
YXBlOjpzdHJva2VTaGFwZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKIHsKLSAgICBDb2xvciBmYWxsYmFja0NvbG9yOworICAgIE9wdGlvbmFsUkdC
QSBmYWxsYmFja0NvbG9yOwogICAgIGlmIChSZW5kZXJTVkdSZXNvdXJjZSogc3Ryb2tlUGFpbnRp
bmdSZXNvdXJjZSA9IFJlbmRlclNWR1Jlc291cmNlOjpzdHJva2VQYWludGluZ1Jlc291cmNlKCp0
aGlzLCBzdHlsZSwgZmFsbGJhY2tDb2xvcikpIHsKICAgICAgICAgaWYgKHN0cm9rZVBhaW50aW5n
UmVzb3VyY2UtPmFwcGx5UmVzb3VyY2UoKnRoaXMsIHN0eWxlLCBjb250ZXh0LCBBcHBseVRvU3Ry
b2tlTW9kZSkpCiAgICAgICAgICAgICBzdHJva2VQYWludGluZ1Jlc291cmNlLT5wb3N0QXBwbHlS
ZXNvdXJjZSgqdGhpcywgY29udGV4dCwgQXBwbHlUb1N0cm9rZU1vZGUsIDAsIHRoaXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKaW5k
ZXggODNiMTc1ZGZjNTQ4NGVhNWViMTVkYzI5NjFiODJjMDZjYWNjNGVjOC4uZTU1MDFkYzhhMTFm
NzQ5MjM3NTNmYzRiZGE2MTg2YjczYWQ3ODU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9p
ZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbkJhY2tncm91bmQoUGFpbnRJbmZvJiBw
YWludEluZm8pCiAgICAgaWYgKCFoYXNTZWxlY3Rpb24gfHwgcGFpbnRTZWxlY3RlZFRleHRPbmx5
KQogICAgICAgICByZXR1cm47CiAKLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSByZW5kZXJl
cigpLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOworICAgIE9wdGlvbmFsUkdCQSBiYWNrZ3Jv
dW5kQ29sb3IgPSByZW5kZXJlcigpLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOwogICAgIGlm
ICghYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSB8fCAhYmFja2dyb3VuZENvbG9yLmFscGhhKCkp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMzQwLDcgKzM0MCw3IEBAIGJvb2wgU1ZHSW5saW5lVGV4
dEJveDo6YWNxdWlyZVBhaW50aW5nUmVzb3VyY2UoR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwg
ZmxvYXQKICAgICBBU1NFUlQoc3R5bGUpOwogICAgIEFTU0VSVChtX3BhaW50aW5nUmVzb3VyY2VN
b2RlICE9IEFwcGx5VG9EZWZhdWx0TW9kZSk7CiAKLSAgICBDb2xvciBmYWxsYmFja0NvbG9yOwor
ICAgIE9wdGlvbmFsUkdCQSBmYWxsYmFja0NvbG9yOwogICAgIGlmIChtX3BhaW50aW5nUmVzb3Vy
Y2VNb2RlICYgQXBwbHlUb0ZpbGxNb2RlKQogICAgICAgICBtX3BhaW50aW5nUmVzb3VyY2UgPSBS
ZW5kZXJTVkdSZXNvdXJjZTo6ZmlsbFBhaW50aW5nUmVzb3VyY2UocmVuZGVyZXIsICpzdHlsZSwg
ZmFsbGJhY2tDb2xvcik7CiAgICAgZWxzZSBpZiAobV9wYWludGluZ1Jlc291cmNlTW9kZSAmIEFw
cGx5VG9TdHJva2VNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggZmM4NWYyM2ZjMDRiNzEyYTIwM2VkMWM1ZTZk
OTVkY2E0MGIwMzMxNi4uMjNlOTkzNjVlM2VlYWU1N2Y4NGRkNDU2YmI1YzM5NmRhYzJmNjg0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNU
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVB
c1RleHQuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNWR01hcmtlclVuaXRzVHlwZSYgbWFya2VyVW4KICAg
ICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IENvbG9yJiBjKQorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgT3B0aW9uYWxSR0JBJiBjKQogewogICAgIHJldHVybiB0cyA8PCBjLm5hbWVGb3JSZW5k
ZXJUcmVlQXNUZXh0KCk7CiB9CkBAIC0yNjEsNyArMjYxLDcgQEAgc3RhdGljIHZvaWQgd3JpdGVT
dHlsZShUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiAgICAg
aWYgKGlzPFJlbmRlclNWR1NoYXBlPihyZW5kZXJlcikpIHsKICAgICAgICAgY29uc3QgYXV0byYg
c2hhcGUgPSBkb3duY2FzdDxSZW5kZXJTVkdTaGFwZT4ocmVuZGVyZXIpOwogCi0gICAgICAgIENv
bG9yIGZhbGxiYWNrQ29sb3I7CisgICAgICAgIE9wdGlvbmFsUkdCQSBmYWxsYmFja0NvbG9yOwog
ICAgICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2UqIHN0cm9rZVBhaW50aW5nUmVzb3VyY2UgPSBS
ZW5kZXJTVkdSZXNvdXJjZTo6c3Ryb2tlUGFpbnRpbmdSZXNvdXJjZShjb25zdF9jYXN0PFJlbmRl
clNWR1NoYXBlJj4oc2hhcGUpLCBzaGFwZS5zdHlsZSgpLCBmYWxsYmFja0NvbG9yKSkgewogICAg
ICAgICAgICAgVGV4dFN0cmVhbVNlcGFyYXRvciBzKCIgIik7CiAgICAgICAgICAgICB0cyA8PCAi
IFtzdHJva2U9eyIgPDwgczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJUcmVlQXNUZXh0LmgKaW5kZXggZWJjMzkzMmY0OWQyMmU4NjlkNjE4OTkyY2I5OGZk
NDBjMDdmZDcyMi4uODQwYjRkN2RkOTlmYWM5YzM4ZjQ4MWI2MWI0YzZlMDgzODExMWE4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0
LmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb2xv
cjsKK2NsYXNzIE9wdGlvbmFsUkdCQTsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEZsb2F0U2l6
ZTsKIGNsYXNzIE5vZGU7CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgd3JpdGVSZXNvdXJjZXMoVGV4
dFN0cmVhbSYsIGNvbnN0IFJlbmRlck9iamVjdCYsIGludCBpbmRlbnQpOwogCiAvLyBoZWxwZXIg
b3BlcmF0b3JzIGRlZmluZWQgdXNlZCBpbiB2YXJpb3VzIGNsYXNzZXMgdG8gZHVtcCB0aGUgcmVu
ZGVyIHRyZWUuCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mKTsKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0
IENvbG9yJik7CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBPcHRp
b25hbFJHQkEmKTsKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZs
b2F0UmVjdCYpOwogCiAvLyBoZWxwZXIgb3BlcmF0b3JzIHNwZWNpZmljIHRvIGR1bXBpbmcgdGhl
IHJlbmRlciB0cmVlLiB0aGVzZSBhcmUgdXNlZCBpbiB2YXJpb3VzIGNsYXNzZXMgdG8gZHVtcCB0
aGUgcmVuZGVyIHRyZWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9Db2xvckRpc3Rh
bmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9Db2xvckRpc3RhbmNlLmNwcAppbmRleCBhMmVl
OTMwYjU0NDBhYTIxYWQ1ODg5OWQ2NTRkZDlmNDBhZGQwYzA2Li5hNGQ2YjllZWQxMWUwZWMxODAw
NjQ2OWJkMzRhY2ViZjQwZGE5NmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvQ29s
b3JEaXN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL0NvbG9yRGlzdGFuY2UuY3Bw
CkBAIC0zMiw3ICszMiw3IEBAIENvbG9yRGlzdGFuY2U6OkNvbG9yRGlzdGFuY2UoKQogewogfQog
Ci1Db2xvckRpc3RhbmNlOjpDb2xvckRpc3RhbmNlKGNvbnN0IENvbG9yJiBmcm9tQ29sb3IsIGNv
bnN0IENvbG9yJiB0b0NvbG9yKQorQ29sb3JEaXN0YW5jZTo6Q29sb3JEaXN0YW5jZShjb25zdCBP
cHRpb25hbFJHQkEmIGZyb21Db2xvciwgY29uc3QgT3B0aW9uYWxSR0JBJiB0b0NvbG9yKQogICAg
IDogbV9yZWREaWZmKHRvQ29sb3IucmVkKCkgLSBmcm9tQ29sb3IucmVkKCkpCiAgICAgLCBtX2dy
ZWVuRGlmZih0b0NvbG9yLmdyZWVuKCkgLSBmcm9tQ29sb3IuZ3JlZW4oKSkKICAgICAsIG1fYmx1
ZURpZmYodG9Db2xvci5ibHVlKCkgLSBmcm9tQ29sb3IuYmx1ZSgpKQpAQCAtNjIsMTkgKzYyLDE5
IEBAIENvbG9yRGlzdGFuY2UgQ29sb3JEaXN0YW5jZTo6c2NhbGVkRGlzdGFuY2UoZmxvYXQgc2Nh
bGVGYWN0b3IpIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50
PihzY2FsZUZhY3RvciAqIG1fYmx1ZURpZmYpKTsKIH0KIAotQ29sb3IgQ29sb3JEaXN0YW5jZTo6
Y2xhbXBDb2xvcihpbnQgcmVkLCBpbnQgZ3JlZW4sIGludCBibHVlLCBpbnQgYWxwaGEpCitPcHRp
b25hbFJHQkEgQ29sb3JEaXN0YW5jZTo6Y2xhbXBDb2xvcihpbnQgcmVkLCBpbnQgZ3JlZW4sIGlu
dCBibHVlLCBpbnQgYWxwaGEpCiB7Ci0gICAgcmV0dXJuIENvbG9yKGNsYW1wQ29sb3JWYWx1ZShy
ZWQpLCBjbGFtcENvbG9yVmFsdWUoZ3JlZW4pLCBjbGFtcENvbG9yVmFsdWUoYmx1ZSksIGNsYW1w
Q29sb3JWYWx1ZShhbHBoYSkpOworICAgIHJldHVybiBPcHRpb25hbFJHQkEoY2xhbXBDb2xvclZh
bHVlKHJlZCksIGNsYW1wQ29sb3JWYWx1ZShncmVlbiksIGNsYW1wQ29sb3JWYWx1ZShibHVlKSwg
Y2xhbXBDb2xvclZhbHVlKGFscGhhKSk7CiB9CiAKLUNvbG9yIENvbG9yRGlzdGFuY2U6OmFkZENv
bG9ycyhjb25zdCBDb2xvciYgZmlyc3QsIGNvbnN0IENvbG9yJiBzZWNvbmQpCitPcHRpb25hbFJH
QkEgQ29sb3JEaXN0YW5jZTo6YWRkQ29sb3JzKGNvbnN0IE9wdGlvbmFsUkdCQSYgZmlyc3QsIGNv
bnN0IE9wdGlvbmFsUkdCQSYgc2Vjb25kKQogewotICAgIHJldHVybiBDb2xvcihmaXJzdC5yZWQo
KSArIHNlY29uZC5yZWQoKSwgZmlyc3QuZ3JlZW4oKSArIHNlY29uZC5ncmVlbigpLCBmaXJzdC5i
bHVlKCkgKyBzZWNvbmQuYmx1ZSgpKTsKKyAgICByZXR1cm4gT3B0aW9uYWxSR0JBKGZpcnN0LnJl
ZCgpICsgc2Vjb25kLnJlZCgpLCBmaXJzdC5ncmVlbigpICsgc2Vjb25kLmdyZWVuKCksIGZpcnN0
LmJsdWUoKSArIHNlY29uZC5ibHVlKCkpOwogfQogCi1Db2xvciBDb2xvckRpc3RhbmNlOjphZGRU
b0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgY29uc3QKK09wdGlvbmFsUkdCQSBDb2xvckRpc3Rh
bmNlOjphZGRUb0NvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIENvbG9yKGNvbG9yLnJlZCgpICsgbV9yZWREaWZmLCBjb2xvci5ncmVlbigpICsgbV9n
cmVlbkRpZmYsIGNvbG9yLmJsdWUoKSArIG1fYmx1ZURpZmYpOworICAgIHJldHVybiBPcHRpb25h
bFJHQkEoY29sb3IucmVkKCkgKyBtX3JlZERpZmYsIGNvbG9yLmdyZWVuKCkgKyBtX2dyZWVuRGlm
ZiwgY29sb3IuYmx1ZSgpICsgbV9ibHVlRGlmZik7CiB9CiAKIGJvb2wgQ29sb3JEaXN0YW5jZTo6
aXNaZXJvKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9Db2xvckRpc3Rh
bmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvQ29sb3JEaXN0YW5jZS5oCmluZGV4IDU3ZGQyYWRj
OGVhODk4NDdkMGRiZjc2NDhhNTMzMWU4NTU4OGViYTMuLjE4N2JmOThlM2UyMDU2Yzg5MDY5OWVm
NzJiOWQ0Y2NkMTExMjI4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9Db2xvckRp
c3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL0NvbG9yRGlzdGFuY2UuaApAQCAtMjIs
MTkgKzIyLDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLWNsYXNzIENvbG9yOwor
Y2xhc3MgT3B0aW9uYWxSR0JBOwogICAgIAogY2xhc3MgQ29sb3JEaXN0YW5jZSB7CiBwdWJsaWM6
CiAgICAgQ29sb3JEaXN0YW5jZSgpOwotICAgIENvbG9yRGlzdGFuY2UoY29uc3QgQ29sb3ImIGZy
b21Db2xvciwgY29uc3QgQ29sb3ImIHRvQ29sb3IpOworICAgIENvbG9yRGlzdGFuY2UoY29uc3Qg
T3B0aW9uYWxSR0JBJiBmcm9tQ29sb3IsIGNvbnN0IE9wdGlvbmFsUkdCQSYgdG9Db2xvcik7CiAg
ICAgQ29sb3JEaXN0YW5jZShpbnQgcmVkRGlmZiwgaW50IGJsdWVEaWZmLCBpbnQgZ3JlZW5EaWZm
KTsKIAogICAgIENvbG9yRGlzdGFuY2Ugc2NhbGVkRGlzdGFuY2UoZmxvYXQgc2NhbGVGYWN0b3Ip
IGNvbnN0OwotICAgIENvbG9yIGFkZFRvQ29sb3IoY29uc3QgQ29sb3ImKSBjb25zdDsKKyAgICBP
cHRpb25hbFJHQkEgYWRkVG9Db2xvcihjb25zdCBPcHRpb25hbFJHQkEmKSBjb25zdDsKICAgICAg
ICAgCi0gICAgc3RhdGljIENvbG9yIGFkZENvbG9ycyhjb25zdCBDb2xvciYsIGNvbnN0IENvbG9y
Jik7Ci0gICAgc3RhdGljIENvbG9yIGNsYW1wQ29sb3IoaW50IHJlZCwgaW50IGdyZWVuLCBpbnQg
Ymx1ZSwgaW50IGFscGhhKTsKKyAgICBzdGF0aWMgT3B0aW9uYWxSR0JBIGFkZENvbG9ycyhjb25z
dCBPcHRpb25hbFJHQkEmLCBjb25zdCBPcHRpb25hbFJHQkEmKTsKKyAgICBzdGF0aWMgT3B0aW9u
YWxSR0JBIGNsYW1wQ29sb3IoaW50IHJlZCwgaW50IGdyZWVuLCBpbnQgYmx1ZSwgaW50IGFscGhh
KTsKIAogICAgIGJvb2wgaXNaZXJvKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZENvbG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZENvbG9yLmNwcAppbmRleCBhYzQ4NjQ1OGRkMjUwZmQ4OTIwMjQzNTViOGQ2NDY5NGQ1MDcy
Mzk5Li5mOTVjODMxOTA2Yzc0MTYzMDg1NGMxNDdjMjY5YTRiMzU3ZGZlNWIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkQ29sb3IuY3BwCkBAIC0zNCw4ICszNCw4IEBAIFNWR0FuaW1h
dGVkQ29sb3JBbmltYXRvcjo6U1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yKFNWR0FuaW1hdGlvbkVs
ZW1lbnQqIGFuaW1hdGlvCiAKIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0Fu
aW1hdGVkQ29sb3JBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0
cmluZykKIHsKLSAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRl
Q29sb3Ioc3RkOjptYWtlX3VuaXF1ZTxDb2xvcj4oKSk7Ci0gICAgYW5pbWF0ZWRUeXBlLT5jb2xv
cigpID0gc3RyaW5nLmlzRW1wdHkoKSA/IENvbG9yKCkgOiBTVkdDb2xvcjo6Y29sb3JGcm9tUkdC
Q29sb3JTdHJpbmcoc3RyaW5nKTsKKyAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IFNWR0FuaW1hdGVk
VHlwZTo6Y3JlYXRlQ29sb3Ioc3RkOjptYWtlX3VuaXF1ZTxPcHRpb25hbFJHQkE+KCkpOworICAg
IGFuaW1hdGVkVHlwZS0+Y29sb3IoKSA9IHN0cmluZy5pc0VtcHR5KCkgPyBPcHRpb25hbFJHQkEo
KSA6IFNWR0NvbG9yOjpjb2xvckZyb21SR0JDb2xvclN0cmluZyhzdHJpbmcpOwogICAgIHJldHVy
biBhbmltYXRlZFR5cGU7CiB9CiAKQEAgLTQ2LDE3ICs0NiwxNyBAQCB2b2lkIFNWR0FuaW1hdGVk
Q29sb3JBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNW
R0FuaW1hdAogICAgIHRvLT5jb2xvcigpID0gQ29sb3JEaXN0YW5jZTo6YWRkQ29sb3JzKGZyb20t
PmNvbG9yKCksIHRvLT5jb2xvcigpKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGFkanVzdEZv
ckN1cnJlbnRDb2xvcihTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBDb2xvciYgY29sb3IpCitz
dGF0aWMgaW5saW5lIHZvaWQgYWRqdXN0Rm9yQ3VycmVudENvbG9yKFNWR0VsZW1lbnQqIHRhcmdl
dEVsZW1lbnQsIE9wdGlvbmFsUkdCQSYgY29sb3IpCiB7CiAgICAgQVNTRVJUKHRhcmdldEVsZW1l
bnQpOwogCiAgICAgaWYgKFJlbmRlckVsZW1lbnQqIHRhcmdldFJlbmRlcmVyID0gdGFyZ2V0RWxl
bWVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgY29sb3IgPSB0YXJnZXRSZW5kZXJlci0+c3R5bGUo
KS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcik7CiAgICAgZWxzZQotICAg
ICAgICBjb2xvciA9IENvbG9yKCk7CisgICAgICAgIGNvbG9yID0gT3B0aW9uYWxSR0JBKCk7CiB9
CiAKLXN0YXRpYyBDb2xvciBwYXJzZUNvbG9yRnJvbVN0cmluZyhTVkdBbmltYXRpb25FbGVtZW50
KiwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCitzdGF0aWMgT3B0aW9uYWxSR0JBIHBhcnNlQ29sb3JG
cm9tU3RyaW5nKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIHN0cmluZykKIHsK
ICAgICByZXR1cm4gU1ZHQ29sb3I6OmNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKHN0cmluZyk7CiB9
CkBAIC02NiwxNCArNjYsMTQgQEAgdm9pZCBTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1
bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQKICAgICBBU1NFUlQo
bV9hbmltYXRpb25FbGVtZW50KTsKICAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CiAKLSAg
ICBDb2xvciBmcm9tQ29sb3IgPSBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKSA9
PSBUb0FuaW1hdGlvbiA/IGFuaW1hdGVkLT5jb2xvcigpIDogZnJvbS0+Y29sb3IoKTsKLSAgICBD
b2xvciB0b0NvbG9yID0gdG8tPmNvbG9yKCk7Ci0gICAgY29uc3QgQ29sb3ImIHRvQXRFbmRPZkR1
cmF0aW9uQ29sb3IgPSB0b0F0RW5kT2ZEdXJhdGlvbi0+Y29sb3IoKTsKLSAgICBDb2xvciYgYW5p
bWF0ZWRDb2xvciA9IGFuaW1hdGVkLT5jb2xvcigpOworICAgIE9wdGlvbmFsUkdCQSBmcm9tQ29s
b3IgPSBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKSA9PSBUb0FuaW1hdGlvbiA/
IGFuaW1hdGVkLT5jb2xvcigpIDogZnJvbS0+Y29sb3IoKTsKKyAgICBPcHRpb25hbFJHQkEgdG9D
b2xvciA9IHRvLT5jb2xvcigpOworICAgIGNvbnN0IE9wdGlvbmFsUkdCQSYgdG9BdEVuZE9mRHVy
YXRpb25Db2xvciA9IHRvQXRFbmRPZkR1cmF0aW9uLT5jb2xvcigpOworICAgIE9wdGlvbmFsUkdC
QSYgYW5pbWF0ZWRDb2xvciA9IGFuaW1hdGVkLT5jb2xvcigpOwogCiAgICAgLy8gQXBwbHkgQ1NT
IGluaGVyaXRhbmNlIHJ1bGVzLgotICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0Rm9ySW5o
ZXJpdGFuY2U8Q29sb3I+KHBhcnNlQ29sb3JGcm9tU3RyaW5nLCBtX2FuaW1hdGlvbkVsZW1lbnQt
PmZyb21Qcm9wZXJ0eVZhbHVlVHlwZSgpLCBmcm9tQ29sb3IsIG1fY29udGV4dEVsZW1lbnQpOwot
ICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0Rm9ySW5oZXJpdGFuY2U8Q29sb3I+KHBhcnNl
Q29sb3JGcm9tU3RyaW5nLCBtX2FuaW1hdGlvbkVsZW1lbnQtPnRvUHJvcGVydHlWYWx1ZVR5cGUo
KSwgdG9Db2xvciwgbV9jb250ZXh0RWxlbWVudCk7CisgICAgbV9hbmltYXRpb25FbGVtZW50LT5h
ZGp1c3RGb3JJbmhlcml0YW5jZTxPcHRpb25hbFJHQkE+KHBhcnNlQ29sb3JGcm9tU3RyaW5nLCBt
X2FuaW1hdGlvbkVsZW1lbnQtPmZyb21Qcm9wZXJ0eVZhbHVlVHlwZSgpLCBmcm9tQ29sb3IsIG1f
Y29udGV4dEVsZW1lbnQpOworICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0Rm9ySW5oZXJp
dGFuY2U8T3B0aW9uYWxSR0JBPihwYXJzZUNvbG9yRnJvbVN0cmluZywgbV9hbmltYXRpb25FbGVt
ZW50LT50b1Byb3BlcnR5VmFsdWVUeXBlKCksIHRvQ29sb3IsIG1fY29udGV4dEVsZW1lbnQpOwog
CiAgICAgLy8gQXBwbHkgPGFuaW1hdGVDb2xvcj4gcnVsZXMuCiAgICAgaWYgKG1fYW5pbWF0aW9u
RWxlbWVudC0+ZnJvbVByb3BlcnR5VmFsdWVUeXBlKCkgPT0gQ3VycmVudENvbG9yVmFsdWUpCkBA
IC05OSwxMCArOTksMTAgQEAgdm9pZCBTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0
ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQKIGZsb2F0IFNWR0FuaW1h
dGVkQ29sb3JBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQogewogICAgIEFTU0VSVChtX2NvbnRleHRFbGVt
ZW50KTsKLSAgICBDb2xvciBmcm9tID0gU1ZHQ29sb3I6OmNvbG9yRnJvbVJHQkNvbG9yU3RyaW5n
KGZyb21TdHJpbmcpOworICAgIE9wdGlvbmFsUkdCQSBmcm9tID0gU1ZHQ29sb3I6OmNvbG9yRnJv
bVJHQkNvbG9yU3RyaW5nKGZyb21TdHJpbmcpOwogICAgIGlmICghZnJvbS5pc1ZhbGlkKCkpCiAg
ICAgICAgIHJldHVybiAtMTsKLSAgICBDb2xvciB0byA9IFNWR0NvbG9yOjpjb2xvckZyb21SR0JD
b2xvclN0cmluZyh0b1N0cmluZyk7CisgICAgT3B0aW9uYWxSR0JBIHRvID0gU1ZHQ29sb3I6OmNv
bG9yRnJvbVJHQkNvbG9yU3RyaW5nKHRvU3RyaW5nKTsKICAgICBpZiAoIXRvLmlzVmFsaWQoKSkK
ICAgICAgICAgcmV0dXJuIC0xOwogICAgIHJldHVybiBDb2xvckRpc3RhbmNlKGZyb20sIHRvKS5k
aXN0YW5jZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAppbmRleCBlZjg2
ZjI5MTEzOTIzYzNlOWM3MjliOTEwNTg1N2UzNmQyODFmNTdkLi43ZDE0NTMyZGQ1NThmMDJmODIw
ZGQyZjZmM2MxYmVkMjdhNzIwNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBl
LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+
IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlQm9vbGVhbihzdGQ6OnVuaXF1ZV9wdHI8CiAgICAgcmV0
dXJuIGFuaW1hdGVkVHlwZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4g
U1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVDb2xvcihzdGQ6OnVuaXF1ZV9wdHI8Q29sb3I+IGNvbG9y
KQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVh
dGVDb2xvcihzdGQ6OnVuaXF1ZV9wdHI8T3B0aW9uYWxSR0JBPiBjb2xvcikKIHsKICAgICBBU1NF
UlQoY29sb3IpOwogICAgIGF1dG8gYW5pbWF0ZWRUeXBlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdB
bmltYXRlZFR5cGU+KEFuaW1hdGVkQ29sb3IpOwpAQCAtMjc1LDcgKzI3NSw3IEBAIGJvb2wgU1ZH
QW5pbWF0ZWRUeXBlOjpzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lLCBjb25zdCBTdHJpCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIEFuaW1hdGVk
Q29sb3I6CiAgICAgICAgIEFTU0VSVChtX2RhdGEuY29sb3IpOwotICAgICAgICAqbV9kYXRhLmNv
bG9yID0gdmFsdWUuaXNFbXB0eSgpID8gQ29sb3IoKSA6IFNWR0NvbG9yOjpjb2xvckZyb21SR0JD
b2xvclN0cmluZyh2YWx1ZSk7CisgICAgICAgICptX2RhdGEuY29sb3IgPSB2YWx1ZS5pc0VtcHR5
KCkgPyBPcHRpb25hbFJHQkEoKSA6IFNWR0NvbG9yOjpjb2xvckZyb21SR0JDb2xvclN0cmluZyh2
YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6IHsKICAgICAg
ICAgQVNTRVJUKG1fZGF0YS5sZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5o
CmluZGV4IDI5MTRjMmExMDEyNzQwZjUzY2UyYzFhYjNkM2E3YjY5YTU3YmI3ZTMuLjA0ZTM0Yjhm
NzdjMDJlZWExMWFkMWY1NGUxMDA4ZjcwNmJjMTA3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRUeXBlLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUFuZ2xlQW5kRW51bWVyYXRpb24oc3Rk
Ojp1bmlxdWVfcHRyPHN0ZDo6cGFpcjxTVkdBbmdsZSwgdW5zaWduZWQ+Pik7CiAgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUJvb2xlYW4oc3RkOjp1bmlx
dWVfcHRyPGJvb2w+KTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlw
ZT4gY3JlYXRlQ29sb3Ioc3RkOjp1bmlxdWVfcHRyPENvbG9yPik7CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUNvbG9yKHN0ZDo6dW5pcXVlX3B0cjxP
cHRpb25hbFJHQkE+KTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlw
ZT4gY3JlYXRlRW51bWVyYXRpb24oc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkPik7CiAgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUludGVnZXIoc3RkOjp1
bmlxdWVfcHRyPGludD4pOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBjcmVhdGVJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyKHN0ZDo6dW5pcXVlX3B0cjxzdGQ6OnBh
aXI8aW50LCBpbnQ+Pik7CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
ICptX2RhdGEuYm9vbGVhbjsKICAgICB9CiAKLSAgICBjb25zdCBDb2xvciYgY29sb3IoKSBjb25z
dAorICAgIGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IoKSBjb25zdAogICAgIHsKICAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZENvbG9yKTsKICAgICAgICAgcmV0dXJuICptX2RhdGEu
Y29sb3I7CkBAIC0xNzgsNyArMTc4LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKm1fZGF0
YS5ib29sZWFuOwogICAgIH0KIAotICAgIENvbG9yJiBjb2xvcigpCisgICAgT3B0aW9uYWxSR0JB
JiBjb2xvcigpCiAgICAgewogICAgICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkQ29sb3Ip
OwogICAgICAgICByZXR1cm4gKm1fZGF0YS5jb2xvcjsKQEAgLTI4Miw3ICsyODIsNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIHN0ZDo6cGFpcjxTVkdBbmdsZSwgdW5zaWduZWQ+KiBhbmdsZUFuZEVu
dW1lcmF0aW9uOwogICAgICAgICBib29sKiBib29sZWFuOwotICAgICAgICBDb2xvciogY29sb3I7
CisgICAgICAgIE9wdGlvbmFsUkdCQSogY29sb3I7CiAgICAgICAgIHVuc2lnbmVkKiBlbnVtZXJh
dGlvbjsKICAgICAgICAgaW50KiBpbnRlZ2VyOwogICAgICAgICBzdGQ6OnBhaXI8aW50LCBpbnQ+
KiBpbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NvbG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5jcHAKaW5kZXggOGU4
NmJkYWI5OGEwYTAzZDQ5YzIxYTkzY2EwMjA4OGFjNDk1MWQ2Ni4uMDU0NWVlNWFmNzBhNTVhYmE2
NTk0ZTU3OTAyOTdmZmY3ZTZhYTdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0NvbG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuY3BwCkBAIC00NSwx
MyArNDUsMTMgQEAgUmVmPFJHQkNvbG9yPiBTVkdDb2xvcjo6cmdiQ29sb3IoKSBjb25zdAogICAg
IHJldHVybiBSR0JDb2xvcjo6Y3JlYXRlKG1fY29sb3IucmdiKCkpOwogfQogCi1Db2xvciBTVkdD
b2xvcjo6Y29sb3JGcm9tUkdCQ29sb3JTdHJpbmcoY29uc3QgU3RyaW5nJiBjb2xvclN0cmluZykK
K09wdGlvbmFsUkdCQSBTVkdDb2xvcjo6Y29sb3JGcm9tUkdCQ29sb3JTdHJpbmcoY29uc3QgU3Ry
aW5nJiBjb2xvclN0cmluZykKIHsKICAgICAvLyBGSVhNRTogUmV3b3JrIGNzcyBwYXJzZXIgc28g
aXQgaXMgbW9yZSBTVkcgYXdhcmUuCiAgICAgUkdCQTMyIGNvbG9yOwogICAgIGlmIChDU1NQYXJz
ZXI6OnBhcnNlQ29sb3IoY29sb3IsIGNvbG9yU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpKSkKICAg
ICAgICAgcmV0dXJuIGNvbG9yOwotICAgIHJldHVybiBDb2xvcigpOworICAgIHJldHVybiBPcHRp
b25hbFJHQkEoKTsKIH0KIAogdm9pZCBTVkdDb2xvcjo6c2V0UkdCQ29sb3IoY29uc3QgU3RyaW5n
JiwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Q29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oCmluZGV4IDAxYzY2MjUxMmMy
ZGQ3MDAzNDkxNjg5MDY2MzEwMDdkYzExY2JkYWMuLmQ5MzkxYTU1ZTZjNTY4NmJjNzhhMWY3NGNh
YzIzN2VmYmNjOTcwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oCkBAIC00NSw3ICs0NSw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGNvbG9yOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8U1ZH
Q29sb3I+IGNyZWF0ZUZyb21Db2xvcihjb25zdCBDb2xvciYgcmdiQ29sb3IpCisgICAgc3RhdGlj
IFJlZjxTVkdDb2xvcj4gY3JlYXRlRnJvbUNvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgcmdiQ29s
b3IpCiAgICAgewogICAgICAgICBhdXRvIGNvbG9yID0gYWRvcHRSZWYoKm5ldyBTVkdDb2xvcihT
VkdfQ09MT1JUWVBFX1JHQkNPTE9SKSk7CiAgICAgICAgIGNvbG9yLmdldCgpLnNldENvbG9yKHJn
YkNvbG9yKTsKQEAgLTU3LDExICs1NywxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNWR0NvbG9yKFNWR19DT0xPUlRZUEVfQ1VSUkVOVENPTE9SKSk7CiAgICAgfQog
Ci0gICAgY29uc3QgQ29sb3ImIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfQorICAg
IGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CiAg
ICAgY29uc3QgU1ZHQ29sb3JUeXBlJiBjb2xvclR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvbG9y
VHlwZTsgfQogICAgIFJlZjxSR0JDb2xvcj4gcmdiQ29sb3IoKSBjb25zdDsKIAotICAgIHN0YXRp
YyBDb2xvciBjb2xvckZyb21SR0JDb2xvclN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0
aWMgT3B0aW9uYWxSR0JBIGNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKGNvbnN0IFN0cmluZyYpOwog
CiAgICAgdm9pZCBzZXRSR0JDb2xvcihjb25zdCBTdHJpbmcmIHJnYkNvbG9yLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgdm9pZCBzZXRSR0JDb2xvcklDQ0NvbG9yKGNvbnN0IFN0cmluZyYgcmdiQ29s
b3IsIGNvbnN0IFN0cmluZyYgaWNjQ29sb3IsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTgxLDEzICs4
MSwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgU1ZHQ29sb3IoQ2xhc3NUeXBlLCBjb25zdCBTVkdDb2xv
clR5cGUmKTsKICAgICBTVkdDb2xvcihDbGFzc1R5cGUsIGNvbnN0IFNWR0NvbG9yJiBjbG9uZUZy
b20pOwogCi0gICAgdm9pZCBzZXRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9jb2xvciA9
IGNvbG9yOyB9CisgICAgdm9pZCBzZXRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yKSB7
IG1fY29sb3IgPSBjb2xvcjsgfQogICAgIHZvaWQgc2V0Q29sb3JUeXBlKGNvbnN0IFNWR0NvbG9y
VHlwZSYgdHlwZSkgeyBtX2NvbG9yVHlwZSA9IHR5cGU7IH0KIAogcHJpdmF0ZToKICAgICBTVkdD
b2xvcihjb25zdCBTVkdDb2xvclR5cGUmKTsKIAotICAgIENvbG9yIG1fY29sb3I7CisgICAgT3B0
aW9uYWxSR0JBIG1fY29sb3I7CiAgICAgU1ZHQ29sb3JUeXBlIG1fY29sb3JUeXBlOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5pZGwKaW5kZXgg
NmRjYmQ1YzNlMzdhMTQ4OTY5ZWM5NTdkNmJhOTNhNTJjNGE4OWFlYy4uZWY1MTk1YzNiYTEyMTU0
Y2RjOGE0MjA4ZmFhMzgzMWYwNjM3ZTAzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQuaWRsCkBAIC0yNiw3ICsyNiw3IEBACiBbCiAgICAgRG9Ob3RD
aGVja0NvbnN0YW50cwogXSBpbnRlcmZhY2UgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQgOiBTVkdF
bGVtZW50IHsKLSAgICAvLyBDb2xvciBNYXRyaXggVHlwZXMKKyAgICAvLyBPcHRpb25hbFJHQkEg
TWF0cml4IFR5cGVzCiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhf
VFlQRV9VTktOT1dOICAgICAgICAgID0gMDsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdf
RkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCAgICAgICAgICAgPSAxOwogICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEUgICAgICAgICA9IDI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3Bw
CmluZGV4IGJhMmEzZDQwOTQ5ZTRlYTUyOGY3NTMwMjllNjY4OTkzMWYzYzA0NjguLjA0ZjUzY2E1
YjU4NDIxZTFiZmQzMmQyNDNhYTNmNTY0MDE4MjJmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xODcsNyArMTg3LDcg
QEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXIKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBDb2xvciBjb2xvciA9IHJlbmRlcmVyLT5zdHlsZSgp
LnN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpOworICAgIE9wdGlvbmFsUkdCQSBjb2xvciA9IHJl
bmRlcmVyLT5zdHlsZSgpLnN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpOwogCiAgICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShmaWx0ZXIs
IGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0YW50KCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVs
VW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgbGlnaHRTb3VyY2UucmVsZWFzZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAppbmRl
eCBhZWUwOGRkNTZkMmExYzkyZDNmZDAyNThlNjgyMTkzMjQ1ZDVhNmU3Li5kODVkNmM5M2QwOWU2
ZDk0OGUyMjJjN2FiYjBiM2Q1OTRhMzQ5OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciog
ZmlsdGVyQnVpbGQKIAogICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHJlbmRl
cmVyLT5zdHlsZSgpLnN2Z1N0eWxlKCk7CiAgICAgCi0gICAgQ29sb3IgY29sb3IgPSBzdmdTdHls
ZS5mbG9vZENvbG9yKCk7CisgICAgT3B0aW9uYWxSR0JBIGNvbG9yID0gc3ZnU3R5bGUuZmxvb2RD
b2xvcigpOwogICAgIGZsb2F0IG9wYWNpdHkgPSBzdmdTdHlsZS5mbG9vZE9wYWNpdHkoKTsKIAog
ICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChp
bjEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAppbmRleCBlOWRl
ZWFmOWQyMDdiOTk2ODMzNzBkNjNlMzYzYmI3MTE2MjBhMGE3Li43MzBhZTMwZWM2OGNkNTFkNTJm
MTViMWRlMTgwNjRkMWRkZGIyOWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVGbG9vZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxl
bWVudC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVGbG9v
ZEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImIGZpbHRlcikKICAgICAK
ICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKS5z
dmdTdHlsZSgpOwogCi0gICAgQ29sb3IgY29sb3IgPSBzdmdTdHlsZS5mbG9vZENvbG9yKCk7Cisg
ICAgT3B0aW9uYWxSR0JBIGNvbG9yID0gc3ZnU3R5bGUuZmxvb2RDb2xvcigpOwogICAgIGZsb2F0
IG9wYWNpdHkgPSBzdmdTdHlsZS5mbG9vZE9wYWNpdHkoKTsKIAogICAgIHJldHVybiBGRUZsb29k
OjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgb3BhY2l0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggZmVmN2VlZDE5ZjRl
YmRmYzgzYzlkMTlkYTdkYWRlZjM1NGNkZjU4Ni4uODg4YzIzNmRhNDllNDFkMTU2YmE4YjEzMmQ2
ZDg5OGMyYjVjNDEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqIGZpbHRlCiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgCi0gICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0
aW5nQ29sb3IoKTsKKyAgICBPcHRpb25hbFJHQkEgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5z
dmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVm
ZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VT
Y2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtl
cm5lbFVuaXRMZW5ndGhZKCksIGxpZ2h0U291cmNlLnJlbGVhc2UoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IGIxYzI1MDY3NmIwZDQ0NTIxMDM1ZTEw
OTA1NzY0OTVjMWQ0ZjRiNTEuLmUxNDY1ZTdkZmRmZmUxZDlhNzg4MmUwNjM1OWNkOWIyZmJkMjQ5
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC0xMzMs
NyArMTMzLDcgQEAgVmVjdG9yPEdyYWRpZW50OjpDb2xvclN0b3A+IFNWR0dyYWRpZW50RWxlbWVu
dDo6YnVpbGRTdG9wcygpCiAgICAgZmxvYXQgcHJldmlvdXNPZmZzZXQgPSAwLjBmOwogCiAgICAg
Zm9yIChhdXRvJiBzdG9wIDogY2hpbGRyZW5PZlR5cGU8U1ZHU3RvcEVsZW1lbnQ+KCp0aGlzKSkg
ewotICAgICAgICBDb2xvciBjb2xvciA9IHN0b3Auc3RvcENvbG9ySW5jbHVkaW5nT3BhY2l0eSgp
OworICAgICAgICBPcHRpb25hbFJHQkEgY29sb3IgPSBzdG9wLnN0b3BDb2xvckluY2x1ZGluZ09w
YWNpdHkoKTsKIAogICAgICAgICAvLyBGaWd1cmUgb3V0IHJpZ2h0IG1vbm90b25pYyBvZmZzZXQK
ICAgICAgICAgZmxvYXQgb2Zmc2V0ID0gc3RvcC5vZmZzZXQoKTsKQEAgLTE0MSw3ICsxNDEsNyBA
QCBWZWN0b3I8R3JhZGllbnQ6OkNvbG9yU3RvcD4gU1ZHR3JhZGllbnRFbGVtZW50OjpidWlsZFN0
b3BzKCkKICAgICAgICAgcHJldmlvdXNPZmZzZXQgPSBvZmZzZXQ7CiAKICAgICAgICAgLy8gRXh0
cmFjdCBpbmRpdmlkdWFsIGNoYW5uZWwgdmFsdWVzCi0gICAgICAgIC8vIEZJWE1FOiBXaHkgZG9l
c24ndCBDb2xvclN0b3AgdGFrZSBhIENvbG9yIGFuZCBhbiBvZmZzZXQ/PworICAgICAgICAvLyBG
SVhNRTogV2h5IGRvZXNuJ3QgQ29sb3JTdG9wIHRha2UgYSBPcHRpb25hbFJHQkEgYW5kIGFuIG9m
ZnNldD8/CiAgICAgICAgIGZsb2F0IHIsIGcsIGIsIGE7CiAgICAgICAgIGNvbG9yLmdldFJHQkEo
ciwgZywgYiwgYSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmgKaW5kZXggNWIzMTNmNGE1MGU1MWEzMDVm
OTFmNDJkMjdjZmMxMjAxMmMxOTcyZi4uMzNhNDY5ODBlZWMxMWIyMWQ4OThmOTQwZTUwNWE2NDA1
NzE1MWM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdQYWludChTVkdfUEFJTlRUWVBFX0NVUlJF
TlRDT0xPUikpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8U1ZHUGFpbnQ+IGNyZWF0ZUNvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikKKyAgICBzdGF0aWMgUmVmPFNWR1BhaW50PiBjcmVhdGVDb2xv
cihjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yKQogICAgIHsKICAgICAgICAgYXV0byBwYWludCA9
IGFkb3B0UmVmKCpuZXcgU1ZHUGFpbnQoU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUikpOwogICAgICAg
ICBwYWludC5nZXQoKS5zZXRDb2xvcihjb2xvcik7CkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHUGFpbnQoU1ZHX1BBSU5UVFlQRV9VUkks
IHVyaSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8U1ZHUGFpbnQ+IGNyZWF0ZVVSSUFuZENv
bG9yKGNvbnN0IFN0cmluZyYgdXJpLCBjb25zdCBDb2xvciYgY29sb3IpCisgICAgc3RhdGljIFJl
ZjxTVkdQYWludD4gY3JlYXRlVVJJQW5kQ29sb3IoY29uc3QgU3RyaW5nJiB1cmksIGNvbnN0IE9w
dGlvbmFsUkdCQSYgY29sb3IpCiAgICAgewogICAgICAgICBhdXRvIHBhaW50ID0gYWRvcHRSZWYo
Km5ldyBTVkdQYWludChTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUiwgdXJpKSk7CiAgICAgICAg
IHBhaW50LmdldCgpLnNldENvbG9yKGNvbG9yKTsKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjsKIAotICAg
IHN0YXRpYyBSZWY8U1ZHUGFpbnQ+IGNyZWF0ZShjb25zdCBTVkdQYWludFR5cGUmIHR5cGUsIGNv
bnN0IFN0cmluZyYgdXJpLCBjb25zdCBDb2xvciYgY29sb3IpCisgICAgc3RhdGljIFJlZjxTVkdQ
YWludD4gY3JlYXRlKGNvbnN0IFNWR1BhaW50VHlwZSYgdHlwZSwgY29uc3QgU3RyaW5nJiB1cmks
IGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IpCiAgICAgewogICAgICAgICBhdXRvIHBhaW50ID0g
YWRvcHRSZWYoKm5ldyBTVkdQYWludCh0eXBlLCB1cmkpKTsKICAgICAgICAgcGFpbnQuZ2V0KCku
c2V0Q29sb3IoY29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKaW5kZXgg
YmJlNGY2NjBhZDJmZDJjZTEzNTBhM2UxOTBkYWI4ZDI2Y2U3NWRjNy4uMTRhMWZkOGJhZTc2ZTY3
NDZjM2FlNDBkYjJkNGQ3YWE2Yzg2ZTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N0b3BFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1l
bnQuY3BwCkBAIC04NiwxNCArODYsMTQgQEAgYm9vbCBTVkdTdG9wRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUNvbG9y
IFNWR1N0b3BFbGVtZW50OjpzdG9wQ29sb3JJbmNsdWRpbmdPcGFjaXR5KCkgY29uc3QKK09wdGlv
bmFsUkdCQSBTVkdTdG9wRWxlbWVudDo6c3RvcENvbG9ySW5jbHVkaW5nT3BhY2l0eSgpIGNvbnN0
CiB7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIoKSA/ICZyZW5kZXJlcigpLT5z
dHlsZSgpIDogbnVsbHB0cjsKICAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBmb3IgbnVsbCBzdHls
ZSBleGlzdHMgdG8gYWRkcmVzcyBCdWcgV0sgOTA4MTQsIGEgcmFyZSBjcmFzaCBjb25kaXRpb24g
aW4KICAgICAvLyB3aGljaCB0aGUgcmVuZGVyZXIgb3Igc3R5bGUgaXMgbnVsbC4gVGhpcyBlbnRp
cmUgY2xhc3MgaXMgc2NoZWR1bGVkIGZvciByZW1vdmFsIChCdWcgV0sgODY5NDEpCiAgICAgLy8g
YW5kIHdlIHdpbGwgdG9sZXJhdGUgdGhpcyBudWxsIGNoZWNrIHVudGlsIHRoZW4uCiAgICAgaWYg
KCFzdHlsZSkKLSAgICAgICAgcmV0dXJuIENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgdHJ1ZSk7
IC8vIFRyYW5zcGFyZW50IGJsYWNrLgorICAgICAgICByZXR1cm4gT3B0aW9uYWxSR0JBKE9wdGlv
bmFsUkdCQTo6dHJhbnNwYXJlbnQsIHRydWUpOyAvLyBUcmFuc3BhcmVudCBibGFjay4KIAogICAg
IGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlLT5zdmdTdHlsZSgpOwogICAg
IHJldHVybiBjb2xvcldpdGhPdmVycmlkZUFscGhhKHN2Z1N0eWxlLnN0b3BDb2xvcigpLnJnYigp
LCBzdmdTdHlsZS5zdG9wT3BhY2l0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdG9wRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgK
aW5kZXggYTgzNzQ5OGEyM2YwZmM1MTJiZWE5NzQyYWUzYThjNDQ1ZWMwNzA5OS4uOGM0OTljMGQ2
YmJmM2ZiMTQxMmI4NjQyNTljMzAzNDRkYmQzNjI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BF
bGVtZW50LmgKQEAgLTMwLDcgKzMwLDcgQEAgY2xhc3MgU1ZHU3RvcEVsZW1lbnQgZmluYWwgOiBw
dWJsaWMgU1ZHRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTVkdTdG9wRWxlbWVu
dD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgQ29sb3Ig
c3RvcENvbG9ySW5jbHVkaW5nT3BhY2l0eSgpIGNvbnN0OworICAgIE9wdGlvbmFsUkdCQSBzdG9w
Q29sb3JJbmNsdWRpbmdPcGFjaXR5KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgU1ZHU3RvcEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKaW5kZXggNWEyMjBiMTJlY2Q0YzQ2ZjdhMTA3NTViYWRjNjdkMjU4YjNh
NDRhYi4uZjMwOTQ0ZGZkMGM2OTgwOWJlZDM0ZWY0YjJhNjQwOGJhMTQwNmI5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtODQzLDcgKzg0Myw3IEBAIHZvaWQgSW50ZXJu
YWxzOjpzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFN0
cmluZyYgY29sb3JWCiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gZWxlbWVu
dC0+dG9JbnB1dEVsZW1lbnQoKTsKICAgICBpZiAoIWlucHV0RWxlbWVudCkKICAgICAgICAgcmV0
dXJuOwotICAgIGlucHV0RWxlbWVudC0+c2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihDb2xvcihj
b2xvclZhbHVlKSk7CisgICAgaW5wdXRFbGVtZW50LT5zZWxlY3RDb2xvckluQ29sb3JDaG9vc2Vy
KE9wdGlvbmFsUkdCQShjb2xvclZhbHVlKSk7CiB9CiAjZW5kaWYKIApAQCAtMTA1Miw3ICsxMDUy
LDcgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFZpZXdCYXNlQmFja2dyb3VuZENvbG9yKGNvbnN0IFN0
cmluZyYgY29sb3JWYWx1ZSwgRXhjZXB0aW9uQ28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGRvY3VtZW50LT52aWV3KCktPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoQ29sb3IoY29sb3JW
YWx1ZSkpOworICAgIGRvY3VtZW50LT52aWV3KCktPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoT3B0
aW9uYWxSR0JBKGNvbG9yVmFsdWUpKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnNldFBhZ2luYXRp
b24oY29uc3QgU3RyaW5nJiBtb2RlLCBpbnQgZ2FwLCBpbnQgcGFnZUxlbmd0aCwgRXhjZXB0aW9u
Q29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYWdlT3Zl
cmxheUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheUNs
aWVudC5jcHAKaW5kZXggNjFmMTliZjE2NTAxYTlkZmYxNmQ3YjllODk4MjA0ODRlMjExMTVkOC4u
NDRlZjc1MzU0ZGNhMjQ1ZjM0MmZiYjIyYTY3ODcyNDliMmEzMzVjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcApAQCAtODcsMTAgKzg3
LDEwIEBAIHZvaWQgTW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYg
b3ZlcmxheSwgR3JhcGhpY3NDb250ZXh0JiBjb250CiAgICAgRmxvYXRSZWN0IGluc2V0UmVjdCA9
IG92ZXJsYXkuYm91bmRzKCk7CiAKICAgICBpZiAob3ZlcmxheS5vdmVybGF5VHlwZSgpID09IFBh
Z2VPdmVybGF5OjpPdmVybGF5VHlwZTo6RG9jdW1lbnQpIHsKLSAgICAgICAgY29udGV4dC5zZXRT
dHJva2VDb2xvcihDb2xvcigwLCAyNTUsIDApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAg
ICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihPcHRpb25hbFJHQkEoMCwgMjU1LCAwKSwgQ29sb3JT
cGFjZURldmljZVJHQik7CiAgICAgICAgIGluc2V0UmVjdC5pbmZsYXRlKC01MCk7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAwLCAyNTUpLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihPcHRp
b25hbFJHQkEoMCwgMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGluc2V0
UmVjdC5pbmZsYXRlKC0yMCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lv
cy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJWaWV3L1dl
YlBERlZpZXdJT1MubW0KaW5kZXggZjFlNzQ5OTNhYzc4NDIwZTUxNTY5ODAxNDE3ODA4ZThhZWRi
YTM2Yy4uODdmYmE3ZmE5YTU3OGFlZjJhNDg0MDA3OTAxMDYxMmU0YjFhNjZjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQpAQCAtMTIwLDcgKzEyMCw3IEBA
IC0gKHZvaWQpZHJhd1BhZ2U6KENHUERGUGFnZVJlZilhUGFnZQogICAgIENHQ29udGV4dFNhdmVH
U3RhdGUoY29udGV4dCk7CiAgICAgQ0dGbG9hdCBoZWlnaHQgPSBXZWJLaXRMaW5rZWRPbk9yQWZ0
ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9GTElQUEVEX1NIQURPV1MpID8gMi4wZiA6IC0y
LjBmOwogICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihjb250ZXh0LCBDR1NpemVNYWtl
KDAuMGYsIGhlaWdodCksIDMuMGYsIFtbc2VsZiBjbGFzc10gc2hhZG93Q29sb3JdKTsKLSAgICBD
R0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihDb2xv
cjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKKyAgICBDR0NvbnRleHRTZXRGaWxsQ29s
b3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihPcHRpb25hbFJHQkE6OndoaXRlLCBD
b2xvclNwYWNlRGV2aWNlUkdCKSk7CiAgICAgQ0dDb250ZXh0RmlsbFJlY3QoY29udGV4dCwgcGFn
ZVJlY3QpOwogICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7ICAgIAogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViVmlldy9XZWJQbGFpbldoaXRlVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYlZpZXcvV2ViUGxhaW5XaGl0ZVZpZXcubW0KaW5kZXgg
MWUwZTA3YzRmOTdmZWU0YWE0MjAxM2IxNTE2Y2I0YzkzOGQ5OThkMi4uZjI4M2QzNTg2Yjc2Mjhi
OGQ3NTdiMWY2OTdjMjk3NTkxM2Q4OWIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3Mv
V2ViVmlldy9XZWJQbGFpbldoaXRlVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJW
aWV3L1dlYlBsYWluV2hpdGVWaWV3Lm1tCkBAIC00Miw3ICs0Miw3IEBAIEBpbXBsZW1lbnRhdGlv
biBXZWJQbGFpbldoaXRlVmlldwogLSAodm9pZClkcmF3UmVjdDooTlNSZWN0KXJlY3QKIHsKICAg
ICBDR0NvbnRleHRSZWYgY29udGV4dCA9IFdLR2V0Q3VycmVudEdyYXBoaWNzQ29udGV4dCgpOwot
ICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9y
KENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQikpOworICAgIENHQ29udGV4dFNldEZp
bGxDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKE9wdGlvbmFsUkdCQTo6d2hp
dGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKICAgICBXS1JlY3RGaWxsKGNvbnRleHQsIFtzZWxm
IGJvdW5kc10pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGQ3NTVmYzdjMTk2YWNkNzhiYzZjYmNhZjc1YjJjNmM2
NmY1YjU4NDIuLjQ4ZTMyMTcyZWZiNmNjYWJjYTEyNjJmNjE1YzVlZDhmN2FiMzExM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRf
VFlQRV9DT0xPUikKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb2xvckNo
b29zZXI+IGNyZWF0ZUNvbG9yQ2hvb3NlcihXZWJDb3JlOjpDb2xvckNob29zZXJDbGllbnQqLCBj
b25zdCBXZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OkNvbG9yQ2hvb3Nlcj4gY3JlYXRlQ29sb3JDaG9vc2VyKFdlYkNvcmU6OkNv
bG9yQ2hvb3NlckNsaWVudCosIGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYpIG92ZXJyaWRl
OwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OktleWJvYXJkVUlNb2RlIGtleWJvYXJk
VUlNb2RlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXggMWI5Y2Y5YzNhN2EyNjI1MjMwZTQyMzNkYzA3
OTM2ZTA5OTgwMWFjOC4uOGIwYmExOTVlNTdiMDRiYzM4Y2UyMDJjMzAwMjRiZTU0YjFiOWVhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5tbQpAQCAtNzAxLDcgKzcwMSw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojphbm5vdGF0
ZWRSZWdpb25zQ2hhbmdlZCgpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQotc3RkOjp1bmlxdWVfcHRyPENvbG9yQ2hvb3Nlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVD
b2xvckNob29zZXIoQ29sb3JDaG9vc2VyQ2xpZW50KiBjbGllbnQsIGNvbnN0IENvbG9yJiBpbml0
aWFsQ29sb3IpCitzdGQ6OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBXZWJDaHJvbWVDbGllbnQ6
OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCwgY29uc3QgT3B0
aW9uYWxSR0JBJiBpbml0aWFsQ29sb3IpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCA8aW5w
dXQgdHlwZT0nY29sb3InPiBmb3IgV0sxIChCdWcgMTE5MDk0KS4KICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbQppbmRleCBjMTg4YjlkNzM5NTdhNGEyMzAzZDg3MDIxODMxMzA2Y2Q2MDEz
YjI5Li5iMzUwZGVkMTI2ZTdkZTAwY2E5YjFiMjk3YTAwZDZiYzA3ZTQ0ZWU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBA
IC01NTksOCArNTU5LDggQEAgc3RhdGljIE5TU3RyaW5nKiB1bmRvTmFtZUZvckVkaXRBY3Rpb24o
RWRpdEFjdGlvbiBlZGl0QWN0aW9uKQogICAgIHN3aXRjaCAoZWRpdEFjdGlvbikgewogICAgICAg
ICBjYXNlIEVkaXRBY3Rpb25VbnNwZWNpZmllZDogcmV0dXJuIG5pbDsKICAgICAgICAgY2FzZSBF
ZGl0QWN0aW9uSW5zZXJ0OiByZXR1cm4gbmlsOwotICAgICAgICBjYXNlIEVkaXRBY3Rpb25TZXRD
b2xvcjogcmV0dXJuIFVJX1NUUklOR19LRVlfSU5URVJOQUwoIlNldCBDb2xvciIsICJTZXQgQ29s
b3IgKFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsKLSAgICAgICAgY2Fz
ZSBFZGl0QWN0aW9uU2V0QmFja2dyb3VuZENvbG9yOiByZXR1cm4gVUlfU1RSSU5HX0tFWV9JTlRF
Uk5BTCgiU2V0IEJhY2tncm91bmQgQ29sb3IiLCAiU2V0IEJhY2tncm91bmQgQ29sb3IgKFVuZG8g
YWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsKKyAgICAgICAgY2FzZSBFZGl0QWN0
aW9uU2V0Q29sb3I6IHJldHVybiBVSV9TVFJJTkdfS0VZX0lOVEVSTkFMKCJTZXQgQ29sb3IiLCAi
U2V0IE9wdGlvbmFsUkdCQSAoVW5kbyBhY3Rpb24gbmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFtZSIp
OworICAgICAgICBjYXNlIEVkaXRBY3Rpb25TZXRCYWNrZ3JvdW5kQ29sb3I6IHJldHVybiBVSV9T
VFJJTkdfS0VZX0lOVEVSTkFMKCJTZXQgQmFja2dyb3VuZCBDb2xvciIsICJTZXQgQmFja2dyb3Vu
ZCBPcHRpb25hbFJHQkEgKFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsK
ICAgICAgICAgY2FzZSBFZGl0QWN0aW9uVHVybk9mZktlcm5pbmc6IHJldHVybiBVSV9TVFJJTkdf
S0VZX0lOVEVSTkFMKCJUdXJuIE9mZiBLZXJuaW5nIiwgIlR1cm4gT2ZmIEtlcm5pbmcgKFVuZG8g
YWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsKICAgICAgICAgY2FzZSBFZGl0QWN0
aW9uVGlnaHRlbktlcm5pbmc6IHJldHVybiBVSV9TVFJJTkdfS0VZX0lOVEVSTkFMKCJUaWdodGVu
IEtlcm5pbmciLCAiVGlnaHRlbiBLZXJuaW5nIChVbmRvIGFjdGlvbiBuYW1lKSIsICJVbmRvIGFj
dGlvbiBuYW1lIik7CiAgICAgICAgIGNhc2UgRWRpdEFjdGlvbkxvb3Nlbktlcm5pbmc6IHJldHVy
biBVSV9TVFJJTkdfS0VZX0lOVEVSTkFMKCJMb29zZW4gS2VybmluZyIsICJMb29zZW4gS2Vybmlu
ZyAoVW5kbyBhY3Rpb24gbmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFtZSIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aAppbmRleCA4ZTQ4ZDhmNmZhMGQ3MDdiN2Y3NDhjMjYyMWU4ZDVhZjg3Mzc2MTIzLi5mYjFlMTM1
MWJiOWY1OGVmODJiYWZlNTU5MDdiZWU3ZmYyNDgxMjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAt
ODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBsb25nIGNoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgU3RyaW5nIHVuaXF1ZU5hbWUo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvbG9yIGNvbG9yKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgV2ViQ29yZTo6T3B0aW9u
YWxSR0JBIGNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgV2ViQ29yZTo6VVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKIAogICAgIHZpcnR1YWwgbG9uZyBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCA5MTU1M2ZiOGNmYTE5ZjE4MjBhMmFiZTFlZjYwOTM0
ZjczYjkwMTFhLi40NTExZTg1NjhlOGEzNTBmZjFmZGZhNDFiYzU1NzVmMzQxNGM0ZWFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLm1tCkBAIC0xNzgsNyArMTc4LDcgQEAgU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6dW5pcXVlTmFtZSgpCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZDo6dW5p
cXVlTmFtZSgpOwogfQogCi1Db2xvciBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbG9yKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitPcHRpb25hbFJHQkEgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewogICAgIHJldHVybiBQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvbG9yKCk7ICAgIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggNDljNGYxZTM0ZjRiN2M0MGEwMjA5MDFi
M2FiZmZiMzRmNmQxNzY3Ni4uMDRhZTFjMWE3NWIwNWI0YTFmYzMyNjY1MmMzZWFmZWM5NGExMmEy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC00NDUsOSArNDQ1LDkg
QEAgLSAodm9pZClfdXBkYXRlQmFja2dyb3VuZEFuZFVwZGF0ZXNXaGlsZU9mZnNjcmVlbgogICAg
ICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKSkgewogICAgICAgICAgICAg
dmlldy0+c2V0VHJhbnNwYXJlbnQoIWRyYXdzQmFja2dyb3VuZCk7CiAjaWYgIVBMQVRGT1JNKElP
UykKLSAgICAgICAgICAgIENvbG9yIGNvbG9yID0gY29sb3JGcm9tTlNDb2xvcihbYmFja2dyb3Vu
ZENvbG9yIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTpOU0RldmljZVJHQkNvbG9yU3BhY2VdKTsK
KyAgICAgICAgICAgIE9wdGlvbmFsUkdCQSBjb2xvciA9IGNvbG9yRnJvbU5TQ29sb3IoW2JhY2tn
cm91bmRDb2xvciBjb2xvclVzaW5nQ29sb3JTcGFjZU5hbWU6TlNEZXZpY2VSR0JDb2xvclNwYWNl
XSk7CiAjZWxzZQotICAgICAgICAgICAgQ29sb3IgY29sb3IgPSBDb2xvcihiYWNrZ3JvdW5kQ29s
b3IpOworICAgICAgICAgICAgT3B0aW9uYWxSR0JBIGNvbG9yID0gT3B0aW9uYWxSR0JBKGJhY2tn
cm91bmRDb2xvcik7CiAjZW5kaWYKICAgICAgICAgICAgIHZpZXctPnNldEJhc2VCYWNrZ3JvdW5k
Q29sb3IoY29sb3IpOwogICAgICAgICAgICAgdmlldy0+c2V0U2hvdWxkVXBkYXRlV2hpbGVPZmZz
Y3JlZW4oW3dlYlZpZXcgc2hvdWxkVXBkYXRlV2hpbGVPZmZzY3JlZW5dKTsKQEAgLTEwMjAsNyAr
MTAyMCw3IEBAIC0gKENHQ29sb3JSZWYpX2JvZHlCYWNrZ3JvdW5kQ29sb3IKICAgICBSZW5kZXJP
YmplY3QqIGJvZHlSZW5kZXJlciA9IGJvZHktPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFib2R5UmVu
ZGVyZXIpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgQ29sb3IgY29sb3IgPSBib2R5UmVuZGVy
ZXItPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yKTsKKyAgICBPcHRpb25hbFJHQkEgY29sb3IgPSBib2R5UmVuZGVyZXItPnN0eWxlKCkudmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKICAgICBpZiAo
IWNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKICNpZiAhUExBVEZPUk0oSU9T
KQpAQCAtMTQwOCw3ICsxNDA4LDcgQEAgLSAoTlNSZWN0KXJlY3RGb3JTY3JvbGxUb1Zpc2libGUK
IAogLSAodm9pZClzZXRDYXJldENvbG9yOihDR0NvbG9yUmVmKWNvbG9yCiB7Ci0gICAgQ29sb3Ig
cUNvbG9yID0gY29sb3IgPyBDb2xvcihjb2xvcikgOiBDb2xvcjo6YmxhY2s7CisgICAgT3B0aW9u
YWxSR0JBIHFDb2xvciA9IGNvbG9yID8gT3B0aW9uYWxSR0JBKGNvbG9yKSA6IE9wdGlvbmFsUkdC
QTo6YmxhY2s7CiAgICAgV2ViQ29yZTo6RnJhbWUgKmZyYW1lID0gY29yZShzZWxmKTsKICAgICBm
cmFtZS0+c2VsZWN0aW9uKCkuc2V0Q2FyZXRDb2xvcihxQ29sb3IpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQppbmRleCAxYzdmYTRhNDg5YjM5MWFjMGQ3Y2M4
ZmVmMjFjYjBjNzkxZjM3YzEzLi5mYTdmODBiMjg3NDBlYzZiYWFhZjU1NjA3Y2M4ZDgzMTFhN2I2
NDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQpAQCAtNTI2
LDcgKzUyNiw3IEBAIC0gKHZvaWQpZHJhd1JlY3Q6KE5TUmVjdClyZWN0CiAgICAgICAgICAgICBO
U1JlY3RGaWxsKHJlY3QpOwogI2Vsc2UKICAgICAgICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRl
eHQgPSBXS0dldEN1cnJlbnRHcmFwaGljc0NvbnRleHQoKTsKLSAgICAgICAgICAgIENHQ29udGV4
dFNldEZpbGxDb2xvcldpdGhDb2xvcihjZ0NvbnRleHQsIGNhY2hlZENHQ29sb3IoQ29sb3I6Ondo
aXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRGaWxs
Q29sb3JXaXRoQ29sb3IoY2dDb250ZXh0LCBjYWNoZWRDR0NvbG9yKE9wdGlvbmFsUkdCQTo6d2hp
dGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKICAgICAgICAgICAgIFdLUmVjdEZpbGwoY2dDb250
ZXh0LCByZWN0KTsKICNlbmRpZgogICAgICAgICB9CkBAIC01MzgsNyArNTM4LDcgQEAgLSAodm9p
ZClkcmF3UmVjdDooTlNSZWN0KXJlY3QKICAgICAgICAgICAgIE5TUmVjdEZpbGwocmVjdCk7CiAj
ZWxzZQogICAgICAgICAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IFdLR2V0Q3VycmVudEdy
YXBoaWNzQ29udGV4dCgpOwotICAgICAgICAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENv
bG9yKGNnQ29udGV4dCwgY2FjaGVkQ0dDb2xvcihDb2xvcjo6Y3lhbiwgQ29sb3JTcGFjZURldmlj
ZVJHQikpOworICAgICAgICAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNnQ29u
dGV4dCwgY2FjaGVkQ0dDb2xvcihPcHRpb25hbFJHQkE6OmN5YW4sIENvbG9yU3BhY2VEZXZpY2VS
R0IpKTsKICAgICAgICAgICAgIFdLUmVjdEZpbGwoY2dDb250ZXh0LCByZWN0KTsKICNlbmRpZgog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCAz
NjM1MjE4ZTk5YjU3YTcxODg3MDY0MzY1ZTIyYzljMTQ3Yzk2N2FkLi4wMTYyNWYyNzYyMzU2MDdh
YzE4NGM0NGQxMWJhYjc4YmFjOWU1ZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0KQEAgLTYyNjQsNyArNjI2NCw3IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRl
cmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRl
CiAgICAgICAgIE5TRGljdGlvbmFyeSAqYXR0cnMgPSBbc3RyaW5nIGF0dHJpYnV0ZXNBdEluZGV4
OmkgbG9uZ2VzdEVmZmVjdGl2ZVJhbmdlOiZyYW5nZSBpblJhbmdlOk5TTWFrZVJhbmdlKGksIGxl
bmd0aCAtIGkpXTsKIAogICAgICAgICBpZiAoTlNOdW1iZXIgKnN0eWxlID0gW2F0dHJzIG9iamVj
dEZvcktleTpOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV0pIHsKLSAgICAgICAgICAgIENv
bG9yIGNvbG9yID0gQ29sb3I6OmJsYWNrOworICAgICAgICAgICAgT3B0aW9uYWxSR0JBIGNvbG9y
ID0gT3B0aW9uYWxSR0JBOjpibGFjazsKICAgICAgICAgICAgIGlmIChOU0NvbG9yICpjb2xvckF0
dHIgPSBbYXR0cnMgb2JqZWN0Rm9yS2V5Ok5TVW5kZXJsaW5lQ29sb3JBdHRyaWJ1dGVOYW1lXSkK
ICAgICAgICAgICAgICAgICBjb2xvciA9IGNvbG9yRnJvbU5TQ29sb3IoY29sb3JBdHRyKTsKICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoQ29tcG9zaXRpb25VbmRlcmxpbmUocmFuZ2UubG9jYXRp
b24sIE5TTWF4UmFuZ2UocmFuZ2UpLCBjb2xvciwgW3N0eWxlIGludFZhbHVlXSA+IDEpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW5kaWNhdGVMYXllci5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW5kaWNhdGVMYXllci5tbQppbmRleCA1ZWQ4
NGJjNzM4MmU4ZjcyMDRiYzNlMThlMjllMTViZGM4N2Y0MDA2Li42ZTA3YWIyNTBmOTlmNDU5ZWQz
NTMxMjEwYmU1ZTM0ZjdkMmIzMjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkluZGljYXRlTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJJbmRpY2F0ZUxheWVyLm1tCkBAIC00OSw3ICs0OSw3IEBAIC0gKGlkKWluaXRXaXRoV2ViVmll
dzooV2ViVmlldyAqKXdlYlZpZXcKICAgICBzZWxmLmNvbnRlbnRzU2NhbGUgPSBbW193ZWJWaWV3
IHdpbmRvd10gc2NyZWVuU2NhbGVdOwogCiAgICAgLy8gQmx1ZSBoaWdobGlnaHQgY29sb3IuCi0g
ICAgc3RhdGljIENvbG9yIGhpZ2hsaWdodENvbG9yKDExMS4wZiAvIDI1NS4wZiwgMTY4LjBmIC8g
MjU1LjBmLCAyMjAuMGYgLyAyNTUuMGYsIDAuNjZmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWxSR0JB
IGhpZ2hsaWdodENvbG9yKDExMS4wZiAvIDI1NS4wZiwgMTY4LjBmIC8gMjU1LjBmLCAyMjAuMGYg
LyAyNTUuMGYsIDAuNjZmKTsKICAgICBzZWxmLmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29s
b3IoaGlnaGxpZ2h0Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgcmV0dXJuIHNl
bGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNjQxOWRkYzAwODM2MGVh
YjExNWRhZWJhNDI1ZTMyNmE5YzEzOGM3ZC4uYWVmYzMwODk1OWQzNTM1NDY1ZTM2MDljZDQyMWMz
NjNhOTNlZmQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtODg5LDcg
Kzg4OSw3IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTooTlNT
dHJpbmcgKilmcmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0CiAjaWYgIVBMQVRGT1JNKElPUykKICAg
ICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0gW1tOU0NvbG9yIGNvbG9yV2l0aERldmljZVdo
aXRlOjEgYWxwaGE6MV0gcmV0YWluXTsKICNlbHNlCi0gICAgX3ByaXZhdGUtPmJhY2tncm91bmRD
b2xvciA9IENHQ29sb3JSZXRhaW4oY2FjaGVkQ0dDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpKTsKKyAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9yID0gQ0dDb2xvclJl
dGFpbihjYWNoZWRDR0NvbG9yKE9wdGlvbmFsUkdCQTo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VS
R0IpKTsKICNlbmRpZgogICAgIF9wcml2YXRlLT5pbmNsdWRlc0ZsYXR0ZW5lZENvbXBvc2l0aW5n
TGF5ZXJzV2hlbkRyYXdpbmdUb0JpdG1hcCA9IFlFUzsKIApAQCAtMTE4OCw3ICsxMTg4LDcgQEAg
LSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTlNTdHJpbmcgKilzdHlsZSBm
cmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMgPSBbcHJl
ZmVyZW5jZXMgcmV0YWluXTsKICAgICBfcHJpdmF0ZS0+bWFpbkZyYW1lRG9jdW1lbnRSZWFkeSA9
IE5POwogICAgIF9wcml2YXRlLT5kcmF3c0JhY2tncm91bmQgPSBZRVM7Ci0gICAgX3ByaXZhdGUt
PmJhY2tncm91bmRDb2xvciA9IENHQ29sb3JSZXRhaW4oY2FjaGVkQ0dDb2xvcihDb2xvcjo6d2hp
dGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKKyAgICBfcHJpdmF0ZS0+YmFja2dyb3VuZENvbG9y
ID0gQ0dDb2xvclJldGFpbihjYWNoZWRDR0NvbG9yKE9wdGlvbmFsUkdCQTo6d2hpdGUsIENvbG9y
U3BhY2VEZXZpY2VSR0IpKTsKIAogICAgIFdlYkZyYW1lVmlldyAqZnJhbWVWaWV3ID0gbmlsOwog
ICAgIGZyYW1lVmlldyA9IFtbV2ViRnJhbWVWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOiBDR1Jl
Y3RNYWtlKDAsMCxmcmFtZS5zaXplLndpZHRoLGZyYW1lLnNpemUuaGVpZ2h0KV07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKaW5kZXggNzk2YzBmNDJhNzY5OWYx
ODZmMGU0YzAzN2QxMTQ2N2M0NmIxMDI5NC4uNGVhNTAwNjViNzQwZTUyYzI0MjQyNmQwOWQ2OTNm
MDBiMTIzYTQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUu
aApAQCAtMzQzLDcgKzM0Myw3IEBAIHR5cGVkZWYgZW51bSB7CiAjaWYgIVRBUkdFVF9PU19JUEhP
TkUKIC8qIQogICAgIEBtZXRob2Qgc2V0QmFja2dyb3VuZENvbG9yOgotICAgIEBwYXJhbSBiYWNr
Z3JvdW5kQ29sb3IgQ29sb3IgdG8gdXNlIGFzIHRoZSBkZWZhdWx0IGJhY2tncm91bmQuCisgICAg
QHBhcmFtIGJhY2tncm91bmRDb2xvciBPcHRpb25hbFJHQkEgdG8gdXNlIGFzIHRoZSBkZWZhdWx0
IGJhY2tncm91bmQuCiAgICAgQGFic3RyYWN0IFNldHMgd2hhdCBjb2xvciB0aGUgcmVjZWl2ZXIg
ZHJhd3MgdW5kZXIgdHJhbnNwYXJlbnQgcGFnZSBiYWNrZ3JvdW5kIGNvbG9ycyBhbmQgaW1hZ2Vz
LgogICAgIFRoaXMgY29sb3IgaXMgYWxzbyB1c2VkIHdoZW4gbm8gcGFnZSBpcyBsb2FkZWQuIEEg
Y29sb3Igd2l0aCBhbHBoYSBzaG91bGQgb25seSBiZSB1c2VkIHdoZW4gdGhlIHJlY2VpdmVyIGlz
CiAgICAgaW4gYSBub24tb3BhcXVlIHdpbmRvdywgc2luY2UgdGhlIGNvbG9yIGlzIGRyYXduIHVz
aW5nIE5TQ29tcG9zaXRlQ29weS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlci5jcHAKaW5kZXggN2QyZmM5NDZkNzk2MTdlNWZmNDI4Yzc0MDliYTQ1YzBi
YTQzZDYwOC4uZjViMGUwNTg4ODM0NWZkZWE0NGQ3MWZhMGIzMTlhNjBjMThlMGViNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKQEAgLTEz
MywxMSArMTMzLDExIEBAIHZvaWQgSFVEU2xpZGVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkKIHsKICAgICAvLyBEcmF3IGd1dHRlcgogICAgIEludFNpemUgcmFkaXVzKG1fcmVjdC5o
ZWlnaHQoKSAvIDIsIG1fcmVjdC5oZWlnaHQoKSAvIDIpOwotICAgIGNvbnRleHQuZmlsbFJvdW5k
ZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QobV9yZWN0LCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCBy
YWRpdXMpLCBDb2xvcihzbGlkZXJHdXR0ZXJDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QobV9yZWN0LCByYWRp
dXMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMpLCBPcHRpb25hbFJHQkEoc2xpZGVyR3V0dGVyQ29s
b3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgIC8vIERyYXcgYnV0dG9uCi0gICAgY29u
dGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcihzbGlkZXJCdXR0b25Db2xvciksIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOwotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yKHNsaWRlckJ1dHRvbkNv
bG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihP
cHRpb25hbFJHQkEoc2xpZGVyQnV0dG9uQ29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihPcHRpb25hbFJHQkEoc2xpZGVyQnV0dG9uQ29sb3IpLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgIGlmIChtX2J1dHRvblNoYXBlID09IFJvdW5kQnV0
dG9uKSB7CiAgICAgICAgIGNvbnRleHQuZHJhd0VsbGlwc2UoSW50UmVjdChtX3JlY3QubG9jYXRp
b24oKS54KCkgKyBtX2J1dHRvblBvc2l0aW9uLCBtX3JlY3QubG9jYXRpb24oKS55KCkgLSAobV9i
dXR0b25TaXplIC0gbV9yZWN0LmhlaWdodCgpKSAvIDIsIG1fYnV0dG9uU2l6ZSwgbV9idXR0b25T
aXplKSk7CkBAIC00ODksOSArNDg5LDkgQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
OjpkcmF3KCkKICAgICBJbnRTaXplIGlubmVyUmFkaXVzKGJvcmRlclJhZGl1cyAtIGJvcmRlclRo
aWNrbmVzcywgYm9yZGVyUmFkaXVzIC0gYm9yZGVyVGhpY2tuZXNzKTsKICAgICBJbnRSZWN0IGlu
bmVyUmVjdChib3JkZXJUaGlja25lc3MsIGJvcmRlclRoaWNrbmVzcywgd2luZG93V2lkdGggLSBi
b3JkZXJUaGlja25lc3MgKiAyLCB3aW5kb3dIZWlnaHQgLSBib3JkZXJUaGlja25lc3MgKiAyKTsK
IAotICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3Qob3V0ZXJSZWN0
LCBvdXRlclJhZGl1cywgb3V0ZXJSYWRpdXMsIG91dGVyUmFkaXVzLCBvdXRlclJhZGl1cyksIENv
bG9yKGJvcmRlckNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5maWxs
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChvdXRlclJlY3QsIG91dGVyUmFkaXVzLCBvdXRl
clJhZGl1cywgb3V0ZXJSYWRpdXMsIG91dGVyUmFkaXVzKSwgT3B0aW9uYWxSR0JBKGJvcmRlckNv
bG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVy
YXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRS
b3VuZGVkUmVjdChpbm5lclJlY3QsIGlubmVyUmFkaXVzLCBpbm5lclJhZGl1cywgaW5uZXJSYWRp
dXMsIGlubmVyUmFkaXVzKSwgQ29sb3IoYmFja2dyb3VuZENvbG9yKSwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CisgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChpbm5l
clJlY3QsIGlubmVyUmFkaXVzLCBpbm5lclJhZGl1cywgaW5uZXJSYWRpdXMsIGlubmVyUmFkaXVz
KSwgT3B0aW9uYWxSR0JBKGJhY2tncm91bmRDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwog
CiAgICAgLy8gRHJhdyB0aGUgd2lkZ2V0cwogICAgIG1fcGxheVBhdXNlQnV0dG9uLmRyYXcoY29u
dGV4dCk7CkBAIC01MjUsMTMgKzUyNSwxMyBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI6OmRyYXcoKQogICAgIHMgPSB0aW1lVG9TdHJpbmcoY3VycmVudFRpbWUoKSk7CiAgICAgaW50
IGZvbnRIZWlnaHQgPSBmb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCk7CiAgICAgVGV4dFJ1biBs
ZWZ0VGV4dChzKTsKLSAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcih0ZXh0Q29sb3IpLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihPcHRpb25hbFJH
QkEodGV4dENvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgY29udGV4dC5kcmF3VGV4
dChmb250LCBsZWZ0VGV4dCwgSW50UG9pbnQod2luZG93V2lkdGggLyAyIC0gdGltZVNsaWRlcldp
ZHRoIC8gMiAtIG1hcmdpbiAtIGZvbnQud2lkdGgobGVmdFRleHQpLCB3aW5kb3dIZWlnaHQgLSBt
YXJnaW4gLSBzbGlkZXJIZWlnaHQgLyAyICsgZm9udEhlaWdodCAvIDQpKTsKIAogICAgIC8vIFJp
Z2h0IHN0cmluZwogICAgIHMgPSB0aW1lVG9TdHJpbmcoY3VycmVudFRpbWUoKSAtIGR1cmF0aW9u
KCkpOwogICAgIFRleHRSdW4gcmlnaHRUZXh0KHMpOwotICAgIGNvbnRleHQuc2V0RmlsbENvbG9y
KENvbG9yKHRleHRDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKE9wdGlvbmFsUkdCQSh0ZXh0Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
ICAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIHJpZ2h0VGV4dCwgSW50UG9pbnQod2luZG93V2lk
dGggLyAyICsgdGltZVNsaWRlcldpZHRoIC8gMiArIG1hcmdpbiwgd2luZG93SGVpZ2h0IC0gbWFy
Z2luIC0gc2xpZGVySGVpZ2h0IC8gMiArIGZvbnRIZWlnaHQgLyA0KSk7CiAKICAgICAvLyBDb3B5
IHRvIHRoZSB3aW5kb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBhODI1M2QzNGQxYWFmNDc1NmEy
NGViY2Y3MDMwN2E1MTJmOWU3NjZmLi41ZGViMmM1YThlNzU2YTI4M2RhYjY2OGJmMWQxMGQ5OTVi
ZTNjZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMDIwLDcgKzEwMjAsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAg
ICBSRUNUIHBpeGVsUmVjdDsKICAgICB2aWV3LT5mcmFtZVJlY3QoJnBpeGVsUmVjdCk7CiAgICAg
Ym9vbCB0cmFuc3BhcmVudCA9IHZpZXctPnRyYW5zcGFyZW50KCk7Ci0gICAgQ29sb3IgYmFja2dy
b3VuZENvbG9yID0gdHJhbnNwYXJlbnQgPyBDb2xvcjo6dHJhbnNwYXJlbnQgOiBDb2xvcjo6d2hp
dGU7CisgICAgT3B0aW9uYWxSR0JBIGJhY2tncm91bmRDb2xvciA9IHRyYW5zcGFyZW50ID8gT3B0
aW9uYWxSR0JBOjp0cmFuc3BhcmVudCA6IE9wdGlvbmFsUkdCQTo6d2hpdGU7CiAgICAgSW50UmVj
dCBsb2dpY2FsRnJhbWUocGl4ZWxSZWN0KTsKICAgICBsb2dpY2FsRnJhbWUuc2NhbGUoMS4wZiAv
IHZpZXctPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIGNvcmUobV93ZWJGcmFtZSktPmNyZWF0
ZVZpZXcobG9naWNhbEZyYW1lLnNpemUoKSwgYmFja2dyb3VuZENvbG9yLCB0cmFuc3BhcmVudCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOTAzY2NiNjllNjJlYzc1Mzk4Mzc3ODUyNmRmMmFl
YmUyN2QwMzQ4MC4uYmJiZWYxN2ZhZTc1OGRkYjE4NTcxZWNkODc3MWQ5ZjcyMDY5MzliMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkZyYW1lLmNwcApAQCAtMjA5Miw3ICsyMDkyLDcgQEAgQ09NUHRyPElBY2Nlc3Np
YmxlPiBXZWJGcmFtZTo6YWNjZXNzaWJsZSgpIGNvbnN0CiAKIHZvaWQgV2ViRnJhbWU6OnVwZGF0
ZUJhY2tncm91bmQoKQogewotICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IHdlYlZpZXcoKS0+
dHJhbnNwYXJlbnQoKSA/IENvbG9yOjp0cmFuc3BhcmVudCA6IENvbG9yOjp3aGl0ZTsKKyAgICBP
cHRpb25hbFJHQkEgYmFja2dyb3VuZENvbG9yID0gd2ViVmlldygpLT50cmFuc3BhcmVudCgpID8g
T3B0aW9uYWxSR0JBOjp0cmFuc3BhcmVudCA6IE9wdGlvbmFsUkdCQTo6d2hpdGU7CiAgICAgRnJh
bWUqIGNvcmVGcmFtZSA9IGNvcmUodGhpcyk7CiAKICAgICBpZiAoIWNvcmVGcmFtZSB8fCAhY29y
ZUZyYW1lLT52aWV3KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDhkMmY1ZGQ0MDI1YTYwNmEy
Yzc2ZTc0NDg3N2FlM2E4OGMwMDE4N2EuLjgwMWI1NzRiNGM4MGVkMmI1ZGI3ZjNjZDQxMTNlNDAz
MTIwZjcyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC0xMjk0LDcgKzEyOTQsNyBAQCB2b2lk
IFdlYlZpZXc6OnBhaW50SW50b0JhY2tpbmdTdG9yZShGcmFtZVZpZXcqIGZyYW1lVmlldywgSERD
IGJpdG1hcERDLCBjb25zdCBJbgogICAgICAgICBmcmFtZVZpZXctPnBhaW50KCZnYywgbG9naWNh
bERpcnR5UmVjdCk7CiAgICAgICAgIGdjLnJlc3RvcmUoKTsKICAgICAgICAgaWYgKG1fc2hvdWxk
SW52ZXJ0Q29sb3JzKQotICAgICAgICAgICAgZ2MuZmlsbFJlY3QobG9naWNhbERpcnR5UmVjdCwg
Q29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVEaWZmZXJlbmNlKTsK
KyAgICAgICAgICAgIGdjLmZpbGxSZWN0KGxvZ2ljYWxEaXJ0eVJlY3QsIE9wdGlvbmFsUkdCQTo6
d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZURpZmZlcmVuY2UpOwogICAgIH0K
ICAgICBnYy5yZXN0b3JlKCk7CiB9CkBAIC01ODQ1LDcgKzU4NDUsNyBAQCBzdGF0aWMgdm9pZCBj
b21wb3NpdGlvblRvVW5kZXJsaW5lcyhjb25zdCBWZWN0b3I8RFdPUkQ+JiBjbGF1c2VzLCBjb25z
dCBWZWN0b3I8QgogICAgICAgICB1bmRlcmxpbmVzW2ldLmVuZE9mZnNldCA9IGNsYXVzZXNbaSAr
IDFdOwogICAgICAgICBCWVRFIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXNbY2xhdXNlc1tpXV07CiAg
ICAgICAgIHVuZGVybGluZXNbaV0udGhpY2sgPSBhdHRyaWJ1dGUgPT0gQVRUUl9UQVJHRVRfQ09O
VkVSVEVEIHx8IGF0dHJpYnV0ZSA9PSBBVFRSX1RBUkdFVF9OT1RDT05WRVJURUQ7Ci0gICAgICAg
IHVuZGVybGluZXNbaV0uY29sb3IgPSBDb2xvcigwLDAsMCk7CisgICAgICAgIHVuZGVybGluZXNb
aV0uY29sb3IgPSBPcHRpb25hbFJHQkEoMCwwLDApOwogICAgIH0KIH0KIApAQCAtNzIzMSw3ICs3
MjMxLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRDb21wb3NpdGlv
bkZvclRlc3RpbmcoCiAgICAgU3RyaW5nIGNvbXBvc2l0aW9uU3RyID0gdG9TdHJpbmcoY29tcG9z
aXRpb24pOwogCiAgICAgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzOwot
ICAgIHVuZGVybGluZXMuYXBwZW5kKENvbXBvc2l0aW9uVW5kZXJsaW5lKDAsIGNvbXBvc2l0aW9u
U3RyLmxlbmd0aCgpLCBDb2xvcihDb2xvcjo6YmxhY2spLCBmYWxzZSkpOworICAgIHVuZGVybGlu
ZXMuYXBwZW5kKENvbXBvc2l0aW9uVW5kZXJsaW5lKDAsIGNvbXBvc2l0aW9uU3RyLmxlbmd0aCgp
LCBPcHRpb25hbFJHQkEoT3B0aW9uYWxSR0JBOjpibGFjayksIGZhbHNlKSk7CiAgICAgZnJhbWUu
ZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24oY29tcG9zaXRpb25TdHIsIHVuZGVybGluZXMsIGZyb20s
IGZyb20gKyBsZW5ndGgpOwogCiAgICAgcmV0dXJuIFNfT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggNTFkYjA4Y2UzNjBiZjhhY2ZiNjBhM2ViYzgwMDhl
MGYyYTk0MDBmZC4uZTdiODI1MmY2ZmQ0ZTlhMmFlNDcwNzg3NmIxNWY1MjBlNjRmMjE3OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMTU1LDE0ICsxNTUs
MTQgQEAgdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwKICAgICBwYWludFRpbGVzVG9UZXh0dXJlTWFw
cGVyKHRpbGVzVG9QYWludCwgdGV4dHVyZU1hcHBlciwgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNp
dHksIHJlY3QoKSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmRyYXdCb3Jk
ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgQ29sb3ImIGJvcmRlckNvbG9y
LCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQordm9pZCBDb29yZGluYXRlZEJhY2tpbmdT
dG9yZTo6ZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBPcHRp
b25hbFJHQkEmIGJvcmRlckNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQogewog
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtICog
YWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOwogICAgIGZvciAoYXV0byYgdGls
ZSA6IG1fdGlsZXMudmFsdWVzKCkpCiAgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIo
Ym9yZGVyQ29sb3IsIGJvcmRlcldpZHRoLCB0aWxlLnJlY3QoKSwgYWRqdXN0ZWRUcmFuc2Zvcm0p
OwogfQogCi12b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpkcmF3UmVwYWludENvdW50ZXIo
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgaW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29s
b3ImIGJvcmRlckNvbG9yLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
OjpkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgaW50IHJl
cGFpbnRDb3VudCwgY29uc3QgT3B0aW9uYWxSR0JBJiBib3JkZXJDb2xvciwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQog
ewogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3Jt
ICogYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOwogICAgIGZvciAoYXV0byYg
dGlsZSA6IG1fdGlsZXMudmFsdWVzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmUuaAppbmRleCA1ZGFmYTAxMTI4N2U5YWNhNDI3NDQyYjNlZDY3YzdhZDkzYzVkYzIwLi40NDM4
YzkyYTAyOWE0N2I1NjNkZWM5MmM3YWRiMDM3MzFlOTY1OGU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlLmgKQEAgLTY2LDggKzY2LDggQEAgcHVibGljOgogICAgIFJlZlB0
cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRT
aXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFRv
VGV4dHVyZU1hcHBlcihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciosIGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
KiwgaW50IHJlcGFpbnRDb3VudCwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIq
LCBjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgm
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBXZWJDb3JlOjpPcHRpb25h
bFJHQkEmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJn
dW1lbnRDb2RlcnMuY3BwCmluZGV4IDJiZTljODdkYWFkZjc0NzgxMzFhZDk4MTQzYWE5NmQzM2Jm
NjI1M2EuLjYzOTQ3MDVhZTNmZjJmODIzOTk2ZjZiOTA4NmJmOTI1YWM4NTNmMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcApA
QCAtODcsNyArODcsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0
aW9ucz46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsCiAgICAgICAgICAgICBjb25z
dCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uJiBzaGFkb3cgPSBkb3duY2FzdDxEcm9wU2hhZG93
RmlsdGVyT3BlcmF0aW9uPihmaWx0ZXIpOwogICAgICAgICAgICAgQXJndW1lbnRDb2RlcjxJbnRQ
b2ludD46OmVuY29kZShlbmNvZGVyLCBzaGFkb3cubG9jYXRpb24oKSk7CiAgICAgICAgICAgICBl
bmNvZGVyIDw8IHN0YXRpY19jYXN0PGludDMyX3Q+KHNoYWRvdy5zdGREZXZpYXRpb24oKSk7Ci0g
ICAgICAgICAgICBBcmd1bWVudENvZGVyPENvbG9yPjo6ZW5jb2RlKGVuY29kZXIsIHNoYWRvdy5j
b2xvcigpKTsKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8T3B0aW9uYWxSR0JBPjo6ZW5jb2Rl
KGVuY29kZXIsIHNoYWRvdy5jb2xvcigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpSRUZFUkVOQ0U6CkBAIC0xNDQsMTIgKzE0
NCwxMiBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz46OmRl
Y29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsCiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpEUk9QX1NIQURPVzogewogICAgICAgICAgICAgSW50UG9pbnQgbG9jYXRpb247CiAgICAg
ICAgICAgICBpbnQzMl90IHN0ZERldmlhdGlvbjsKLSAgICAgICAgICAgIENvbG9yIGNvbG9yOwor
ICAgICAgICAgICAgT3B0aW9uYWxSR0JBIGNvbG9yOwogICAgICAgICAgICAgaWYgKCFBcmd1bWVu
dENvZGVyPEludFBvaW50Pjo6ZGVjb2RlKGRlY29kZXIsIGxvY2F0aW9uKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0ZERl
dmlhdGlvbikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYg
KCFBcmd1bWVudENvZGVyPENvbG9yPjo6ZGVjb2RlKGRlY29kZXIsIGNvbG9yKSkKKyAgICAgICAg
ICAgIGlmICghQXJndW1lbnRDb2RlcjxPcHRpb25hbFJHQkE+OjpkZWNvZGUoZGVjb2RlciwgY29s
b3IpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGZpbHRlciA9
IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShsb2NhdGlvbiwgc3RkRGV2aWF0aW9u
LCBjb2xvcik7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzU2NlbmUuY3BwCmluZGV4IDNiM2ZjNzdlNDk4ZDM2NjM3N2ZiNzM2ZDZiNzgwZTE4NjNl
YzFlMGMuLjNlM2FjMTY2M2VlZGY3ODFiMTk3YmE0ZTA5NmJlYzUwYWZmYjM3ODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtNjAsNyArNjAsNyBAQCBD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZShDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmVDbGllbgogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9p
c0FjdGl2ZShmYWxzZSkKICAgICAsIG1fcm9vdExheWVySUQoSW52YWxpZENvb3JkaW5hdGVkTGF5
ZXJJRCkKLSAgICAsIG1fdmlld0JhY2tncm91bmRDb2xvcihDb2xvcjo6d2hpdGUpCisgICAgLCBt
X3ZpZXdCYWNrZ3JvdW5kQ29sb3IoT3B0aW9uYWxSR0JBOjp3aGl0ZSkKICAgICAsIG1fY2xpZW50
UnVuTG9vcChSdW5Mb29wOjpjdXJyZW50KCkpCiB7CiB9CkBAIC02OSw3ICs2OSw3IEBAIENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6fkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpCiB7CiB9CiAK
LXZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvQ3VycmVudEdMQ29udGV4dChj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBG
bG9hdFJlY3QmIGNsaXBSZWN0LCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yLCBib29sIGRy
YXdzQmFja2dyb3VuZCwgY29uc3QgRmxvYXRQb2ludCYgY29udGVudFBvc2l0aW9uLCBUZXh0dXJl
TWFwcGVyOjpQYWludEZsYWdzIFBhaW50RmxhZ3MpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRSZWN0JiBjbGlwUmVjdCwgY29uc3Qg
T3B0aW9uYWxSR0JBJiBiYWNrZ3JvdW5kQ29sb3IsIGJvb2wgZHJhd3NCYWNrZ3JvdW5kLCBjb25z
dCBGbG9hdFBvaW50JiBjb250ZW50UG9zaXRpb24sIFRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3Mg
UGFpbnRGbGFncykKIHsKICAgICBpZiAoIW1fdGV4dHVyZU1hcHBlcikgewogICAgICAgICBtX3Rl
eHR1cmVNYXBwZXIgPSBUZXh0dXJlTWFwcGVyOjpjcmVhdGUoKTsKQEAgLTkyLDcgKzkyLDcgQEAg
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cmkKICAgICAgICAgUkdCQTMyIHJnYmEgPSBtYWtlUkdCQTMy
RnJvbUZsb2F0cyhiYWNrZ3JvdW5kQ29sb3IucmVkKCksCiAgICAgICAgICAgICBiYWNrZ3JvdW5k
Q29sb3IuZ3JlZW4oKSwgYmFja2dyb3VuZENvbG9yLmJsdWUoKSwKICAgICAgICAgICAgIGJhY2tn
cm91bmRDb2xvci5hbHBoYSgpICogb3BhY2l0eSk7Ci0gICAgICAgIG1fdGV4dHVyZU1hcHBlci0+
ZHJhd1NvbGlkQ29sb3IoY2xpcFJlY3QsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIENvbG9yKHJn
YmEpKTsKKyAgICAgICAgbV90ZXh0dXJlTWFwcGVyLT5kcmF3U29saWRDb2xvcihjbGlwUmVjdCwg
VHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgT3B0aW9uYWxSR0JBKHJnYmEpKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IHN0YXRpY19jYXN0PFRleHR1
cmVNYXBwZXJHTCo+KG1fdGV4dHVyZU1hcHBlci5nZXQoKSktPmdyYXBoaWNzQ29udGV4dDNEKCk7
CiAgICAgICAgIGNvbnRleHQtPmNsZWFyQ29sb3IobV92aWV3QmFja2dyb3VuZENvbG9yLnJlZCgp
IC8gMjU1LjBmLCBtX3ZpZXdCYWNrZ3JvdW5kQ29sb3IuZ3JlZW4oKSAvIDI1NS4wZiwgbV92aWV3
QmFja2dyb3VuZENvbG9yLmJsdWUoKSAvIDI1NS4wZiwgbV92aWV3QmFja2dyb3VuZENvbG9yLmFs
cGhhKCkgLyAyNTUuMGYpOwpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjpwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpCiAgICAgfQogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0dy
YXBoaWNzQ29udGV4dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGxhdGZvcm1Db250ZXh0LCBj
b25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yLCBib29sIGRyYXdzQmFja2dyb3VuZCkKK3ZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvR3JhcGhpY3NDb250ZXh0KFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0KiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IE9wdGlvbmFsUkdCQSYgYmFj
a2dyb3VuZENvbG9yLCBib29sIGRyYXdzQmFja2dyb3VuZCkKIHsKICAgICBpZiAoIW1fdGV4dHVy
ZU1hcHBlcikKICAgICAgICAgbV90ZXh0dXJlTWFwcGVyID0gVGV4dHVyZU1hcHBlcjo6Y3JlYXRl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCmluZGV4IGY3MTcxOWNk
NDk0MWIyYjg5NWY3OTJjNzA4YzRiYzAyNjY2ODUwZmUuLjY5YTViODhiYTQ5YjRkZDExMDJhNWEy
ZDk5OTY0OWJiMzk4NGQ2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5oCkBAIC02MSw4ICs2MSw4IEBAIGNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDb29yZGluYXRlZEdyYXBoaWNzCiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZUNsaWVudCopOwogICAgIHZpcnR1YWwgfkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpOwot
ICAgIHZvaWQgcGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3QgV2ViQ29yZTo6VHJhbnNmb3Jt
YXRpb25NYXRyaXgmLCBmbG9hdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2Vi
Q29yZTo6Q29sb3ImIGJhY2tncm91bmRDb2xvciwgYm9vbCBkcmF3c0JhY2tncm91bmQsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdz
ID0gMCk7Ci0gICAgdm9pZCBwYWludFRvR3JhcGhpY3NDb250ZXh0KFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGJhY2tncm91bmRDb2xvciwgYm9vbCBkcmF3
c0JhY2tncm91bmQpOworICAgIHZvaWQgcGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3QgV2Vi
Q29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJiBiYWNrZ3JvdW5kQ29sb3IsIGJvb2wg
ZHJhd3NCYWNrZ3JvdW5kLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgV2ViQ29yZTo6VGV4
dHVyZU1hcHBlcjo6UGFpbnRGbGFncyA9IDApOworICAgIHZvaWQgcGFpbnRUb0dyYXBoaWNzQ29u
dGV4dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdC
QSYgYmFja2dyb3VuZENvbG9yLCBib29sIGRyYXdzQmFja2dyb3VuZCk7CiAgICAgdm9pZCBkZXRh
Y2goKTsKICAgICB2b2lkIGFwcGVuZFVwZGF0ZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOwogCkBA
IC03OSw4ICs3OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29tbWl0U2NlbmVTdGF0ZShjb25z
dCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmKTsKIAotICAgIHZvaWQgc2V0Vmll
d0JhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpIHsgbV92aWV3QmFj
a2dyb3VuZENvbG9yID0gY29sb3I7IH0KLSAgICBXZWJDb3JlOjpDb2xvciB2aWV3QmFja2dyb3Vu
ZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV92aWV3QmFja2dyb3VuZENvbG9yOyB9CisgICAgdm9p
ZCBzZXRWaWV3QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYgY29s
b3IpIHsgbV92aWV3QmFja2dyb3VuZENvbG9yID0gY29sb3I7IH0KKyAgICBXZWJDb3JlOjpPcHRp
b25hbFJHQkEgdmlld0JhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlld0JhY2tn
cm91bmRDb2xvcjsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgc2V0Um9vdExheWVySUQoV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRMYXllcklEKTsKQEAgLTE3OSw3ICsxNzksNyBAQCBwcml2YXRlOgogICAg
IFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRCBtX3Jvb3RMYXllcklEOwogICAgIFdlYkNvcmU6
OkZsb2F0UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1f
cmVuZGVyZWRDb250ZW50c1Njcm9sbFBvc2l0aW9uOwotICAgIFdlYkNvcmU6OkNvbG9yIG1fdmll
d0JhY2tncm91bmRDb2xvcjsKKyAgICBXZWJDb3JlOjpPcHRpb25hbFJHQkEgbV92aWV3QmFja2dy
b3VuZENvbG9yOwogCiAgICAgV2ViQ29yZTo6VGV4dHVyZU1hcHBlckZQU0NvdW50ZXIgbV9mcHND
b3VudGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9U
aHJlYWRlZENvbXBvc2l0b3IuY3BwCmluZGV4IGMzYmFlNmRmNTFlMjJhYzAzNWRlZDhlNzdjNGEx
ZWY0ZWFjMWY1MWYuLmU2NDI0MTc5ZDY3ODlhNjcyYTFjZTE5NzQxMjBkYjcyNTA3YTQzMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVh
ZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENv
bXBvc2l0b3IuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6
OnJlbmRlckxheWVyVHJlZSgpCiAgICAgdmlld3BvcnRUcmFuc2Zvcm0uc2NhbGUodmlld3BvcnRD
b250cm9sbGVyKCktPnBhZ2VTY2FsZUZhY3RvcigpKTsKICAgICB2aWV3cG9ydFRyYW5zZm9ybS50
cmFuc2xhdGUoLXNjcm9sbFBvc3Rpb24ueCgpLCAtc2Nyb2xsUG9zdGlvbi55KCkpOwogCi0gICAg
bV9zY2VuZS0+cGFpbnRUb0N1cnJlbnRHTENvbnRleHQodmlld3BvcnRUcmFuc2Zvcm0sIDEsIGNs
aXBSZWN0LCBDb2xvcjo6d2hpdGUsIGZhbHNlLCBzY3JvbGxQb3N0aW9uKTsKKyAgICBtX3NjZW5l
LT5wYWludFRvQ3VycmVudEdMQ29udGV4dCh2aWV3cG9ydFRyYW5zZm9ybSwgMSwgY2xpcFJlY3Qs
IE9wdGlvbmFsUkdCQTo6d2hpdGUsIGZhbHNlLCBzY3JvbGxQb3N0aW9uKTsKIAogICAgIGdsQ29u
dGV4dCgpLT5zd2FwQnVmZmVycygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA5NjA3NzRhYTZiZjIyMmM0MmE5YTFmZmFkYTc5
ZDhlNTRlNGY2MGQ2Li40NTRhMmQ5YThkMzhjNWE0YzE1Yzc1NWZhMmM3YmIzY2M3MzAxYzllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApA
QCAtMTAwOCw3ICsxMDA4LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdpbmRvd0ZlYXR1cmVzPjo6
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2luZG93RmVhdHUKIH0KIAogCi12b2lk
IEFyZ3VtZW50Q29kZXI8Q29sb3I+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBDb2xvciYgY29sb3IpCit2b2lkIEFyZ3VtZW50Q29kZXI8T3B0aW9uYWxSR0JBPjo6ZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvcikK
IHsKICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkgewogICAgICAgICBlbmNvZGVyIDw8IGZhbHNl
OwpAQCAtMTAxOSwxNCArMTAxOSwxNCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q29sb3I+OjplbmNv
ZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDb2xvciYgY29sb3IpCiAgICAgZW5j
b2RlciA8PCBjb2xvci5yZ2IoKTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPENvbG9yPjo6ZGVj
b2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgQ29sb3ImIGNvbG9yKQorYm9vbCBBcmd1bWVu
dENvZGVyPE9wdGlvbmFsUkdCQT46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIE9w
dGlvbmFsUkdCQSYgY29sb3IpCiB7CiAgICAgYm9vbCBpc1ZhbGlkOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoaXNWYWxpZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghaXNW
YWxpZCkgewotICAgICAgICBjb2xvciA9IENvbG9yKCk7CisgICAgICAgIGNvbG9yID0gT3B0aW9u
YWxSR0JBKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTAzNCw3ICsxMDM0
LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPENvbG9yPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYg
ZGVjb2RlciwgQ29sb3ImIGNvbG9yKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmdiYSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbG9yID0gQ29sb3IocmdiYSk7CisgICAgY29s
b3IgPSBPcHRpb25hbFJHQkEocmdiYSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE3NDYs
NyArMTc0Niw3IEBAIGJvb2wgZGVjb2RlRmlsdGVyT3BlcmF0aW9uKEFyZ3VtZW50RGVjb2RlciYg
ZGVjb2RlciwgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4mIGZpCiAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246OkRST1BfU0hBRE9XOiB7CiAgICAgICAgIEludFBvaW50IGxvY2F0aW9uOwogICAgICAg
ICBpbnQgc3RkRGV2aWF0aW9uOwotICAgICAgICBDb2xvciBjb2xvcjsKKyAgICAgICAgT3B0aW9u
YWxSR0JBIGNvbG9yOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxvY2F0aW9uKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGRE
ZXZpYXRpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCmluZGV4IDhlNWMxMDRlYjc2ODIyMDgzM2E5NjM1OTIzZTUyZTA3NTk3YWUwNzIuLjVhOTQ1
OWJlYjZjNWU3N2Y4MDVlNWM2ODU1ODY2MzcwYjYzMmRkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3Mg
QWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBC
bG9iUGFydDsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKLWNsYXNzIENvbG9yOworY2xhc3MgT3B0
aW9uYWxSR0JBOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb247CiBjbGFzcyBDdXJzb3I7CkBAIC0yODQsOSArMjg0LDkgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcz4gewogICAgIHN0YXRpYyBi
b29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYpOwog
fTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDb2xvcj4gewot
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpD
b2xvciYpOwotICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3Jl
OjpDb2xvciYpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpPcHRp
b25hbFJHQkE+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29u
c3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciYsIFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYpOwogfTsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKaW5kZXggYjVhMDQxMDk2MjljZjk4MWQyNzRlYWQ5MjEzYWI5MTk1ZjI3MThhMi4u
YThiZjZmYjE2OGM5NDZmYTY3ZWViOGJhMjcyZDdkYjI3YjdlYzllYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC02OCw3ICs2
OCw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIGRyYXdz
VHJhbnNwYXJlbnRCYWNrZ3JvdW5kOwogICAgIGJvb2wgaXNFZGl0YWJsZTsKIAotICAgIFdlYkNv
cmU6OkNvbG9yIHVuZGVybGF5Q29sb3I7CisgICAgV2ViQ29yZTo6T3B0aW9uYWxSR0JBIHVuZGVy
bGF5Q29sb3I7CiAKICAgICBib29sIHVzZUZpeGVkTGF5b3V0OwogICAgIFdlYkNvcmU6OkludFNp
emUgZml4ZWRMYXlvdXRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9Bcmd1bWVudENvZGVyc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1l
bnRDb2RlcnNNYWMubW0KaW5kZXggNjQwZTdlZGQzNDQxMzlkYjIxOWFkMWMzMTA3MzBjZmEzM2Zl
OTllMS4uYWZlNTg3MDEwMDVjYzA4N2UyYmU0ZjhmYWVjZWQ4MjAxYjRiMTc1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFjLm1tCkBAIC0zMjgsNyAr
MzI4LDcgQEAgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBOU0NvbG9yICpj
b2xvcikKIAogYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8
TlNDb2xvcj4mIHJlc3VsdCkKIHsKLSAgICBDb2xvciBjb2xvcjsKKyAgICBPcHRpb25hbFJHQkEg
Y29sb3I7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb2xvcikpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXll
ckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUubW0KaW5kZXggMmNjYmFjN2ZjN2YyNzA5YzBmYWMyZTIwZWVjOTlmNDBjYmFm
OWZjNS4uZjVkNDI3MDYyMTBlMTBjZTAzNDI2ZDk3NzJkMDExNTYyMTBkM2M3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1t
CkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0lu
Q29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENHSW1hZ2VSZWYKIAogI2lmbmRlZiBO
REVCVUcKICAgICBpZiAobV9pc09wYXF1ZSkKLSAgICAgICAgY29udGV4dC5maWxsUmVjdChzY2Fs
ZWRMYXllckJvdW5kcywgQ29sb3IoMjU1LCAwLCAwKSwgQ29sb3JTcGFjZURldmljZVJHQik7Cisg
ICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc2NhbGVkTGF5ZXJCb3VuZHMsIE9wdGlvbmFsUkdCQSgy
NTUsIDAsIDApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICNlbmRpZgogCiAgICAgQ0dDb250ZXh0
UmVmIGNnQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5t
bSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBs
aWVyLm1tCmluZGV4IDJkZWY1ZWE4MTA5NjgxZjZjZDU3ZjBjMDJiNzgyZjZkYzVkZTg2MGIuLmE1
MGVjZTdkOTU2ZjQ5NzQzZmQxNmQ2ZmU3MjYyMzlhMDg1NjAyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBs
aWVyLm1tCkBAIC04MSw3ICs4MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjZ0NvbG9yRnJv
bUNvbG9yKENvbG9yIGNvbG9yKQorc3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjZ0NvbG9y
RnJvbUNvbG9yKE9wdGlvbmFsUkdCQSBjb2xvcikKIHsKICAgICBpZiAoIWNvbG9yLmlzVmFsaWQo
KSkKICAgICAgICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAppbmRleCBlZGI0ZDg3N2ExMjk4Mzk5
ODUxOTBmMzMyNzk4MzEzNWM4MWMyNmIwLi4wYjlkYzYxNjc1ZWE0MjVhZWRiZjc4YmEyYjAwNDUz
ZDNhMzEzMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCkBAIC0xNDgsOCArMTQ4LDggQEAgcHVibGljOgogICAg
ICAgICBmbG9hdCBjb3JuZXJSYWRpdXM7CiAgICAgICAgIGZsb2F0IGJvcmRlcldpZHRoOwogICAg
ICAgICBmbG9hdCBvcGFjaXR5OwotICAgICAgICBXZWJDb3JlOjpDb2xvciBiYWNrZ3JvdW5kQ29s
b3I7Ci0gICAgICAgIFdlYkNvcmU6OkNvbG9yIGJvcmRlckNvbG9yOworICAgICAgICBXZWJDb3Jl
OjpPcHRpb25hbFJHQkEgYmFja2dyb3VuZENvbG9yOworICAgICAgICBXZWJDb3JlOjpPcHRpb25h
bFJHQkEgYm9yZGVyQ29sb3I7CiAgICAgICAgIHVuc2lnbmVkIGVkZ2VBbnRpYWxpYXNpbmdNYXNr
OwogICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlIGN1c3Rv
bUFwcGVhcmFuY2U7CiAgICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlw
ZSBtaW5pZmljYXRpb25GaWx0ZXI7CkBAIC0xOTksOCArMTk5LDggQEAgcHVibGljOgogICAgIFdl
YkNvcmU6OkludFBvaW50IHNjcm9sbE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsT3Jp
Z2luOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxPcmlnaW4oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IG9yaWdpbikgeyBtX3Njcm9sbE9yaWdpbiA9IG9yaWdpbjsgfTsKICAgICAKLSAgICBXZWJDb3Jl
OjpDb2xvciBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcjsgfQotICAgIHZvaWQgc2V0UGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yKFdlYkNvcmU6OkNvbG9yIGNvbG9yKSB7IG1fcGFnZUV4dGVuZGVkQmFja2dy
b3VuZENvbG9yID0gY29sb3I7IH0KKyAgICBXZWJDb3JlOjpPcHRpb25hbFJHQkEgcGFnZUV4dGVu
ZGVkQmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlRXh0ZW5kZWRCYWNrZ3Jv
dW5kQ29sb3I7IH0KKyAgICB2b2lkIHNldFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcihXZWJD
b3JlOjpPcHRpb25hbFJHQkEgY29sb3IpIHsgbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3Ig
PSBjb2xvcjsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFdlYkNvcmU6OkludFBvaW50IHNj
cm9sbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxQb3NpdGlvbjsgfQpAQCAtMjQ5
LDcgKzI0OSw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFdlYkNvcmU6Oklu
dFBvaW50IG1fc2Nyb2xsUG9zaXRpb247CiAjZW5kaWYKLSAgICBXZWJDb3JlOjpDb2xvciBtX3Bh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcjsKKyAgICBXZWJDb3JlOjpPcHRpb25hbFJHQkEgbV9w
YWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CiAgICAgZG91YmxlIG1fcGFnZVNjYWxlRmFjdG9y
OwogICAgIGRvdWJsZSBtX21pbmltdW1TY2FsZUZhY3RvcjsKICAgICBkb3VibGUgbV9tYXhpbXVt
U2NhbGVGYWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQppbmRleCBmNjhhY2ExZDhmYTIzMDMzMTRmMjM4MzQ3
NDg2MWJlZmU2OWNhYzZmLi4wNDcwY2RiMzYxMjIwODhiZDk1MTEyNmE3YThkOGFkZGFmZTQzNjI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24ubW0KQEAgLTg5LDggKzg5LDggQEAgUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb246OkxheWVyUHJvcGVydGllczo6TGF5ZXJQcm9wZXJ0aWVzKCkKICAgICAsIGNvcm5lclJh
ZGl1cygwKQogICAgICwgYm9yZGVyV2lkdGgoMCkKICAgICAsIG9wYWNpdHkoMSkKLSAgICAsIGJh
Y2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpCi0gICAgLCBib3JkZXJDb2xvcihDb2xv
cjo6YmxhY2spCisgICAgLCBiYWNrZ3JvdW5kQ29sb3IoT3B0aW9uYWxSR0JBOjp0cmFuc3BhcmVu
dCkKKyAgICAsIGJvcmRlckNvbG9yKE9wdGlvbmFsUkdCQTo6YmxhY2spCiAgICAgLCBlZGdlQW50
aWFsaWFzaW5nTWFzayhrQ0FMYXllckxlZnRFZGdlIHwga0NBTGF5ZXJSaWdodEVkZ2UgfCBrQ0FM
YXllckJvdHRvbUVkZ2UgfCBrQ0FMYXllclRvcEVkZ2UpCiAgICAgLCBjdXN0b21BcHBlYXJhbmNl
KEdyYXBoaWNzTGF5ZXI6Ok5vQ3VzdG9tQXBwZWFyYW5jZSkKICAgICAsIG1pbmlmaWNhdGlvbkZp
bHRlcihQbGF0Zm9ybUNBTGF5ZXI6OkZpbHRlclR5cGU6OkxpbmVhcikKQEAgLTY2Myw3ICs2NjMs
NyBAQCBwdWJsaWM6CiAgICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChQ
bGF0Zm9ybUNBTGF5ZXI6OkZpbHRlclR5cGUpOwogICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYpOwogICAgIFJlbW90ZUxheWVy
VHJlZVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoRmxvYXRQb2ludDNEKTsKLSAgICBSZW1vdGVMYXll
clRyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KENvbG9yKTsKKyAgICBSZW1vdGVMYXllclRyZWVU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KE9wdGlvbmFsUkdCQSk7CiAgICAgUmVtb3RlTGF5ZXJUcmVl
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChGbG9hdFJlY3QpOwogICAgIFJlbW90ZUxheWVyVHJlZVRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6
OlBsYXRmb3JtTGF5ZXJJRD4mKTsKICAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYpOwpAQCAtMTA1NCw3ICsxMDU0LDcgQEAgUmVt
b3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6b3BlcmF0
b3I8PChGbG9hdFBvaW50M0QgcG8KICAgICByZXR1cm4gdHM7CiB9CiAKLVJlbW90ZUxheWVyVHJl
ZVRleHRTdHJlYW0mIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW06Om9wZXJhdG9yPDwoQ29sb3Ig
Y29sb3IpCitSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBSZW1vdGVMYXllclRyZWVUZXh0U3Ry
ZWFtOjpvcGVyYXRvcjw8KE9wdGlvbmFsUkdCQSBjb2xvcikKIHsKICAgICBSZW1vdGVMYXllclRy
ZWVUZXh0U3RyZWFtJiB0cyA9ICp0aGlzOwogICAgIHRzIDw8IGNvbG9yLnNlcmlhbGl6ZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3RWZsLmNwcApp
bmRleCAxMDA4N2YxOGQ4MTQ0NjZjMzQ5MjVhNDkxNDdiNWRhMWJjOGFiZDIxLi4wNjViZGQxYWI3
NDNhMDYwNzZiMzhlYzFlODA1YzE4NTE4ODc5ODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlld0VmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXdFZmwuY3BwCkBAIC04NywxMiArODcsMTIgQEAgdm9p
ZCBXS1ZpZXdTZW5kTW91c2VNb3ZlRXZlbnQoV0tWaWV3UmVmIHZpZXdSZWYsIEV2YXNfRXZlbnRf
TW91c2VfTW92ZSogZXZlbnQpCiAKIHZvaWQgV0tWaWV3U2V0QmFja2dyb3VuZENvbG9yKFdLVmll
d1JlZiB2aWV3UmVmLCBpbnQgcmVkLCBpbnQgZ3JlZW4sIGludCBibHVlLCBpbnQgYWxwaGEpCiB7
Ci0gICAgc3RhdGljX2Nhc3Q8V2ViVmlld0VmbCo+KHRvSW1wbCh2aWV3UmVmKSktPnNldFZpZXdC
YWNrZ3JvdW5kQ29sb3IoV2ViQ29yZTo6Q29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpKTsK
KyAgICBzdGF0aWNfY2FzdDxXZWJWaWV3RWZsKj4odG9JbXBsKHZpZXdSZWYpKS0+c2V0Vmlld0Jh
Y2tncm91bmRDb2xvcihXZWJDb3JlOjpPcHRpb25hbFJHQkEocmVkLCBncmVlbiwgYmx1ZSwgYWxw
aGEpKTsKIH0KIAogdm9pZCBXS1ZpZXdHZXRCYWNrZ3JvdW5kQ29sb3IoV0tWaWV3UmVmIHZpZXdS
ZWYsIGludCogcmVkLCBpbnQqIGdyZWVuLCBpbnQqIGJsdWUsIGludCogYWxwaGEpCiB7Ci0gICAg
V2ViQ29yZTo6Q29sb3IgYmFja2dyb3VuZENvbG9yID0gc3RhdGljX2Nhc3Q8V2ViVmlld0VmbCo+
KHRvSW1wbCh2aWV3UmVmKSktPnZpZXdCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICBXZWJDb3JlOjpP
cHRpb25hbFJHQkEgYmFja2dyb3VuZENvbG9yID0gc3RhdGljX2Nhc3Q8V2ViVmlld0VmbCo+KHRv
SW1wbCh2aWV3UmVmKSktPnZpZXdCYWNrZ3JvdW5kQ29sb3IoKTsKIAogICAgIGlmIChyZWQpCiAg
ICAgICAgICpyZWQgPSBiYWNrZ3JvdW5kQ29sb3IucmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGNlYThlOGExYjNmNzZhZGM5
NDM3OTc5ZDIzZWQ4MWEwYjFjYTYwMGEuLmI4Njk0OTRjNDNjYzE1OTc4MDVlMzZjNjY3ZGIwY2Jh
YmE0MWU4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCkBAIC0yMDQsNyArMjA0LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyB7
CiAgICAgUmV0YWluUHRyPFVJVmlldyA8V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyPj4gX2N1c3Rv
bUNvbnRlbnRWaWV3OwogICAgIFJldGFpblB0cjxVSVZpZXc+IF9jdXN0b21Db250ZW50Rml4ZWRP
dmVybGF5VmlldzsKIAotICAgIFdlYkNvcmU6OkNvbG9yIF9zY3JvbGxWaWV3QmFja2dyb3VuZENv
bG9yOworICAgIFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSBfc2Nyb2xsVmlld0JhY2tncm91bmRDb2xv
cjsKIAogICAgIEJPT0wgX2RlbGF5VXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0czsKICAgICBCT09M
IF9oYWREZWxheWVkVXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0czsKQEAgLTgxNywxMyArODE3LDEz
IEBAIHN0YXRpYyBDR0Zsb2F0IGNvbnRlbnRab29tU2NhbGUoV0tXZWJWaWV3ICp3ZWJWaWV3KQog
ICAgIHJldHVybiBzY2FsZTsKIH0KIAotc3RhdGljIFdlYkNvcmU6OkNvbG9yIGJhc2VTY3JvbGxW
aWV3QmFja2dyb3VuZENvbG9yKFdLV2ViVmlldyAqd2ViVmlldykKK3N0YXRpYyBXZWJDb3JlOjpP
cHRpb25hbFJHQkEgYmFzZVNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3IoV0tXZWJWaWV3ICp3ZWJW
aWV3KQogewogICAgIGlmICh3ZWJWaWV3LT5fY3VzdG9tQ29udGVudFZpZXcpCiAgICAgICAgIHJl
dHVybiBbd2ViVmlldy0+X2N1c3RvbUNvbnRlbnRWaWV3IGJhY2tncm91bmRDb2xvcl0uQ0dDb2xv
cjsKIAogICAgIGlmICh3ZWJWaWV3LT5fZ2VzdHVyZUNvbnRyb2xsZXIpIHsKLSAgICAgICAgV2Vi
Q29yZTo6Q29sb3IgY29sb3IgPSB3ZWJWaWV3LT5fZ2VzdHVyZUNvbnRyb2xsZXItPmJhY2tncm91
bmRDb2xvckZvckN1cnJlbnRTbmFwc2hvdCgpOworICAgICAgICBXZWJDb3JlOjpPcHRpb25hbFJH
QkEgY29sb3IgPSB3ZWJWaWV3LT5fZ2VzdHVyZUNvbnRyb2xsZXItPmJhY2tncm91bmRDb2xvckZv
ckN1cnJlbnRTbmFwc2hvdCgpOwogICAgICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKQogICAgICAg
ICAgICAgcmV0dXJuIGNvbG9yOwogICAgIH0KQEAgLTgzMSwxNSArODMxLDE1IEBAIHN0YXRpYyBX
ZWJDb3JlOjpDb2xvciBiYXNlU2Nyb2xsVmlld0JhY2tncm91bmRDb2xvcihXS1dlYlZpZXcgKndl
YlZpZXcpCiAgICAgcmV0dXJuIHdlYlZpZXctPl9wYWdlLT5wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5k
Q29sb3IoKTsKIH0KIAotc3RhdGljIFdlYkNvcmU6OkNvbG9yIHNjcm9sbFZpZXdCYWNrZ3JvdW5k
Q29sb3IoV0tXZWJWaWV3ICp3ZWJWaWV3KQorc3RhdGljIFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSBz
Y3JvbGxWaWV3QmFja2dyb3VuZENvbG9yKFdLV2ViVmlldyAqd2ViVmlldykKIHsKICAgICBpZiAo
IXdlYlZpZXcub3BhcXVlKQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29sb3I6OnRyYW5zcGFy
ZW50OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6T3B0aW9uYWxSR0JBOjp0cmFuc3BhcmVudDsK
IAotICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yID0gYmFzZVNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29s
b3Iod2ViVmlldyk7CisgICAgV2ViQ29yZTo6T3B0aW9uYWxSR0JBIGNvbG9yID0gYmFzZVNjcm9s
bFZpZXdCYWNrZ3JvdW5kQ29sb3Iod2ViVmlldyk7CiAKICAgICBpZiAoIWNvbG9yLmlzVmFsaWQo
KSkKLSAgICAgICAgY29sb3IgPSBXZWJDb3JlOjpDb2xvcjo6d2hpdGU7CisgICAgICAgIGNvbG9y
ID0gV2ViQ29yZTo6T3B0aW9uYWxSR0JBOjp3aGl0ZTsKIAogICAgIENHRmxvYXQgem9vbVNjYWxl
ID0gY29udGVudFpvb21TY2FsZSh3ZWJWaWV3KTsKICAgICBDR0Zsb2F0IG1pbmltdW1ab29tU2Nh
bGUgPSBbd2ViVmlldy0+X3Njcm9sbFZpZXcgbWluaW11bVpvb21TY2FsZV07CkBAIC04NTQsNyAr
ODU0LDcgQEAgc3RhdGljIFdlYkNvcmU6OkNvbG9yIHNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3Io
V0tXZWJWaWV3ICp3ZWJWaWV3KQogCiAtICh2b2lkKV91cGRhdGVTY3JvbGxWaWV3QmFja2dyb3Vu
ZAogewotICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yID0gc2Nyb2xsVmlld0JhY2tncm91bmRDb2xv
cihzZWxmKTsKKyAgICBXZWJDb3JlOjpPcHRpb25hbFJHQkEgY29sb3IgPSBzY3JvbGxWaWV3QmFj
a2dyb3VuZENvbG9yKHNlbGYpOwogCiAgICAgaWYgKF9zY3JvbGxWaWV3QmFja2dyb3VuZENvbG9y
ID09IGNvbG9yKQogICAgICAgICByZXR1cm47CkBAIC05MTUsNyArOTE1LDcgQEAgLSAodm9pZClf
cHJvY2Vzc0RpZEV4aXQKICAgICBbX2NvbnRlbnRWaWV3IHNldEhpZGRlbjpOT107CiAgICAgX25l
ZWRzVG9SZXN0b3JlRXhwb3NlZFJlY3QgPSBOTzsKICAgICBfbmVlZHNUb1Jlc3RvcmVVbm9ic2N1
cmVkQ2VudGVyID0gTk87Ci0gICAgX3Njcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3IgPSBXZWJDb3Jl
OjpDb2xvcigpOworICAgIF9zY3JvbGxWaWV3QmFja2dyb3VuZENvbG9yID0gV2ViQ29yZTo6T3B0
aW9uYWxSR0JBKCk7CiAgICAgX2RlbGF5VXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyA9IE5POwog
ICAgIF9oYWREZWxheWVkVXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyA9IE5POwogfQpAQCAtMzA2
OCw3ICszMDY4LDcgQEAgLSAoX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyICopX3dlYlZpZXdQcmlu
dEZvcm1hdHRlcgogCiAtIChOU0NvbG9yICopX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcgog
ewotICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yID0gX3BhZ2UtPnBhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvcigpOworICAgIFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSBjb2xvciA9IF9wYWdlLT5wYWdl
RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKTsKICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKICAg
ICAgICAgcmV0dXJuIG5pbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRXdrVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3LmNwcAppbmRleCA0NTg4NDY0NTc4NzM3NDczN2Q4M2JiYzQwNWVlOGM3YmZlNzQ1ZmM5
Li5iM2FlYzRmMDY0ODk1ODZhZWI1ZGYxYjViMThiNWVlNjYzNDU3OTA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcApAQCAtODYzLDcgKzg2Myw3IEBA
IGJvb2wgRXdrVmlldzo6Y3JlYXRlR0xTdXJmYWNlKCkKICAqIEBpbnRlcm5hbAogICogUmVxdWVz
dHMgdG8gc2hvdyBleHRlcm5hbCBjb2xvciBwaWNrZXIuCiAgKi8KLXZvaWQgRXdrVmlldzo6cmVx
dWVzdENvbG9yUGlja2VyKFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwg
Y29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQordm9pZCBFd2tWaWV3OjpyZXF1ZXN0Q29sb3JQ
aWNrZXIoV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCBXZWJD
b3JlOjpPcHRpb25hbFJHQkEmIGNvbG9yKQogewogICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNk
ID0gc21hcnREYXRhKCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+
aW5wdXRfcGlja2VyX2NvbG9yX3JlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlldy5oCmluZGV4IGVkZmIwODFjODRmOGZiMjYyZWQ1YzFlMmZiN2NmMmFhMThk
MDI2NmQuLjk2MDg0NjYyZjQzNmU3NTUyM2QyZTAwNzcwMTI4ODQzZTkxYWE4MTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKQEAgLTY4LDcgKzY4LDcgQEAg
Y2xhc3MgV2ViQWNjZXNzaWJpbGl0eTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQWZm
aW5lVHJhbnNmb3JtOwotY2xhc3MgQ29sb3I7CitjbGFzcyBPcHRpb25hbFJHQkE7CiBjbGFzcyBD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU7CiBjbGFzcyBDdXJzb3I7CiBjbGFzcyBGbG9hdFBvaW50
OwpAQCAtMTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRzU3VyZmFjZVJl
c2l6ZSgpIHsgbV9wZW5kaW5nU3VyZmFjZVJlc2l6ZSA9IHRydWU7IH0KIAogI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQotICAgIHZvaWQgcmVxdWVzdENvbG9yUGlja2VyKFdLQ29sb3JQaWNr
ZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKKyAg
ICB2b2lkIHJlcXVlc3RDb2xvclBpY2tlcihXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYg
bGlzdGVuZXIsIGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYpOwogICAgIHZvaWQgZGlzbWlz
c0NvbG9yUGlja2VyKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbG9yX3BpY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyLmNwcAppbmRleCBhZWY4ZThhZTUyM2MwODFl
YjY4OWNjNjRlM2MyZWRmNDQ5YjU2YmM4Li5kMmUzY2M5YmI4YjVjNDdlYjUzYWIzZTU3ZGIzMDNm
NzVlYmRmYTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29sb3JfcGlja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29sb3JfcGlja2VyLmNwcApAQCAtMzAsMTkgKzMwLDE5IEBACiAjaWYgRU5BQkxFKElO
UFVUX1RZUEVfQ09MT1IpCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotRXdrQ29sb3JQaWNr
ZXI6OkV3a0NvbG9yUGlja2VyKFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBjb2xvclBp
Y2tlckxpc3RlbmVyLCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9yKQorRXdrQ29sb3JQaWNrZXI6
OkV3a0NvbG9yUGlja2VyKFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBjb2xvclBpY2tl
ckxpc3RlbmVyLCBjb25zdCBPcHRpb25hbFJHQkEmIGluaXRpYWxDb2xvcikKICAgICA6IG1fY29s
b3JQaWNrZXJMaXN0ZW5lcihjb2xvclBpY2tlckxpc3RlbmVyKQogICAgICwgbV9jb2xvcihpbml0
aWFsQ29sb3IpCiB7CiB9CiAKLXZvaWQgRXdrQ29sb3JQaWNrZXI6OnNldENvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKK3ZvaWQgRXdrQ29sb3JQaWNrZXI6OnNldENvbG9yKGNvbnN0IE9wdGlvbmFs
UkdCQSYgY29sb3IpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGNvbG9yU3RyaW5n
KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbG9yLnNlcmlhbGl6ZWQo
KS51dGY4KCkuZGF0YSgpKSk7CiAgICAgV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyU2V0Q29s
b3IobV9jb2xvclBpY2tlckxpc3RlbmVyLmdldCgpLCBjb2xvclN0cmluZy5nZXQoKSk7CiB9CiAK
LWNvbnN0IENvbG9yJiBFd2tDb2xvclBpY2tlcjo6Y29sb3IoKSBjb25zdAorY29uc3QgT3B0aW9u
YWxSR0JBJiBFd2tDb2xvclBpY2tlcjo6Y29sb3IoKSBjb25zdAogewogICAgIHJldHVybiBtX2Nv
bG9yOwogfQpAQCAtNTMsNyArNTMsNyBAQCBFaW5hX0Jvb2wgZXdrX2NvbG9yX3BpY2tlcl9jb2xv
cl9zZXQoRXdrX0NvbG9yX1BpY2tlciogY29sb3JQaWNrZXIsIGludCByLCBpbnQgZwogI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChjb2xvclBpY2tlciwgZmFsc2UpOwogCi0gICAgY29sb3JQaWNrZXItPnNldENvbG9yKENvbG9y
KHIsIGcsIGIsIGEpKTsKKyAgICBjb2xvclBpY2tlci0+c2V0Q29sb3IoT3B0aW9uYWxSR0JBKHIs
IGcsIGIsIGEpKTsKIAogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKQEAgLTc1LDcgKzc1LDcgQEAg
RWluYV9Cb29sIGV3a19jb2xvcl9waWNrZXJfY29sb3JfZ2V0KGNvbnN0IEV3a19Db2xvcl9QaWNr
ZXIqIGNvbG9yUGlja2VyLCBpbnQqIHIKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoYiwgZmFsc2UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChhLCBmYWxz
ZSk7CiAKLSAgICBjb25zdCBDb2xvciYgY29sb3IgPSBjb2xvclBpY2tlci0+Y29sb3IoKTsKKyAg
ICBjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yID0gY29sb3JQaWNrZXItPmNvbG9yKCk7CiAgICAg
KnIgPSBjb2xvci5yZWQoKTsKICAgICAqZyA9IGNvbG9yLmdyZWVuKCk7CiAgICAgKmIgPSBjb2xv
ci5ibHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29sb3JfcGlja2VyX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb2xvcl9waWNrZXJfcHJpdmF0ZS5oCmluZGV4IGM3MjMxYTUyYjk2Y2JkYTcxYTQ1
NzAzZTA0NmU4NjZmNWJhYzI5MTcuLmY5NjczNGMwODFkNTUyYjdkNzBmNTY0Mzc5N2QyZTBjMzk1
ODAwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b2xvcl9waWNrZXJfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb2xvcl9waWNrZXJfcHJpdmF0ZS5oCkBAIC0yOCwxNCArMjgsMTQgQEAKIAogY2xh
c3MgRXdrQ29sb3JQaWNrZXIgewogcHVibGljOgotICAgIEV3a0NvbG9yUGlja2VyKFdLQ29sb3JQ
aWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBjb2xvclBpY2tlckxpc3RlbmVyLCBjb25zdCBXZWJDb3Jl
OjpDb2xvciYgaW5pdGlhbENvbG9yKTsKKyAgICBFd2tDb2xvclBpY2tlcihXS0NvbG9yUGlja2Vy
UmVzdWx0TGlzdGVuZXJSZWYgY29sb3JQaWNrZXJMaXN0ZW5lciwgY29uc3QgV2ViQ29yZTo6T3B0
aW9uYWxSR0JBJiBpbml0aWFsQ29sb3IpOwogCi0gICAgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNv
bG9yKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwor
ICAgIGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYgY29sb3IoKSBjb25zdDsKKyAgICB2b2lk
IHNldENvbG9yKGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYpOwogCiBwcml2YXRlOgogICAg
IFdLUmV0YWluUHRyPFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZj4gbV9jb2xvclBpY2tl
ckxpc3RlbmVyOwotICAgIFdlYkNvcmU6OkNvbG9yIG1fY29sb3I7CisgICAgV2ViQ29yZTo6T3B0
aW9uYWxSR0JBIG1fY29sb3I7CiB9OwogCiAjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5jcHAKaW5kZXggYWFmYzNlNTA2YTk5MDhmOTQ4YTAxYWQyY2MwMDExZjc4YjA5MjY2Ny4u
Y2UxMWI0YmFkMmZhNjdmOThmMzc4NjBkM2RhZDhhYWQ3MGZiNDYwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMjE2
LDcgKzIxNiw3IEBAIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqCiAgICAgcmV0dXJuIFdlYkNvbnRl
eHRNZW51UHJveHlHdGs6OmNyZWF0ZShtX3ZpZXdXaWRnZXQsIHBhZ2UpOwogfQogCi1SZWZQdHI8
V2ViQ29sb3JQaWNrZXI+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdl
UHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvciwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgcmVjdCkKK1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gUGFnZUNsaWVudEltcGw6OmNy
ZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgV2ViQ29yZTo6T3B0aW9u
YWxSR0JBJiBjb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAo
V0VCS0lUX0lTX1dFQl9WSUVXKG1fdmlld1dpZGdldCkpCiAgICAgICAgIHJldHVybiBXZWJLaXRD
b2xvckNob29zZXI6OmNyZWF0ZSgqcGFnZSwgY29sb3IsIHJlY3QpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggY2U1ODc1OTNl
MWE5ODliODczNDRjMzE4ZTBjNGNhZmM3YTM4NDJhZi4uMTI3ZmQxMjMxOGM4ZjMwMWU0ZTJhZTVl
NDdkMDkxM2UxYTUwNDUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5oCkBAIC04NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBh
Z2VQcm94eSopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvbnRleHRNZW51UHJv
eHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CiAjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29sb3JQaWNr
ZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9y
JiBpbnRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJv
eHkqLCBjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmIGludGlhbENvbG9yLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4
dEluZGljYXRvcihSZWY8V2ViQ29yZTo6VGV4dEluZGljYXRvcj4sIFdlYkNvcmU6OlRleHRJbmRp
Y2F0b3JMaWZldGltZSA9IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGltZTo6UGVybWFuZW50
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJUZXh0SW5kaWNhdG9yKFdlYkNvcmU6
OlRleHRJbmRpY2F0b3JEaXNtaXNzYWxBbmltYXRpb24gPSBXZWJDb3JlOjpUZXh0SW5kaWNhdG9y
RGlzbWlzc2FsQW5pbWF0aW9uOjpGYWRlT3V0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3Nlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXIuY3BwCmluZGV4
IDcxOTE5ZDhmNmY0OWE0M2MxNDJiNjliYjU2N2YxNTcwYWYyODM1YzMuLjNkYzIwMTdhNzEwMjZk
M2NhNDE2YWI4YzllMDY1MTc1MzAyYWFjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3Nlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyLmNwcApAQCAtMjksMTIgKzI5
LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
UmVmPFdlYktpdENvbG9yQ2hvb3Nlcj4gV2ViS2l0Q29sb3JDaG9vc2VyOjpjcmVhdGUoV2ViUGFn
ZVByb3h5JiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiByZWN0KQorUmVmPFdlYktpdENvbG9yQ2hvb3Nlcj4gV2ViS2l0Q29s
b3JDaG9vc2VyOjpjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXZWJDb3JlOjpPcHRp
b25hbFJHQkEmIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJLaXRDb2xvckNob29zZXIocGFnZSwgaW5pdGlh
bENvbG9yLCByZWN0KSk7CiB9CiAKLVdlYktpdENvbG9yQ2hvb3Nlcjo6V2ViS2l0Q29sb3JDaG9v
c2VyKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvciwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKK1dlYktpdENvbG9yQ2hvb3Nlcjo6V2ViS2l0Q29sb3JDaG9vc2VyKFdl
YlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgT3B0aW9uYWxSR0JBJiBpbml0aWFsQ29sb3IsIGNvbnN0
IEludFJlY3QmIHJlY3QpCiAgICAgOiBXZWJDb2xvclBpY2tlckd0ayhwYWdlLCBpbml0aWFsQ29s
b3IsIHJlY3QpCiAgICAgLCBtX2VsZW1lbnRSZWN0KHJlY3QpCiB7CkBAIC02Nyw3ICs2Nyw3IEBA
IHZvaWQgV2ViS2l0Q29sb3JDaG9vc2VyOjpjb2xvckNob29zZXJSZXF1ZXN0UkdCQUNoYW5nZWQo
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzCiAgICAgY29sb3JDaG9vc2VyLT5kaWRDaG9vc2VDb2xv
cihyZ2JhKTsKIH0KIAotdm9pZCBXZWJLaXRDb2xvckNob29zZXI6OnNob3dDb2xvclBpY2tlcihj
b25zdCBDb2xvciYgY29sb3IpCit2b2lkIFdlYktpdENvbG9yQ2hvb3Nlcjo6c2hvd0NvbG9yUGlj
a2VyKGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IpCiB7CiAgICAgbV9pbml0aWFsQ29sb3IgPSBj
b2xvcjsKICAgICBHUmVmUHRyPFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Q+IHJlcXVlc3QgPSBh
ZG9wdEdSZWYod2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdENyZWF0ZSh0aGlzKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXIu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3Nlci5o
CmluZGV4IGYyYmYzNWVkZjBiMTA2MDhhMmE0NTk4MWRkYjFlYTgxNTFiYzRkYjcuLmE1MjIzNjgx
NDkwZTY1MmZkMjMxNDMwNTcwMTZiYjExOTNiZmI4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3Nlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3Nlci5oCkBAIC0yNyw3ICsy
Nyw3IEBACiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCBXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDb2xvcjsK
K2NsYXNzIE9wdGlvbmFsUkdCQTsKIGNsYXNzIEludFJlY3Q7CiB9CiAKQEAgLTM1LDE2ICszNSwx
NiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViS2l0Q29sb3JDaG9vc2VyIGZpbmFs
IDogcHVibGljIFdlYkNvbG9yUGlja2VyR3RrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdl
YktpdENvbG9yQ2hvb3Nlcj4gY3JlYXRlKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAgIHN0YXRpYyBSZWY8V2ViS2l0Q29s
b3JDaG9vc2VyPiBjcmVhdGUoV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxS
R0JBJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZpcnR1YWwgfldlYktpdENvbG9y
Q2hvb3NlcigpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QoKSBj
b25zdCB7IHJldHVybiBtX2VsZW1lbnRSZWN0OyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViS2l0Q29s
b3JDaG9vc2VyKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpOworICAgIFdlYktpdENvbG9yQ2hvb3NlcihXZWJQYWdlUHJveHkmLCBj
b25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZW5kUGlja2VyKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHNob3dDb2xvclBpY2tlcihjb25zdCBXZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBzaG93Q29sb3JQaWNrZXIoY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJikg
b3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgdm9pZCBjb2xvckNob29zZXJSZXF1ZXN0RmluaXNoZWQo
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCosIFdlYktpdENvbG9yQ2hvb3NlciopOwogICAgIHN0
YXRpYyB2b2lkIGNvbG9yQ2hvb3NlclJlcXVlc3RSR0JBQ2hhbmdlZChXZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0KiwgR1BhcmFtU3BlYyosIFdlYktpdENvbG9yQ2hvb3NlciopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCAw
MzIyNWRhODkzMjZjYzkyNWM3OWUwNGM2MDU2YTE3MjIzNDUxNzlmLi41MmI2NThmNTY4MjA2NTMw
OGJkMDdhMTU5OWZiZTY5ODE3NTkwNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMzYxNSwxMyArMzYxNSwxMyBAQCB2
b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBjb25zdCBHZGtSR0JBKgogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9WSUVXKHdlYlZpZXcpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKHJnYmEpOwogCi0gICAgQ29s
b3IgY29sb3IoKnJnYmEpOworICAgIE9wdGlvbmFsUkdCQSBjb2xvcigqcmdiYSk7CiAgICAgV2Vi
UGFnZVByb3h5KiBwYWdlID0gZ2V0UGFnZSh3ZWJWaWV3KTsKICAgICBpZiAocGFnZS0+YmFja2dy
b3VuZENvbG9yKCkgPT0gY29sb3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIHBhZ2UtPnNldEJh
Y2tncm91bmRDb2xvcihjb2xvcik7Ci0gICAgcGFnZS0+c2V0RHJhd3NCYWNrZ3JvdW5kKGNvbG9y
ID09IENvbG9yOjp3aGl0ZSk7CisgICAgcGFnZS0+c2V0RHJhd3NCYWNrZ3JvdW5kKGNvbG9yID09
IE9wdGlvbmFsUkdCQTo6d2hpdGUpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCBkM2E3NzI2NzI4NWFmYzgzZTQ2OGE1NTRlM2E3NDcy
NjdhYmZmYTIwLi4xZDI4M2JhMGQ4ZDEyZmM1ZGQ3YjZhYTMyNDIxOTVkZGExMGE2Njc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0xNTA0LDcgKzE1
MDQsNyBAQCBzdGF0aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcg
KnN0cmluZywgVmVjdG9yPENvbXBvc2l0aW9uVW5kZQogICAgICAgICBOU0RpY3Rpb25hcnkgKmF0
dHJzID0gW3N0cmluZyBhdHRyaWJ1dGVzQXRJbmRleDppIGxvbmdlc3RFZmZlY3RpdmVSYW5nZTom
cmFuZ2UgaW5SYW5nZTpOU01ha2VSYW5nZShpLCBsZW5ndGggLSBpKV07CiAgICAgICAgIAogICAg
ICAgICBpZiAoTlNOdW1iZXIgKnN0eWxlID0gW2F0dHJzIG9iamVjdEZvcktleTpOU1VuZGVybGlu
ZVN0eWxlQXR0cmlidXRlTmFtZV0pIHsKLSAgICAgICAgICAgIENvbG9yIGNvbG9yID0gQ29sb3I6
OmJsYWNrOworICAgICAgICAgICAgT3B0aW9uYWxSR0JBIGNvbG9yID0gT3B0aW9uYWxSR0JBOjpi
bGFjazsKICAgICAgICAgICAgIGlmIChOU0NvbG9yICpjb2xvckF0dHIgPSBbYXR0cnMgb2JqZWN0
Rm9yS2V5Ok5TVW5kZXJsaW5lQ29sb3JBdHRyaWJ1dGVOYW1lXSkKICAgICAgICAgICAgICAgICBj
b2xvciA9IGNvbG9yRnJvbU5TQ29sb3IoW2NvbG9yQXR0ciBjb2xvclVzaW5nQ29sb3JTcGFjZU5h
bWU6TlNEZXZpY2VSR0JDb2xvclNwYWNlXSk7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKENv
bXBvc2l0aW9uVW5kZXJsaW5lKHJhbmdlLmxvY2F0aW9uLCBOU01heFJhbmdlKHJhbmdlKSwgY29s
b3IsIFtzdHlsZSBpbnRWYWx1ZV0gPiAxKSk7CkBAIC00MTI1LDcgKzQxMjUsNyBAQCAtICh2b2lk
KXNldFNob3VsZENsaXBUb1Zpc2libGVSZWN0OihCT09MKWNsaXBzVG9WaXNpYmxlUmVjdAogCiAt
IChOU0NvbG9yICopdW5kZXJsYXlDb2xvcgogewotICAgIENvbG9yIHdlYkNvbG9yID0gX2RhdGEt
Pl9wYWdlLT51bmRlcmxheUNvbG9yKCk7CisgICAgT3B0aW9uYWxSR0JBIHdlYkNvbG9yID0gX2Rh
dGEtPl9wYWdlLT51bmRlcmxheUNvbG9yKCk7CiAgICAgaWYgKCF3ZWJDb2xvci5pc1ZhbGlkKCkp
CiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTQ0NzQsNyArNDQ3NCw3IEBAIC0gKF9XS092ZXJs
YXlTY3JvbGxiYXJTdHlsZSlfb3ZlcmxheVNjcm9sbGJhclN0eWxlCiAKIC0gKE5TQ29sb3IgKilf
cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yCiB7Ci0gICAgV2ViQ29yZTo6Q29sb3IgY29sb3Ig
PSBfZGF0YS0+X3BhZ2UtPnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcigpOworICAgIFdlYkNv
cmU6Ok9wdGlvbmFsUkdCQSBjb2xvciA9IF9kYXRhLT5fcGFnZS0+cGFnZUV4dGVuZGVkQmFja2dy
b3VuZENvbG9yKCk7CiAgICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0
ZWJvYXJkUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCAwMjI1NDk3MTEyNDZhOWYyMTljNzliYjZjZTIw
YWRiYmQ5OTI5MzRjLi5iNGQyNTNhYjE0MmFkZjQ0MjRmNzFlNjAwMDFiNGJhNDRkNzMxM2RlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFBy
b3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3Rl
Ym9hcmRQcm94eUNvY29hLm1tCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5OjpnZXRQYXN0ZWJvYXJkVW5pcXVlTmFtZShTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAg
IHBhc3RlYm9hcmROYW1lID0gUGxhdGZvcm1QYXN0ZWJvYXJkOjp1bmlxdWVOYW1lKCk7CiB9CiAK
LXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkQ29sb3IoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQordm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OmdldFBhc3RlYm9hcmRDb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmIGNvbG9yKQogewogICAgIGNvbG9yID0gUGxhdGZvcm1Q
YXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb2xvcigpOyAgICAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAK
aW5kZXggMzc0N2ZiYmI1ZDNhZTM1ZmY2YTlmNGVkZTllNzYyYjRiMWE4ZjEzYS4uMzg3MzNhYTM4
ZTg3MGUzYmQ5NWMyY2QwODhjY2M5OTMyODM3NDJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAKQEAgLTQ0
Myw3ICs0NDMsNyBAQCBSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gV2ViVmlldzo6Y3JlYXRl
Q29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKQogfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfQ09MT1IpCi1SZWZQdHI8V2ViQ29sb3JQaWNrZXI+IFdlYlZpZXc6OmNyZWF0ZUNvbG9yUGlj
a2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpCitSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IFdlYlZpZXc6OmNyZWF0ZUNvbG9yUGlj
a2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9XZWJWaWV3LmgKaW5kZXggNDgxMTRlMGQ0OGRlOTMwNzA0ZTU3NmUzOWFmZDU4MWQ1
ZTU4MjZkMC4uMDIyNjI5ZjkxNjI2MTU3ZDE4MzZlZjQ0MmNlYzkyZDdkMjY0ODQ3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dl
YlZpZXcuaApAQCAtMTgyLDcgKzE4Miw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIFJlZlB0
cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Kikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRl
Q29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb2xvclBpY2tlcj4gY3JlYXRl
Q29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxD
b2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVm
UHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25z
dCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEluZGlj
YXRvcihSZWY8V2ViQ29yZTo6VGV4dEluZGljYXRvcj4sIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JM
aWZldGltZSA9IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGltZTo6UGVybWFuZW50KSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDY3ODUzNjA1ZjY1
YjYwZDdkNTc3Yjg0NmEzYWIxNDgwZWYyNGY2MzUuLmFkMTA4YTY2NWI2NjVlYjc4OTAxN2VhYjE0
MDdkNDhiODBiNzQ0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAt
MjIxLDcgKzIyMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb250ZXh0TWVu
dVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopID0gMDsKIAogI2lm
IEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvbG9yUGlj
a2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xv
ciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkq
LCBjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRJbmRp
Y2F0b3IoUmVmPFdlYkNvcmU6OlRleHRJbmRpY2F0b3I+LCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9y
TGlmZXRpbWUgPSBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yTGlmZXRpbWU6OlBlcm1hbmVudCkgPSAw
OwpAQCAtMjY3LDcgKzI2Nyw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICB2
aXJ0dWFsIHZvaWQgY29tbWl0UG90ZW50aWFsVGFwRmFpbGVkKCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRHZXRUYXBIaWdobGlnaHRHZW9tZXRyaWVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYgaGln
aGxpZ2h0ZWRRdWFkcywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbVJpZ2h0
UmFkaXVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJp
ZXModWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmLCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYgaGlnaGxpZ2h0ZWRRdWFkcywgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9w
UmlnaHRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzKSA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29tbWl0TGF5ZXJUcmVlKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkeW5hbWljVmlld3BvcnRVcGRhdGVDaGFuZ2Vk
VGFyZ2V0KGRvdWJsZSBuZXdTY2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgbmV3U2Ny
b2xsUG9zaXRpb24sIHVpbnQ2NF90IHRyYW5zYWN0aW9uSUQpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXIuY3BwCmluZGV4IDExMzJjMDc0NTQzMGVjNzUwMTMz
MmUwNTZkYmQ2YTVlZDlmOGY1ZDMuLjY0MTcyNjUxOTE3YmZlYzEwNzE0M2RiZjUyYzAwNmVmNDA5
OWE5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyLmNwcApA
QCAtNTMsNyArNTMsNyBAQCB2b2lkIFdlYkNvbG9yUGlja2VyOjplbmRQaWNrZXIoKQogICAgIG1f
Y2xpZW50LT5kaWRFbmRDb2xvclBpY2tlcigpOwogfQogCi12b2lkIFdlYkNvbG9yUGlja2VyOjpz
ZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3ZvaWQgV2ViQ29s
b3JQaWNrZXI6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJiBj
b2xvcikKIHsKICAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm47CkBAIC02MSw3ICs2
MSw3IEBAIHZvaWQgV2ViQ29sb3JQaWNrZXI6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29y
ZTo6Q29sb3ImIGNvbG9yKQogICAgIG1fY2xpZW50LT5kaWRDaG9vc2VDb2xvcihjb2xvcik7CiB9
CiAKLXZvaWQgV2ViQ29sb3JQaWNrZXI6OnNob3dDb2xvclBpY2tlcihjb25zdCBXZWJDb3JlOjpD
b2xvciYpCit2b2lkIFdlYkNvbG9yUGlja2VyOjpzaG93Q29sb3JQaWNrZXIoY29uc3QgV2ViQ29y
ZTo6T3B0aW9uYWxSR0JBJikKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXIu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlci5oCmluZGV4IDU0MDBk
ZGMxNDk0YmY1NTUxZWVmOGU3OTVjNTBkZjE0M2Q4YmNiZmYuLjZjOTE4NTJkY2Y1MTNiYmNkM2Zj
NzVmZjhiOGMyYmJlNWRiYTViZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb2xvclBpY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xv
clBpY2tlci5oCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDb2xvcjsKK2NsYXNzIE9wdGlvbmFsUkdCQTsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAg
dmlydHVhbCB+Q2xpZW50KCkgeyB9CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZENob29zZUNvbG9yKGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYpID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEVuZENvbG9yUGlja2VyKCkgPSAwOwogICAgIH07
CiAKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCiAg
ICAgdmlydHVhbCB2b2lkIGVuZFBpY2tlcigpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3Rl
ZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7Ci0gICAgdmlydHVhbCB2b2lkIHNob3dDb2xv
clBpY2tlcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxl
Y3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYpOworICAgIHZpcnR1YWwgdm9p
ZCBzaG93Q29sb3JQaWNrZXIoY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJik7CiAKIHByb3Rl
Y3RlZDoKICAgICBleHBsaWNpdCBXZWJDb2xvclBpY2tlcihDbGllbnQqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcAppbmRleCA4Nzg1NTk1
NDYyZmY4ZmJlOGE4YmNmM2Y2YmFhYzYwMWZmMzBiOWJjLi43NzM0NmVlZWE4MmE2ZGI1NDM1NDYw
ZDVjZGVhZGZhZjQ3ZGI0ZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRWRpdENvbW1hbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkVkaXRDb21tYW5kUHJveHkuY3BwCkBAIC03Nyw5ICs3Nyw5IEBAIFN0cmluZyBXZWJFZGl0Q29t
bWFuZFByb3h5OjpuYW1lRm9yRWRpdEFjdGlvbihFZGl0QWN0aW9uIGVkaXRBY3Rpb24pCiAgICAg
Y2FzZSBFZGl0QWN0aW9uSW5zZXJ0OgogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgY2Fz
ZSBFZGl0QWN0aW9uU2V0Q29sb3I6Ci0gICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWSgi
U2V0IENvbG9yIiwgIlNldCBDb2xvciAoVW5kbyBhY3Rpb24gbmFtZSkiLCAiVW5kbyBhY3Rpb24g
bmFtZSIpOworICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoIlNldCBDb2xvciIsICJT
ZXQgT3B0aW9uYWxSR0JBIChVbmRvIGFjdGlvbiBuYW1lKSIsICJVbmRvIGFjdGlvbiBuYW1lIik7
CiAgICAgY2FzZSBFZGl0QWN0aW9uU2V0QmFja2dyb3VuZENvbG9yOgotICAgICAgICByZXR1cm4g
V0VCX1VJX1NUUklOR19LRVkoIlNldCBCYWNrZ3JvdW5kIENvbG9yIiwgIlNldCBCYWNrZ3JvdW5k
IENvbG9yIChVbmRvIGFjdGlvbiBuYW1lKSIsICJVbmRvIGFjdGlvbiBuYW1lIik7CisgICAgICAg
IHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWSgiU2V0IEJhY2tncm91bmQgQ29sb3IiLCAiU2V0IEJh
Y2tncm91bmQgT3B0aW9uYWxSR0JBIChVbmRvIGFjdGlvbiBuYW1lKSIsICJVbmRvIGFjdGlvbiBu
YW1lIik7CiAgICAgY2FzZSBFZGl0QWN0aW9uVHVybk9mZktlcm5pbmc6CiAgICAgICAgIHJldHVy
biBXRUJfVUlfU1RSSU5HX0tFWSgiVHVybiBPZmYgS2VybmluZyIsICJUdXJuIE9mZiBLZXJuaW5n
IChVbmRvIGFjdGlvbiBuYW1lKSIsICJVbmRvIGFjdGlvbiBuYW1lIik7CiAgICAgY2FzZSBFZGl0
QWN0aW9uVGlnaHRlbktlcm5pbmc6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IDliZTE1MzYwODZmYmZlMWE3NmNlMGYyYTU1ODUzYTFkYjliMzY0YmEuLmM3
MTZmYzdjZjczNjU1MzNiMTk2ODMwZjExOTBmNGFjNTdhMjRhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zODksNyArMzg5LDcgQEAgV2ViUGFnZVBy
b3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jZXNzLCB1aW4KICAgICAsIG1faXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoVGV4dENo
ZWNrZXI6OmlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkpCiAjZW5kaWYKICNpZiBQTEFURk9S
TShHVEspCi0gICAgLCBtX2JhY2tncm91bmRDb2xvcihDb2xvcjo6d2hpdGUpCisgICAgLCBtX2Jh
Y2tncm91bmRDb2xvcihPcHRpb25hbFJHQkE6OndoaXRlKQogI2VuZGlmCiAgICAgLCBtX3NwZWxs
RG9jdW1lbnRUYWcoMCkKICAgICAsIG1faGFzU3BlbGxEb2N1bWVudFRhZyhmYWxzZSkKQEAgLTEy
NTEsNyArMTI1MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUb3BDb250ZW50SW5zZXQoZmxv
YXQgY29udGVudEluc2V0KQogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldFRvcENvbnRlbnRJbnNldChjb250ZW50SW5zZXQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpzZXRVbmRlcmxheUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3Zv
aWQgV2ViUGFnZVByb3h5OjpzZXRVbmRlcmxheUNvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgY29s
b3IpCiB7CiAgICAgaWYgKG1fdW5kZXJsYXlDb2xvciA9PSBjb2xvcikKICAgICAgICAgcmV0dXJu
OwpAQCAtMzkwOCw3ICszOTA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZUNvbnRl
bnRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9D
T0xPUikKLXZvaWQgV2ViUGFnZVByb3h5OjpzaG93Q29sb3JQaWNrZXIoY29uc3QgV2ViQ29yZTo6
Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QpCit2b2lkIFdl
YlBhZ2VQcm94eTo6c2hvd0NvbG9yUGlja2VyKGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYg
aW5pdGlhbENvbG9yLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkKIHsKICNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKQogICAgIC8vIEEgbmV3IHBvcG92ZXIgY29sb3Igd2Vs
bCBuZWVkcyB0byBiZSBjcmVhdGVkIChhbmQgdGhlIHByZXZpb3VzIG9uZSBkZXN0cm95ZWQpIGZv
cgpAQCAtMzkyMCw3ICszOTIwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNob3dDb2xvclBpY2tl
cihjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBJbnQKICAgICBtX2Nv
bG9yUGlja2VyLT5zaG93Q29sb3JQaWNrZXIoaW5pdGlhbENvbG9yKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnNldENvbG9yUGlja2VyQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9y
KQordm9pZCBXZWJQYWdlUHJveHk6OnNldENvbG9yUGlja2VyQ29sb3IoY29uc3QgV2ViQ29yZTo6
T3B0aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICBBU1NFUlQobV9jb2xvclBpY2tlcik7CiAKQEAg
LTM5MzQsNyArMzkzNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplbmRDb2xvclBpY2tlcigpCiAg
ICAgbV9jb2xvclBpY2tlci0+ZW5kUGlja2VyKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJiBjb2xvcikK
IHsKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTQzMiw3ICs1NDMy
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVBhZ2VDb3VudCh1bnNpZ25lZCBwYWdl
Q291bnQpCiAgICAgbV9wYWdlQ291bnQgPSBwYWdlQ291bnQ7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoY29uc3QgQ29sb3ImIGJh
Y2tncm91bmRDb2xvcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5k
Q29sb3JEaWRDaGFuZ2UoY29uc3QgT3B0aW9uYWxSR0JBJiBiYWNrZ3JvdW5kQ29sb3IpCiB7CiAg
ICAgbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3I7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNjNiOGE2ZDRiNmMxYzQ1
ODRjODYwMTBhZTI3ZmNmNWIyNjhlM2ZhNi4uNDlmNWVlNGIxOGEwMzY5Zjk5ZWZmNWJjMzgyNWM5
YWIxMDY3OGY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
NDAxLDEzICs0MDEsMTMgQEAgcHVibGljOgogICAgIGZsb2F0IHRvcENvbnRlbnRJbnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fdG9wQ29udGVudEluc2V0OyB9CiAgICAgdm9pZCBzZXRUb3BDb250ZW50
SW5zZXQoZmxvYXQpOwogCi0gICAgV2ViQ29yZTo6Q29sb3IgdW5kZXJsYXlDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIG1fdW5kZXJsYXlDb2xvcjsgfQotICAgIHZvaWQgc2V0VW5kZXJsYXlDb2xvcihj
b25zdCBXZWJDb3JlOjpDb2xvciYpOworICAgIFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSB1bmRlcmxh
eUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmxheUNvbG9yOyB9CisgICAgdm9pZCBzZXRV
bmRlcmxheUNvbG9yKGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYpOwogCiAgICAgLy8gQXQg
dGhpcyB0aW1lLCBtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciBjYW4gYmUgc2V0IHZpYSBw
YWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoKSB3aGljaCBpcyBhIG1lc3NhZ2UK
ICAgICAvLyBmcm9tIHRoZSBVSVByb2Nlc3MsIG9yIGJ5IGRpZENvbW1pdExheWVyVHJlZSgpLiBX
aGVuIFBMQVRGT1JNKE1BQykgYWRvcHRzIFVJIHNpZGUgY29tcG9zaXRpbmcsIHdlIHNob3VsZCBn
ZXQgcmlkIG9mCiAgICAgLy8gdGhlIG1lc3NhZ2UgZW50aXJlbHkuCi0gICAgV2ViQ29yZTo6Q29s
b3IgcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlRXh0
ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7IH0KKyAgICBXZWJDb3JlOjpPcHRpb25hbFJHQkEgcGFnZUV4
dGVuZGVkQmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlRXh0ZW5kZWRCYWNr
Z3JvdW5kQ29sb3I7IH0KIAogICAgIHZvaWQgdmlld1dpbGxTdGFydExpdmVSZXNpemUoKTsKICAg
ICB2b2lkIHZpZXdXaWxsRW5kTGl2ZVJlc2l6ZSgpOwpAQCAtNjA3LDggKzYwNyw4IEBAIHB1Ymxp
YzoKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBQbGF0Zm9ybVdpZGdldCB2aWV3V2lkZ2V0KCk7
Ci0gICAgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9Ci0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29u
c3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKSB7IG1fYmFja2dyb3VuZENvbG9yID0gY29sb3I7IH0K
KyAgICBjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmIGJhY2tncm91bmRDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29s
b3IoY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJiBjb2xvcikgeyBtX2JhY2tncm91bmRDb2xv
ciA9IGNvbG9yOyB9CiAjZW5kaWYKIAogICAgIHZvaWQgaGFuZGxlTW91c2VFdmVudChjb25zdCBO
YXRpdmVXZWJNb3VzZUV2ZW50Jik7CkBAIC05NjksNyArOTY5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgcG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUs
IEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSk7CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xP
UikKLSAgICB2b2lkIHNldENvbG9yUGlja2VyQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsK
KyAgICB2b2lkIHNldENvbG9yUGlja2VyQ29sb3IoY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JB
Jik7CiAgICAgdm9pZCBlbmRDb2xvclBpY2tlcigpOwogI2VuZGlmCiAKQEAgLTEyMTMsNyArMTIx
Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZyYW1l
KGJvb2wgaGFzSG9yaXpvbnRhbFNjcm9sbGJhciwgYm9vbCBoYXNWZXJ0aWNhbFNjcm9sbGJhcik7
CiAgICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxPZmZzZXRQaW5uaW5nRm9yTWFpbkZyYW1lKGJvb2wg
cGlubmVkVG9MZWZ0U2lkZSwgYm9vbCBwaW5uZWRUb1JpZ2h0U2lkZSwgYm9vbCBwaW5uZWRUb1Rv
cFNpZGUsIGJvb2wgcGlubmVkVG9Cb3R0b21TaWRlKTsKICAgICB2b2lkIGRpZENoYW5nZVBhZ2VD
b3VudCh1bnNpZ25lZCk7Ci0gICAgdm9pZCBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRD
aGFuZ2UoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKKyAgICB2b2lkIHBhZ2VFeHRlbmRlZEJhY2tn
cm91bmRDb2xvckRpZENoYW5nZShjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmKTsKICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICB2b2lkIGRpZEZhaWxUb0luaXRpYWxpemVQ
bHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmlu
ZywgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nKTsKICAgICB2b2lkIGRpZEJsb2NrSW5zZWN1
cmVQbHVnaW5WZXJzaW9uKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgcGx1
Z2luVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHBhZ2VVUkxTdHJpbmcsIGJvb2wgcmVwbGFjZW1lbnRPYnNjdXJlZCk7CkBAIC0xMjM5LDggKzEy
MzksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVudFNpemUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYpOwogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgdm9p
ZCBzaG93Q29sb3JQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VDb2xvcihj
b25zdCBXZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRlOworICAgIHZvaWQgc2hvd0NvbG9yUGlja2Vy
KGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIGRpZENob29zZUNvbG9yKGNvbnN0IFdlYkNv
cmU6Ok9wdGlvbmFsUkdCQSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRDb2xv
clBpY2tlcigpIG92ZXJyaWRlOwogI2VuZGlmCiAKQEAgLTE0MTEsNyArMTQxMSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCByZXN0b3JlUGFnZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYs
IGRvdWJsZSBzY2FsZSk7CiAgICAgdm9pZCByZXN0b3JlUGFnZUNlbnRlckFuZFNjYWxlKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBkb3VibGUgc2NhbGUpOwogCi0gICAgdm9pZCBkaWRHZXRU
YXBIaWdobGlnaHRHZW9tZXRyaWVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6
Q29sb3ImIGNvbG9yLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYgZ2VvbWV0cmll
cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbUxl
ZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzKTsKKyAg
ICB2b2lkIGRpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXModWludDY0X3QgcmVxdWVzdElELCBj
b25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmIGNvbG9yLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
RmxvYXRRdWFkPiYgZ2VvbWV0cmllcywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wTGVmdFJh
ZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJv
dHRvbVJpZ2h0UmFkaXVzKTsKIAogICAgIHZvaWQgc3RhcnRBc3Npc3RpbmdOb2RlKGNvbnN0IEFz
c2lzdGVkTm9kZUluZm9ybWF0aW9uJiwgYm9vbCB1c2VySXNJbnRlcmFjdGluZywgYm9vbCBibHVy
UHJldmlvdXNOb2RlLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc3RvcEFzc2lzdGluZ05v
ZGUoKTsKQEAgLTE2MTQsOCArMTYxNCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RyYXdzQmFj
a2dyb3VuZDsKICAgICBib29sIG1fZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQ7CiAKLSAgICBX
ZWJDb3JlOjpDb2xvciBtX3VuZGVybGF5Q29sb3I7Ci0gICAgV2ViQ29yZTo6Q29sb3IgbV9wYWdl
RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CisgICAgV2ViQ29yZTo6T3B0aW9uYWxSR0JBIG1fdW5k
ZXJsYXlDb2xvcjsKKyAgICBXZWJDb3JlOjpPcHRpb25hbFJHQkEgbV9wYWdlRXh0ZW5kZWRCYWNr
Z3JvdW5kQ29sb3I7CiAKICAgICBib29sIG1fdXNlRml4ZWRMYXlvdXQ7CiAgICAgV2ViQ29yZTo6
SW50U2l6ZSBtX2ZpeGVkTGF5b3V0U2l6ZTsKQEAgLTE2ODYsNyArMTY4Niw3IEBAIHByaXZhdGU6
CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgU3RyaW5nIG1fYWNjZXNzaWJpbGl0eVBsdWdJRDsK
LSAgICBXZWJDb3JlOjpDb2xvciBtX2JhY2tncm91bmRDb2xvcjsKKyAgICBXZWJDb3JlOjpPcHRp
b25hbFJHQkEgbV9iYWNrZ3JvdW5kQ29sb3I7CiAjZW5kaWYKIAogICAgIGludDY0X3QgbV9zcGVs
bERvY3VtZW50VGFnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KaW5kZXggZDVjYzIxMWQxM2IzNTk0MDk1NTBhYTU4NTljY2ExMWE1YWU2
M2E4OC4uYmRlZmZmOGI1MjQ1NTNkYzdkOGU2OThmNTQzNTliNTQyNWIyMTJiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC04
Myw3ICs4Myw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkQ2hhbmdlU2Ny
b2xsYmFyc0Zvck1haW5GcmFtZShib29sIGhhc0hvcml6b250YWxTY3JvbGxiYXIsIGJvb2wgaGFz
VmVydGljYWxTY3JvbGxiYXIpCiAgICAgRGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0UGlubmluZ0Zvck1h
aW5GcmFtZShib29sIHBpbm5lZFRvTGVmdFNpZGUsIGJvb2wgcGlubmVkVG9SaWdodFNpZGUsIGJv
b2wgcGlubmVkVG9Ub3BTaWRlLCBib29sIHBpbm5lZFRvQm90dG9tU2lkZSkKICAgICBEaWRDaGFu
Z2VQYWdlQ291bnQodW5zaWduZWQgcGFnZUNvdW50KQotICAgIFBhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvckRpZENoYW5nZShXZWJDb3JlOjpDb2xvciBiYWNrZ3JvdW5kQ29sb3IpCisgICAgUGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSBi
YWNrZ3JvdW5kQ29sb3IpCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgRGlk
RmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihTdHJpbmcgbWltZVR5cGUsIFN0cmluZyBmcmFtZVVSTFN0
cmluZywgU3RyaW5nIHBhZ2VVUkxTdHJpbmcpCiAgICAgRGlkQmxvY2tJbnNlY3VyZVBsdWdpblZl
cnNpb24oU3RyaW5nIG1pbWVUeXBlLCBTdHJpbmcgcGx1Z2luVVJMU3RyaW5nLCBTdHJpbmcgZnJh
bWVVUkxTdHJpbmcsIFN0cmluZyBwYWdlVVJMU3RyaW5nLCBib29sIHJlcGxhY2VtZW50T2JzY3Vy
ZWQpCkBAIC0xMDMsOCArMTAzLDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBE
aWRDaGFuZ2VDb250ZW50U2l6ZShXZWJDb3JlOjpJbnRTaXplIG5ld1NpemUpCiAKICNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICBTaG93Q29sb3JQaWNrZXIoV2ViQ29yZTo6Q29sb3Ig
aW5pdGlhbENvbG9yLCBXZWJDb3JlOjpJbnRSZWN0IGVsZW1lbnRSZWN0KTsKLSAgICBTZXRDb2xv
clBpY2tlckNvbG9yKFdlYkNvcmU6OkNvbG9yIGNvbG9yKTsKKyAgICBTaG93Q29sb3JQaWNrZXIo
V2ViQ29yZTo6T3B0aW9uYWxSR0JBIGluaXRpYWxDb2xvciwgV2ViQ29yZTo6SW50UmVjdCBlbGVt
ZW50UmVjdCk7CisgICAgU2V0Q29sb3JQaWNrZXJDb2xvcihXZWJDb3JlOjpPcHRpb25hbFJHQkEg
Y29sb3IpOwogICAgIEVuZENvbG9yUGlja2VyKCk7CiAjZW5kaWYKIApAQCAtMzYyLDcgKzM2Miw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgQ291bGROb3RSZXN0b3JlUGFnZVN0
YXRlKCkKICAgICBSZXN0b3JlUGFnZVN0YXRlKFdlYkNvcmU6OkZsb2F0UmVjdCBleHBvc2VkUmVj
dCwgZG91YmxlIHNjYWxlKQogICAgIFJlc3RvcmVQYWdlQ2VudGVyQW5kU2NhbGUoV2ViQ29yZTo6
RmxvYXRQb2ludCB1bm9ic2N1cmVkQ2VudGVyLCBkb3VibGUgc2NhbGUpCi0gICAgRGlkR2V0VGFw
SGlnaGxpZ2h0R2VvbWV0cmllcyh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6OkNvbG9yIGNv
bG9yLCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiBnZW9tZXRyaWVzLCBXZWJDb3JlOjpJbnRT
aXplIHRvcExlZnRSYWRpdXMsIFdlYkNvcmU6OkludFNpemUgdG9wUmlnaHRSYWRpdXMsIFdlYkNv
cmU6OkludFNpemUgYm90dG9tTGVmdFJhZGl1cywgV2ViQ29yZTo6SW50U2l6ZSBib3R0b21SaWdo
dFJhZGl1cykKKyAgICBEaWRHZXRUYXBIaWdobGlnaHRHZW9tZXRyaWVzKHVpbnQ2NF90IHJlcXVl
c3RJRCwgV2ViQ29yZTo6T3B0aW9uYWxSR0JBIGNvbG9yLCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRR
dWFkPiBnZW9tZXRyaWVzLCBXZWJDb3JlOjpJbnRTaXplIHRvcExlZnRSYWRpdXMsIFdlYkNvcmU6
OkludFNpemUgdG9wUmlnaHRSYWRpdXMsIFdlYkNvcmU6OkludFNpemUgYm90dG9tTGVmdFJhZGl1
cywgV2ViQ29yZTo6SW50U2l6ZSBib3R0b21SaWdodFJhZGl1cykKIAogICAgIFN0YXJ0QXNzaXN0
aW5nTm9kZShzdHJ1Y3QgV2ViS2l0OjpBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiBpbmZvcm1hdGlv
biwgYm9vbCB1c2VySXNJbnRlcmFjdGluZywgYm9vbCBibHVyUHJldmlvdXNOb2RlLCBXZWJLaXQ6
OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIFN0b3BBc3Npc3RpbmdOb2RlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAppbmRleCA0OTRhYWM5ZjgwOTY4
NzRjYzA1NWZiYTg0MzdkZTUyNjY3ZmEyMzBmLi4yZTkwMGFjN2FiN2RjOWMyYTk0N2IyMGQ1Mjc1
NmU5NjA2YThiNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFz
dGVib2FyZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9h
cmRQcm94eS5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDb2xvcjsKK2NsYXNzIE9wdGlvbmFsUkdCQTsKIHN0
cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CiB9CkBA
IC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXN0ZWJvYXJkQ29weShjb25zdCBT
dHJpbmcmIGZyb21QYXN0ZWJvYXJkLCBjb25zdCBTdHJpbmcmIHRvUGFzdGVib2FyZCwgdWludDY0
X3QmIG5ld0NoYW5nZUNvdW50KTsKICAgICB2b2lkIGdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCB1aW50NjRfdCYgY2hhbmdlQ291bnQpOwogICAg
IHZvaWQgZ2V0UGFzdGVib2FyZFVuaXF1ZU5hbWUoU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0g
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkQ29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
V2ViQ29yZTo6Q29sb3ImKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRDb2xvcihjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmKTsKICAgICB2b2lkIGdl
dFBhc3RlYm9hcmRVUkwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcm
KTsKICAgICB2b2lkIGFkZFBhc3RlYm9hcmRUeXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCB1aW50NjRfdCYgbmV3
Q2hhbmdlQ291bnQpOwogICAgIHZvaWQgc2V0UGFzdGVib2FyZFR5cGVzKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIHVp
bnQ2NF90JiBuZXdDaGFuZ2VDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgppbmRleCBkMGQ5ZmExMmU0NWE1
ZGNiZmQ1NjIyZTgwMzk4ZWM4NjkzYmY3NDFiLi5jZjhjZTY1NGRlMDViNGYzMDViMGNjZWI2MDM1
OGFmNDgyOTJmNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFz
dGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KQEAgLTQwLDcgKzQwLDcgQEAgbWVzc2FnZXMg
LT4gV2ViUGFzdGVib2FyZFByb3h5IHsKICAgICBQYXN0ZWJvYXJkQ29weShTdHJpbmcgZnJvbVBh
c3RlYm9hcmQsIFN0cmluZyB0b1Bhc3RlYm9hcmQpIC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkK
ICAgICBHZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAo
dWludDY0X3QgY2hhbmdlQ291bnQpCiAgICAgR2V0UGFzdGVib2FyZFVuaXF1ZU5hbWUoKSAtPiAo
U3RyaW5nIHBhc3RlYm9hcmROYW1lKQotICAgIEdldFBhc3RlYm9hcmRDb2xvcihTdHJpbmcgcGFz
dGVib2FyZE5hbWUpIC0+IChXZWJDb3JlOjpDb2xvciBjb2xvcikKKyAgICBHZXRQYXN0ZWJvYXJk
Q29sb3IoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoV2ViQ29yZTo6T3B0aW9uYWxSR0JBIGNv
bG9yKQogICAgIEdldFBhc3RlYm9hcmRVUkwoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3Ry
aW5nIHVybFN0cmluZykKICAgICBBZGRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmRO
YW1lLCBWZWN0b3I8U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMpIC0+ICh1aW50NjRfdCBjaGFuZ2VD
b3VudCkKICAgICBTZXRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBWZWN0
b3I8U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMpIC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWly
by5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8u
Y3BwCmluZGV4IDJmYjMwYjVjN2QyMjM0ZjdmMTllOGQyMWJjMmY4NjYwYWY5YmQ2Y2UuLmM0NzU1
OTZhNTM3MzJjMGU2OGQzMDlmNmRlZWRjNjU5MmFiMDA3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcApAQCAtOTksNyAr
OTksNyBAQCB2b2lkIEJhY2tpbmdTdG9yZTo6aW5jb3Jwb3JhdGVVcGRhdGUoU2hhcmVhYmxlQml0
bWFwKiBiaXRtYXAsIGNvbnN0IFVwZGF0ZUluZm8mCiAgICAgICAgIHNyY1JlY3QubW92ZSgtdXBk
YXRlUmVjdExvY2F0aW9uLngoKSwgLXVwZGF0ZVJlY3RMb2NhdGlvbi55KCkpOwogI2lmIFBMQVRG
T1JNKEdUSykKICAgICAgICAgaWYgKCFtX3dlYlBhZ2VQcm94eS5kcmF3c0JhY2tncm91bmQoKSkg
ewotICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6Q29sb3IgY29sb3IgPSBtX3dlYlBhZ2VQcm94
eS5iYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFs
UkdCQSBjb2xvciA9IG1fd2ViUGFnZVByb3h5LmJhY2tncm91bmRDb2xvcigpOwogICAgICAgICAg
ICAgaWYgKGNvbG9yLmhhc0FscGhhKCkpCiAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LmNsZWFyUmVjdChzcmNSZWN0KTsKICAgICAgICAgICAgIGlmIChjb2xvci5hbHBoYSgpID4gMCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvSW5wdXRNZXRob2RDb250
ZXh0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvSW5wdXRNZXRob2RDb250
ZXh0RWZsLmNwcAppbmRleCBmMmIyYWI5MmNjMjM1N2JmY2Q0YmY4MDVhNmEwYTkwYjdlNjQyYzAz
Li43YjYxNTVmMzU2MmZhYzc5YmQ3ZjFjODQxNjliYTgwNjE0NmJiMmI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0lucHV0TWV0aG9kQ29udGV4dEVmbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9JbnB1dE1ldGhvZENvbnRleHRFZmwuY3Bw
CkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgSW5wdXRNZXRob2RDb250ZXh0RWZsOjpvbklNRlByZWVk
aXRTZXF1ZW5jZUNoYW5nZWQodm9pZCogZGF0YSwgRWNvcmVfSU1GX0NvCiAgICAgU3RyaW5nIHBy
ZWVkaXRTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlcik7CiAgICAgZnJlZShidWZmZXIp
OwogICAgIFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lczsKLSAgICB1bmRl
cmxpbmVzLmFwcGVuZChDb21wb3NpdGlvblVuZGVybGluZSgwLCBwcmVlZGl0U3RyaW5nLmxlbmd0
aCgpLCBDb2xvcigwLCAwLCAwKSwgZmFsc2UpKTsKKyAgICB1bmRlcmxpbmVzLmFwcGVuZChDb21w
b3NpdGlvblVuZGVybGluZSgwLCBwcmVlZGl0U3RyaW5nLmxlbmd0aCgpLCBPcHRpb25hbFJHQkEo
MCwgMCwgMCksIGZhbHNlKSk7CiAgICAgaW5wdXRNZXRob2RDb250ZXh0LT5tX3ZpZXctPnBhZ2Uo
KS0+c2V0Q29tcG9zaXRpb24ocHJlZWRpdFN0cmluZywgdW5kZXJsaW5lcywgMCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuY3BwCmluZGV4IDg5
OGEzMmFmMmQzODZmNzU0ZTU3NTE4MmVjODg0OWMwNWJhODVjMTAuLjgxODFhNzY5N2MwZDNlMGY4
NjMxOWRjMDJiMzkyNTk3MGM2ZjBjMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvVmlld0NsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9WaWV3Q2xpZW50RWZsLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlld0NsaWVu
dEVmbDo6ZG9uZVdpdGhUb3VjaEV2ZW50KFdLVmlld1JlZiwgV0tUb3VjaEV2ZW50UmVmIGV2ZW50
LCBib29sIHdhCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiB2b2lkIFZpZXdDbGllbnRF
Zmw6OnNob3dDb2xvclBpY2tlcihXS1ZpZXdSZWYsIFdLU3RyaW5nUmVmIGNvbG9yU3RyaW5nLCBX
S0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCiB7Ci0gICAgV2ViQ29yZTo6Q29sb3IgY29sb3IgPSBXZWJDb3JlOjpDb2xvcihXZWJL
aXQ6OnRvV1RGU3RyaW5nKGNvbG9yU3RyaW5nKSk7CisgICAgV2ViQ29yZTo6T3B0aW9uYWxSR0JB
IGNvbG9yID0gV2ViQ29yZTo6T3B0aW9uYWxSR0JBKFdlYktpdDo6dG9XVEZTdHJpbmcoY29sb3JT
dHJpbmcpKTsKICAgICB0b0V3a1ZpZXcoY2xpZW50SW5mbyktPnJlcXVlc3RDb2xvclBpY2tlcihs
aXN0ZW5lciwgY29sb3IpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYkNvbG9yUGlja2VyRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViQ29sb3JQaWNrZXJFZmwuY3BwCmluZGV4IDA1ZDE2ZGQ0NzA1N2Y2Y2E2ODEyNmFhYzNk
ZDdlMTk1YWZjYmRmNzIuLmE3OWQyZDgyZGU0YTkxZTRjZmUwODY2MmYzMjNlMjAzMzkyZTcxNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29sb3JQaWNrZXJF
ZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29sb3JQaWNrZXJF
ZmwuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJDb2xv
clBpY2tlckVmbDo6V2ViQ29sb3JQaWNrZXJFZmwoV2ViVmlld0VmbCogd2ViVmlldywgV2ViQ29s
b3JQaWNrZXI6OkNsaWVudCogY2xpZW50LCBjb25zdCBXZWJDb3JlOjpDb2xvciYpCitXZWJDb2xv
clBpY2tlckVmbDo6V2ViQ29sb3JQaWNrZXJFZmwoV2ViVmlld0VmbCogd2ViVmlldywgV2ViQ29s
b3JQaWNrZXI6OkNsaWVudCogY2xpZW50LCBjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmKQog
ICAgIDogV2ViQ29sb3JQaWNrZXIoY2xpZW50KQogICAgICwgbV93ZWJWaWV3KHdlYlZpZXcpCiB7
CkBAIC00NSwxNyArNDUsMTcgQEAgdm9pZCBXZWJDb2xvclBpY2tlckVmbDo6ZW5kUGlja2VyKCkK
ICAgICBtX3dlYlZpZXctPmNvbG9yUGlja2VyQ2xpZW50KCkuZW5kUGlja2VyKG1fd2ViVmlldyk7
CiB9CiAKLXZvaWQgV2ViQ29sb3JQaWNrZXJFZmw6OnNob3dDb2xvclBpY2tlcihjb25zdCBXZWJD
b3JlOjpDb2xvciYgY29sb3IpCit2b2lkIFdlYkNvbG9yUGlja2VyRWZsOjpzaG93Q29sb3JQaWNr
ZXIoY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICBtX3dlYlZpZXct
PmNvbG9yUGlja2VyQ2xpZW50KCkuc2hvd0NvbG9yUGlja2VyKG1fd2ViVmlldywgY29sb3Iuc2Vy
aWFsaXplZCgpLCB0b0FQSShtX2NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIuZ2V0KCkpKTsKIH0K
IAotdm9pZCBXZWJDb2xvclBpY2tlckVmbDo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3Jl
OjpDb2xvciYpCit2b2lkIFdlYkNvbG9yUGlja2VyRWZsOjpzZXRTZWxlY3RlZENvbG9yKGNvbnN0
IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
dm9pZCBXZWJDb2xvclBpY2tlckVmbDo6ZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29s
b3ImIGNvbG9yKQordm9pZCBXZWJDb2xvclBpY2tlckVmbDo6ZGlkQ2hvb3NlQ29sb3IoY29uc3Qg
V2ViQ29yZTo6T3B0aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICBpZiAoIW1fY2xpZW50KQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
YkNvbG9yUGlja2VyRWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9y
UGlja2VyRWZsLmgKaW5kZXggZTdjMjkxNGMyZmRmOTJkNzRiNGIwN2Y3YzMwNjkzNTU0NDk2MWFh
OC4uMTRjMjEzOWJhY2IwYWM4ODczMmYyNTlhMTk2ZDcyMjI2NDlkNDAxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvclBpY2tlckVmbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29sb3JQaWNrZXJFZmwuaApAQCAtMzUsMjAg
KzM1LDIwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJDb2xvclBpY2tlckVmbCA6
IHB1YmxpYyBXZWJDb2xvclBpY2tlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViQ29sb3JQaWNrZXJFZmw+IGNyZWF0ZShXZWJWaWV3RWZsKiB3ZWJWaWV3LCBXZWJDb2xvclBp
Y2tlcjo6Q2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3Ip
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXJFZmw+IGNyZWF0ZShXZWJWaWV3
RWZsKiB3ZWJWaWV3LCBXZWJDb2xvclBpY2tlcjo6Q2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYkNv
cmU6Ok9wdGlvbmFsUkdCQSYgaW5pdGlhbENvbG9yKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXZWJDb2xvclBpY2tlckVmbCh3ZWJWaWV3LCBjbGllbnQsIGluaXRpYWxDb2xv
cikpOwogICAgIH0KICAgICB+V2ViQ29sb3JQaWNrZXJFZmwoKSB7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBlbmRQaWNrZXIoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRD
b2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBz
aG93Q29sb3JQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbG9yUGlja2VyKGNvbnN0IFdlYkNvcmU6
Ok9wdGlvbmFsUkdCQSYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRDaG9vc2VDb2xvcihjb25z
dCBXZWJDb3JlOjpDb2xvciYpOworICAgIHZvaWQgZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2ViQ29y
ZTo6T3B0aW9uYWxSR0JBJik7CiAKIHByaXZhdGU6Ci0gICAgV2ViQ29sb3JQaWNrZXJFZmwoV2Vi
Vmlld0VmbCosIFdlYkNvbG9yUGlja2VyOjpDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYp
OworICAgIFdlYkNvbG9yUGlja2VyRWZsKFdlYlZpZXdFZmwqLCBXZWJDb2xvclBpY2tlcjo6Q2xp
ZW50KiwgY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJik7CiAKICAgICBXZWJWaWV3RWZsKiBt
X3dlYlZpZXc7CiAgICAgUmVmUHRyPFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eT4g
bV9jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJv
eHkuY3BwCmluZGV4IGE0N2YwZDBhNDAwNGRmOWQ2ZWE2OWE1MjkzODY5NzEzMGM2MDE2ZjcuLmUx
ZGIzODBhYzg5NDhlN2I0YzRmMzg2MDM3NTBlZmY4MjI0NTk1NDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yUGlja2VyUmVz
dWx0TGlzdGVuZXJQcm94eS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBXZWJDb2xvclBpY2tl
clJlc3VsdExpc3RlbmVyUHJveHk6OnNldENvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IpCiAgICAg
aWYgKCFtX2NvbG9yUGlja2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NvbG9yUGlja2Vy
LT5kaWRDaG9vc2VDb2xvcihXZWJDb3JlOjpDb2xvcihjb2xvcikpOworICAgIG1fY29sb3JQaWNr
ZXItPmRpZENob29zZUNvbG9yKFdlYkNvcmU6Ok9wdGlvbmFsUkdCQShjb2xvcikpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViVmlld0VmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZp
ZXdFZmwuY3BwCmluZGV4IGI1NTcwNzhiNjZhODhiNjg0M2IwN2U4MmU0YzE1NzkyYmQwYjhjZGUu
LjYzYTVhYjBhZjUzNjg5M2FhMDEzY2ZlYmIwNjIxZDFkNmQwYmZmOWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZv
aWQgV2ViVmlld0VmbDo6c2VuZE1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3Zl
KiBldmVudCkKICAgICBtX3BhZ2UtPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVu
dChldmVudCwgdHJhbnNmb3JtRnJvbVNjZW5lKCksIG1fdXNlclZpZXdwb3J0VHJhbnNmb3JtLnRv
QWZmaW5lVHJhbnNmb3JtKCkpKTsKIH0KIAotdm9pZCBXZWJWaWV3RWZsOjpzZXRWaWV3QmFja2dy
b3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3ZvaWQgV2ViVmlld0VmbDo6
c2V0Vmlld0JhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmIGNvbG9y
KQogewogICAgIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogc2NlbmUgPSBjb29yZGluYXRlZEdy
YXBoaWNzU2NlbmUoKTsKICAgICBpZiAoIXNjZW5lKQpAQCAtMTU3LDExICsxNTcsMTEgQEAgdm9p
ZCBXZWJWaWV3RWZsOjpzZXRWaWV3QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9y
JiBjb2xvcikKICAgICBzY2VuZS0+c2V0Vmlld0JhY2tncm91bmRDb2xvcihjb2xvcik7CiB9CiAK
LVdlYkNvcmU6OkNvbG9yIFdlYlZpZXdFZmw6OnZpZXdCYWNrZ3JvdW5kQ29sb3IoKQorV2ViQ29y
ZTo6T3B0aW9uYWxSR0JBIFdlYlZpZXdFZmw6OnZpZXdCYWNrZ3JvdW5kQ29sb3IoKQogewogICAg
IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogc2NlbmUgPSBjb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUoKTsKICAgICBpZiAoIXNjZW5lKQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAgICAg
cmV0dXJuIE9wdGlvbmFsUkdCQSgpOwogCiAgICAgcmV0dXJuIHNjZW5lLT52aWV3QmFja2dyb3Vu
ZENvbG9yKCk7CiB9CkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBXZWJWaWV3RWZsOjppbml0aWFs
aXplQ29sb3JQaWNrZXJDbGllbnQoY29uc3QgV0tDb2xvclBpY2tlckNsaWVudEJhc2UqIGNsaWUK
ICAgICBtX2NvbG9yUGlja2VyQ2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKIH0KIAotUmVmUHRy
PFdlYkNvbG9yUGlja2VyPiBXZWJWaWV3RWZsOjpjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJv
eHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvciwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpCitSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IFdlYlZpZXdFZmw6OmNyZWF0ZUNvbG9yUGlj
a2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJiBjb2xv
ciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpCiB7CiAgICAgcmV0dXJuIFdlYkNvbG9yUGlja2Vy
RWZsOjpjcmVhdGUodGhpcywgcGFnZSwgY29sb3IpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYlZpZXdFZmwuaAppbmRleCBkMTFhMWZlODVmYTliOGY3NzJjODgzMGMwNTBjYzZk
NmZiNzU4MDFhLi5iODc2MmU3MGExMjkxNmY5NTQ1YzI3ODNiM2FlY2U1N2U2MWEwYzQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuaApAQCAtNTcsMTEgKzU3LDEx
IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemVDb2xvclBpY2tlckNsaWVudChjb25zdCBX
S0NvbG9yUGlja2VyQ2xpZW50QmFzZSopOwogCiAgICAgV2ViQ29sb3JQaWNrZXJDbGllbnQmIGNv
bG9yUGlja2VyQ2xpZW50KCkgeyByZXR1cm4gbV9jb2xvclBpY2tlckNsaWVudDsgfQotICAgIHZp
cnR1YWwgUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJv
eHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb2xvclBpY2tlcj4gY3JlYXRlQ29sb3JQaWNr
ZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2b2lkIHNldFZpZXdCYWNr
Z3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKLSAgICBXZWJDb3JlOjpDb2xvciB2
aWV3QmFja2dyb3VuZENvbG9yKCk7CisgICAgdm9pZCBzZXRWaWV3QmFja2dyb3VuZENvbG9yKGNv
bnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYpOworICAgIFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSB2
aWV3QmFja2dyb3VuZENvbG9yKCk7CiBwcml2YXRlOgogICAgIFdlYlZpZXdFZmwoV2ViUHJvY2Vz
c1Bvb2wqLCBXZWJQYWdlR3JvdXAqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2d0ay9JbnB1dE1ldGhvZEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL0lucHV0TWV0aG9kRmlsdGVyLmNwcAppbmRleCAwMDc0YjM4M2Y0OWU3ZTdkMzYzMzlm
NDZiM2Q4ZWNiNGQ5YWQ5YjEyLi41YTlhMDI4YTE5MmQzZmYxNmQ5Mzg3OGQzODdlMjMxYTJhNzVj
MmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0lucHV0TWV0aG9k
RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0lucHV0TWV0aG9k
RmlsdGVyLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgSW5wdXRNZXRob2RGaWx0ZXI6Omhh
bmRsZUtleWJvYXJkRXZlbnRXaXRoQ29tcG9zaXRpb25SZXN1bHRzKEdka0V2ZW50S2V5KiBlCiAg
ICAgICAgIG1fcGFnZS0+Y29uZmlybUNvbXBvc2l0aW9uKG1fY29uZmlybWVkQ29tcG9zaXRpb24s
IC0xLCAwKTsKIAogICAgIGlmIChyZXN1bHRzVG9TZW5kICYgUHJlZWRpdCAmJiAhbV9wcmVlZGl0
LmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fcGFnZS0+c2V0Q29tcG9zaXRpb24obV9wcmVlZGl0LCBW
ZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+eyBDb21wb3NpdGlvblVuZGVybGluZSgwLCBtX3By
ZWVkaXQubGVuZ3RoKCksIENvbG9yKDEsIDEsIDEpLCBmYWxzZSkgfSwKKyAgICAgICAgbV9wYWdl
LT5zZXRDb21wb3NpdGlvbihtX3ByZWVkaXQsIFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT57
IENvbXBvc2l0aW9uVW5kZXJsaW5lKDAsIG1fcHJlZWRpdC5sZW5ndGgoKSwgT3B0aW9uYWxSR0JB
KDEsIDEsIDEpLCBmYWxzZSkgfSwKICAgICAgICAgICAgIG1fY3Vyc29yT2Zmc2V0LCBtX2N1cnNv
ck9mZnNldCwgMCAvKiByZXBsYWNlbWVudCBzdGFydCAqLywgMCAvKiByZXBsYWNlbWVudCBlbmQg
Ki8pOwogICAgIH0KIH0KQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIElucHV0TWV0aG9kRmlsdGVy
Ojp1cGRhdGVQcmVlZGl0KCkKICAgICB9CiAjZW5kaWYKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IHBhcnNlIHRoZSBQYW5nb0F0dHJMaXN0IHRoYXQgd2UgZ2V0IGZyb20gdGhlIElNIGNvbnRleHQg
aGVyZS4KLSAgICBtX3BhZ2UtPnNldENvbXBvc2l0aW9uKG1fcHJlZWRpdCwgVmVjdG9yPENvbXBv
c2l0aW9uVW5kZXJsaW5lPnsgQ29tcG9zaXRpb25VbmRlcmxpbmUoMCwgbV9wcmVlZGl0Lmxlbmd0
aCgpLCBDb2xvcigxLCAxLCAxKSwgZmFsc2UpIH0sCisgICAgbV9wYWdlLT5zZXRDb21wb3NpdGlv
bihtX3ByZWVkaXQsIFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT57IENvbXBvc2l0aW9uVW5k
ZXJsaW5lKDAsIG1fcHJlZWRpdC5sZW5ndGgoKSwgT3B0aW9uYWxSR0JBKDEsIDEsIDEpLCBmYWxz
ZSkgfSwKICAgICAgICAgbV9jdXJzb3JPZmZzZXQsIG1fY3Vyc29yT2Zmc2V0LCAwIC8qIHJlcGxh
Y2VtZW50IHN0YXJ0ICovLCAwIC8qIHJlcGxhY2VtZW50IGVuZCAqLyk7CiAgICAgbV9wcmVlZGl0
Q2hhbmdlZCA9IGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJDb2xvclBpY2tlckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYkNvbG9yUGlja2VyR3RrLmNwcAppbmRleCAzMmRmZTgyZWNkNmM2NTIzYmE1NWYwNTNhMDI0
MzBlYzQ4YjE3NWEwLi5hNThhYmRlZmM4Mzc5MzJjNmE4ZDE0NTIwYTAyNzRiNmRiOTNmNjdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yUGlja2VyR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yUGlja2VyR3Rr
LmNwcApAQCAtMzcsMTIgKzM3LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotUmVmPFdlYkNvbG9yUGlja2VyR3RrPiBXZWJDb2xvclBpY2tlckd0
azo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvciwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKK1JlZjxXZWJDb2xvclBpY2tlckd0az4gV2ViQ29sb3JQaWNr
ZXJHdGs6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IE9wdGlvbmFsUkdCQSYgaW5p
dGlhbENvbG9yLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkNvbG9yUGlja2VyR3RrKHBhZ2UsIGluaXRpYWxDb2xvciwgcmVjdCkpOwogfQogCi1X
ZWJDb2xvclBpY2tlckd0azo6V2ViQ29sb3JQaWNrZXJHdGsoV2ViUGFnZVByb3h5JiBwYWdlLCBj
b25zdCBDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBJbnRSZWN0JikKK1dlYkNvbG9yUGlja2Vy
R3RrOjpXZWJDb2xvclBpY2tlckd0ayhXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IE9wdGlvbmFs
UkdCQSYgaW5pdGlhbENvbG9yLCBjb25zdCBJbnRSZWN0JikKICAgICA6IFdlYkNvbG9yUGlja2Vy
KCZwYWdlKQogICAgICwgbV9pbml0aWFsQ29sb3IoaW5pdGlhbENvbG9yKQogICAgICwgbV93ZWJW
aWV3KHBhZ2Uudmlld1dpZGdldCgpKQpAQCAtNjksNyArNjksNyBAQCB2b2lkIFdlYkNvbG9yUGlj
a2VyR3RrOjplbmRQaWNrZXIoKQogICAgIG1fY29sb3JDaG9vc2VyID0gbnVsbHB0cjsKIH0KIAot
dm9pZCBXZWJDb2xvclBpY2tlckd0azo6ZGlkQ2hvb3NlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9y
KQordm9pZCBXZWJDb2xvclBpY2tlckd0azo6ZGlkQ2hvb3NlQ29sb3IoY29uc3QgT3B0aW9uYWxS
R0JBJiBjb2xvcikKIHsKICAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm47CkBAIC05
MSw3ICs5MSw3IEBAIHZvaWQgV2ViQ29sb3JQaWNrZXJHdGs6OmNvbG9yQ2hvb3NlckRpYWxvZ1Jl
c3BvbnNlQ2FsbGJhY2soR3RrQ29sb3JDaG9vc2VyKiwgaW50CiAgICAgY29sb3JQaWNrZXItPmVu
ZFBpY2tlcigpOwogfQogCi12b2lkIFdlYkNvbG9yUGlja2VyR3RrOjpzaG93Q29sb3JQaWNrZXIo
Y29uc3QgQ29sb3ImIGNvbG9yKQordm9pZCBXZWJDb2xvclBpY2tlckd0azo6c2hvd0NvbG9yUGlj
a2VyKGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IpCiB7CiAgICAgaWYgKCFtX2NsaWVudCkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
ZWJDb2xvclBpY2tlckd0ay5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb2xv
clBpY2tlckd0ay5oCmluZGV4IDA1YTg0ZGU0YjAyMTgzOGNkNWE5NjVkMGFiYmJmOGVmMTRlZWI3
Y2UuLjZjNmZiZjRmZjdiZjc0ZGQwYThjOWY0ZDZlNjNjMjA1ZDQwNjA2NGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29sb3JQaWNrZXJHdGsuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yUGlja2VyR3RrLmgKQEAgLTM0LDcg
KzM0LDcgQEAKIHR5cGVkZWYgc3RydWN0IF9HdGtDb2xvckNob29zZXIgR3RrQ29sb3JDaG9vc2Vy
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDb2xvcjsKK2NsYXNzIE9wdGlvbmFsUkdC
QTsKIGNsYXNzIEludFJlY3Q7CiB9CiAKQEAgLTQyLDIwICs0MiwyMCBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgV2ViQ29sb3JQaWNrZXJHdGsgOiBwdWJsaWMgV2ViQ29sb3JQaWNrZXIg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViQ29sb3JQaWNrZXJHdGs+IGNyZWF0ZShXZWJQ
YWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KTsKKyAgICBzdGF0aWMgUmVmPFdlYkNvbG9yUGlja2VyR3RrPiBjcmVhdGUoV2ViUGFnZVByb3h5
JiwgY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
OwogICAgIHZpcnR1YWwgfldlYkNvbG9yUGlja2VyR3RrKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZW5kUGlja2VyKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNob3dDb2xvclBpY2tlcihj
b25zdCBXZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzaG93Q29s
b3JQaWNrZXIoY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJikgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIGNhbmNlbCgpOwogCiAgICAgY29uc3QgR2RrUkdCQSogaW5pdGlhbENvbG9yKCkgY29uc3Qg
eyByZXR1cm4gJm1faW5pdGlhbENvbG9yOyB9CiAKIHByb3RlY3RlZDoKLSAgICBXZWJDb2xvclBp
Y2tlckd0ayhXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKTsKKyAgICBXZWJDb2xvclBpY2tlckd0ayhXZWJQYWdlUHJveHkmLCBjb25z
dCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAKLSAg
ICB2b2lkIGRpZENob29zZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CisgICAgdm9pZCBk
aWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmKTsKIAogICAgIEdka1JH
QkEgbV9pbml0aWFsQ29sb3I7CiAgICAgR3RrV2lkZ2V0KiBtX3dlYlZpZXc7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggMTU4NWYw
NTE3YTBkNzVjNzlkZDk1MTkzZGRmOWNjMzU5OGYwNmNmZC4uMmEzMjI4ZjYxNGQxNzdiNGJmMmNi
Njg4NzgxMTY4NGM4NjM4ZjUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMTE0LDcgKzExNCw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHdoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5hdGl2
ZVdlYldoZWVsRXZlbnQmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBjb21taXRQb3Rl
bnRpYWxUYXBGYWlsZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkR2V0VGFwSGln
aGxpZ2h0R2VvbWV0cmllcyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcmU6OkNvbG9y
JiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4mIGhpZ2hsaWdodGVkUXVhZHMsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBib3R0b21MZWZ0UmFk
aXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBib3R0b21SaWdodFJhZGl1cykgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIGRpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXModWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmLCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6RmxvYXRRdWFkPiYgaGlnaGxpZ2h0ZWRRdWFkcywgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRDb21taXRMYXllclRyZWUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZHluYW1pY1ZpZXdwb3J0VXBkYXRlQ2hhbmdlZFRh
cmdldChkb3VibGUgbmV3U2NhbGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIG5ld1Njcm9s
bFBvc2l0aW9uLCB1aW50NjRfdCB0cmFuc2FjdGlvbklEKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDc1Njlm
YmNiMjNhOTAwY2NjMWE4MmZkNmJiMzBmMzc5NDliODBkNDUuLjJkN2IxNjI3MDU1NTI0YjcxOTZk
NzUwZmI0YTI2YWJmZjIwMWY5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgUGFnZUNs
aWVudEltcGw6OmNvbW1pdFBvdGVudGlhbFRhcEZhaWxlZCgpCiAgICAgW21fY29udGVudFZpZXcg
X2NvbW1pdFBvdGVudGlhbFRhcEZhaWxlZF07CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmRp
ZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXModWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJD
b3JlOjpDb2xvciYgY29sb3IsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+JiBoaWdo
bGlnaHRlZFF1YWRzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90dG9tUmlnaHRS
YWRpdXMpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRHZXRUYXBIaWdobGlnaHRHZW9tZXRyaWVz
KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJiBjb2xvciwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4mIGhpZ2hsaWdodGVkUXVhZHMsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBib3R0b21MZWZ0UmFkaXVz
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBib3R0b21SaWdodFJhZGl1cykKIHsKICAgICBbbV9j
b250ZW50VmlldyBfZGlkR2V0VGFwSGlnaGxpZ2h0Rm9yUmVxdWVzdDpyZXF1ZXN0SUQgY29sb3I6
Y29sb3IgcXVhZHM6aGlnaGxpZ2h0ZWRRdWFkcyB0b3BMZWZ0UmFkaXVzOnRvcExlZnRSYWRpdXMg
dG9wUmlnaHRSYWRpdXM6dG9wUmlnaHRSYWRpdXMgYm90dG9tTGVmdFJhZGl1czpib3R0b21MZWZ0
UmFkaXVzIGJvdHRvbVJpZ2h0UmFkaXVzOmJvdHRvbVJpZ2h0UmFkaXVzXTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9T
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJ
T1MubW0KaW5kZXggNjE3MjZjOGM3M2E2MGQ1NjA4NjNjNTQ1MWQ0MTQyNjZjNTJkNTUxOC4uMjlk
NzFmYjhhYTVjZTkzNThlZDAzYmIzY2ZjYTZhNmNkNTJmNzFlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0K
QEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lw
ZUdlc3R1cmUoX1VJTmF2aWdhdGlvbkludGVyYWN0aXZlVHJhbnNpdGlvbgogICAgICAgICBzd2lw
ZUxheWVyU2l6ZUluRGV2aWNlQ29vcmRpbmF0ZXMuc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOwog
ICAgICAgICBpZiAoc25hcHNob3QtPmhhc0ltYWdlKCkgJiYgc25hcHNob3QtPnNpemUoKSA9PSBz
d2lwZUxheWVyU2l6ZUluRGV2aWNlQ29vcmRpbmF0ZXMgJiYgZGV2aWNlU2NhbGVGYWN0b3IgPT0g
c25hcHNob3QtPmRldmljZVNjYWxlRmFjdG9yKCkpCiAgICAgICAgICAgICBbbV9zbmFwc2hvdFZp
ZXcgbGF5ZXJdLmNvbnRlbnRzID0gc25hcHNob3QtPmFzTGF5ZXJDb250ZW50cygpOwotICAgICAg
ICBDb2xvciBjb3JlQ29sb3IgPSBzbmFwc2hvdC0+YmFja2dyb3VuZENvbG9yKCk7CisgICAgICAg
IE9wdGlvbmFsUkdCQSBjb3JlQ29sb3IgPSBzbmFwc2hvdC0+YmFja2dyb3VuZENvbG9yKCk7CiAg
ICAgICAgIGlmIChjb3JlQ29sb3IuaXNWYWxpZCgpKQogICAgICAgICAgICAgYmFja2dyb3VuZENv
bG9yID0gYWRvcHROUyhbW1VJQ29sb3IgYWxsb2NdIGluaXRXaXRoQ0dDb2xvcjpjYWNoZWRDR0Nv
bG9yKGNvcmVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQildKTsKICAgICB9CkBAIC00NjEsNyAr
NDYxLDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJlbW92ZVN3aXBlU25hcHNob3Qo
KQogCiAgICAgbV9zd2lwZVRyYW5zaXRpb25Db250ZXh0ID0gbnVsbHB0cjsKIAotICAgIG1fYmFj
a2dyb3VuZENvbG9yRm9yQ3VycmVudFNuYXBzaG90ID0gQ29sb3IoKTsKKyAgICBtX2JhY2tncm91
bmRDb2xvckZvckN1cnJlbnRTbmFwc2hvdCA9IE9wdGlvbmFsUkdCQSgpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IGQ3OWUxMTgyYTJhOWEyN2FkMTBmNzdj
MTFjMmRjNDljZjVhZDI2MTEuLmViZmI3OWYyZmY0NGE0ZjA1Yzc4N2YwMDg4NGFmOGI0NTYzZGYz
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtNDUsNyArNDUsNyBAQAogI2ltcG9ydCA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENvbG9yOworY2xhc3Mg
T3B0aW9uYWxSR0JBOwogY2xhc3MgRmxvYXRRdWFkOwogY2xhc3MgSW50U2l6ZTsKIH0KQEAgLTEy
OCw3ICsxMjgsNyBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogCiAgICAgdWludDY0
X3QgX2xhdGVzdFRhcEhpZ2hsaWdodElEOwogICAgIHN0cnVjdCBUYXBIaWdobGlnaHRJbmZvcm1h
dGlvbiB7Ci0gICAgICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yOworICAgICAgICBXZWJDb3JlOjpP
cHRpb25hbFJHQkEgY29sb3I7CiAgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+IHF1
YWRzOwogICAgICAgICBXZWJDb3JlOjpJbnRTaXplIHRvcExlZnRSYWRpdXM7CiAgICAgICAgIFdl
YkNvcmU6OkludFNpemUgdG9wUmlnaHRSYWRpdXM7CkBAIC0xODAsNyArMTgwLDcgQEAgc3RydWN0
IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKIC0gKHZvaWQpX3dlYlRvdWNoRXZlbnQ6KGNvbnN0IFdl
YktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudCYpdG91Y2hFdmVudCBwcmV2ZW50c05hdGl2ZUdlc3R1
cmVzOihCT09MKXByZXZlbnRzRGVmYXVsdDsKICNlbmRpZgogLSAodm9pZClfY29tbWl0UG90ZW50
aWFsVGFwRmFpbGVkOwotLSAodm9pZClfZGlkR2V0VGFwSGlnaGxpZ2h0Rm9yUmVxdWVzdDoodWlu
dDY0X3QpcmVxdWVzdElEIGNvbG9yOihjb25zdCBXZWJDb3JlOjpDb2xvciYpY29sb3IgcXVhZHM6
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+JiloaWdobGlnaHRlZFF1YWRzIHRvcExl
ZnRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKXRvcExlZnRSYWRpdXMgdG9wUmlnaHRS
YWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKXRvcFJpZ2h0UmFkaXVzIGJvdHRvbUxlZnRS
YWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKWJvdHRvbUxlZnRSYWRpdXMgYm90dG9tUmln
aHRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKWJvdHRvbVJpZ2h0UmFkaXVzOworLSAo
dm9pZClfZGlkR2V0VGFwSGlnaGxpZ2h0Rm9yUmVxdWVzdDoodWludDY0X3QpcmVxdWVzdElEIGNv
bG9yOihjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmKWNvbG9yIHF1YWRzOihjb25zdCBWZWN0
b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYpaGlnaGxpZ2h0ZWRRdWFkcyB0b3BMZWZ0UmFkaXVzOihj
b25zdCBXZWJDb3JlOjpJbnRTaXplJil0b3BMZWZ0UmFkaXVzIHRvcFJpZ2h0UmFkaXVzOihjb25z
dCBXZWJDb3JlOjpJbnRTaXplJil0b3BSaWdodFJhZGl1cyBib3R0b21MZWZ0UmFkaXVzOihjb25z
dCBXZWJDb3JlOjpJbnRTaXplJilib3R0b21MZWZ0UmFkaXVzIGJvdHRvbVJpZ2h0UmFkaXVzOihj
b25zdCBXZWJDb3JlOjpJbnRTaXplJilib3R0b21SaWdodFJhZGl1czsKIAogLSAodm9pZClfc3Rh
cnRBc3Npc3RpbmdOb2RlOihjb25zdCBXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9ybWF0aW9uJilp
bmZvcm1hdGlvbiB1c2VySXNJbnRlcmFjdGluZzooQk9PTCl1c2VySXNJbnRlcmFjdGluZyBibHVy
UHJldmlvdXNOb2RlOihCT09MKWJsdXJQcmV2aW91c05vZGUgdXNlck9iamVjdDooTlNPYmplY3Qg
PE5TU2VjdXJlQ29kaW5nPiAqKXVzZXJPYmplY3Q7CiAtICh2b2lkKV9zdG9wQXNzaXN0aW5nTm9k
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggMWRlNWY0ZWY4MjE5OGE3ZjhkYTlkMjc2YmNkYWM1MDk1
MzUwOGZhMy4uMGJiYjQ0MzI3MzhiNmUyOGMxNmU2NDk2N2QyNmJiYzExOTNhZGMxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KQEAgLTczMyw3ICs3MzMsNyBAQCAtICh2b2lkKV9zaG93VGFwSGlnaGxpZ2h0
CiAgICAgW3NlbGYgX3VwZGF0ZVRhcEhpZ2hsaWdodF07CiB9CiAKLS0gKHZvaWQpX2RpZEdldFRh
cEhpZ2hsaWdodEZvclJlcXVlc3Q6KHVpbnQ2NF90KXJlcXVlc3RJRCBjb2xvcjooY29uc3QgV2Vi
Q29yZTo6Q29sb3ImKWNvbG9yIHF1YWRzOihjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFk
PiYpaGlnaGxpZ2h0ZWRRdWFkcyB0b3BMZWZ0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXpl
Jil0b3BMZWZ0UmFkaXVzIHRvcFJpZ2h0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJil0
b3BSaWdodFJhZGl1cyBib3R0b21MZWZ0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJili
b3R0b21MZWZ0UmFkaXVzIGJvdHRvbVJpZ2h0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXpl
Jilib3R0b21SaWdodFJhZGl1cworLSAodm9pZClfZGlkR2V0VGFwSGlnaGxpZ2h0Rm9yUmVxdWVz
dDoodWludDY0X3QpcmVxdWVzdElEIGNvbG9yOihjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEm
KWNvbG9yIHF1YWRzOihjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYpaGlnaGxpZ2h0
ZWRRdWFkcyB0b3BMZWZ0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJil0b3BMZWZ0UmFk
aXVzIHRvcFJpZ2h0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJil0b3BSaWdodFJhZGl1
cyBib3R0b21MZWZ0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJilib3R0b21MZWZ0UmFk
aXVzIGJvdHRvbVJpZ2h0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJilib3R0b21SaWdo
dFJhZGl1cwogewogICAgIGlmICghX2lzVGFwSGlnaGxpZ2h0SURWYWxpZCB8fCBfbGF0ZXN0VGFw
SGlnaGxpZ2h0SUQgIT0gcmVxdWVzdElEKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDI3MjU2MDZlZGQy
YzQ4YmYwZWYwODQ2YmJlOGUyNGM0MzQ1ZDlkMGUuLjYzMzEyYjlkOGJhNjc2NWQwNDRkYTQ2ZmIw
ZWIzNTg0MjQwM2I0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tCkBAIC03OTYsNyArNzk2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
c3RvcmVQYWdlQ2VudGVyQW5kU2NhbGUoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgY2VudGVy
LAogICAgIG1fcGFnZUNsaWVudC5yZXN0b3JlUGFnZUNlbnRlckFuZFNjYWxlKGNlbnRlciwgc2Nh
bGUpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkR2V0VGFwSGlnaGxpZ2h0R2VvbWV0cmll
cyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvciwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4mIGhpZ2hsaWdodGVkUXVhZHMsIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRvcFJp
Z2h0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBib3R0b21MZWZ0UmFkaXVzLCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBib3R0b21SaWdodFJhZGl1cykKK3ZvaWQgV2ViUGFnZVByb3h5
OjpkaWRHZXRUYXBIaWdobGlnaHRHZW9tZXRyaWVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3Qg
V2ViQ29yZTo6T3B0aW9uYWxSR0JBJiBjb2xvciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0
UXVhZD4mIGhpZ2hsaWdodGVkUXVhZHMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRvcExlZnRS
YWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBi
b3R0b21SaWdodFJhZGl1cykKIHsKICAgICBtX3BhZ2VDbGllbnQuZGlkR2V0VGFwSGlnaGxpZ2h0
R2VvbWV0cmllcyhyZXF1ZXN0SUQsIGNvbG9yLCBoaWdobGlnaHRlZFF1YWRzLCB0b3BMZWZ0UmFk
aXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCmlu
ZGV4IGM2OWVlYTY0YzFlNmViYzA3N2Y1ODI1Y2Q2ZGMzMzM0YWMyMDgyZDcuLmYyNmU3OThlMDRh
ZDllMjZkZDM5MjM4ODA3OWMwYzZjMWM5YWEyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTEyNCw3ICsxMjQsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51
UHJveHkoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9D
T0xPUikKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb2xvclBpY2tlcj4gY3JlYXRlQ29sb3JQaWNr
ZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNv
bG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3Jl
OjpPcHRpb25hbFJHQkEmIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92
ZXJyaWRlOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEluZGljYXRvcihSZWY8
V2ViQ29yZTo6VGV4dEluZGljYXRvcj4sIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGltZSA9
IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGltZTo6UGVybWFuZW50KSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4IDM5
NzY4ZGRlNzc2ZWVlZWU3ODU1ZjQ3ZTMyNTMwYTIwN2U4MzcwYjMuLjY2NTA0ZjExNGIxNWVmZDA2
ZTMyZWE3MTM1ODE4OTFjOTc1MjU3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbC5tbQpAQCAtNDk5LDcgKzQ5OSw3IEBAIFJlZlB0cjxXZWJDb250
ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQ
YWdlUHJveHkqCiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLVJlZlB0cjxXZWJD
b2xvclBpY2tlcj4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94
eSogcGFnZSwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHJlY3QpCitSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IFBhZ2VDbGllbnRJbXBs
OjpjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6Ok9w
dGlvbmFsUkdCQSYgaW5pdGlhbENvbG9yLCAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkK
IHsKICAgICByZXR1cm4gV2ViQ29sb3JQaWNrZXJNYWM6OmNyZWF0ZShwYWdlLCBpbml0aWFsQ29s
b3IsIHJlY3QsIHdrVmlldygpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4IDJhOTBmYzkxZGZjOWY5MDViZDBl
MzZhZmM5NDJiODMzNWIwZjBhZjEuLjAxZmRlOGQ4YjI1YmU4ZmY5ZjM4OTEyNjA1ZmY3YzMxMGVl
NTI4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1
cmVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXIuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
bW92ZVN3aXBlU25hcHNob3QoKTsKICAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25G
b3JNYWluRnJhbWUoU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUpOwogCi0gICAgV2ViQ29yZTo6
Q29sb3IgYmFja2dyb3VuZENvbG9yRm9yQ3VycmVudFNuYXBzaG90KCkgY29uc3QgeyByZXR1cm4g
bV9iYWNrZ3JvdW5kQ29sb3JGb3JDdXJyZW50U25hcHNob3Q7IH0KKyAgICBXZWJDb3JlOjpPcHRp
b25hbFJHQkEgYmFja2dyb3VuZENvbG9yRm9yQ3VycmVudFNuYXBzaG90KCkgY29uc3QgeyByZXR1
cm4gbV9iYWNrZ3JvdW5kQ29sb3JGb3JDdXJyZW50U25hcHNob3Q7IH0KIAogcHJpdmF0ZToKICAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KQEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgog
ICAgIFJ1bkxvb3A6OlRpbWVyPFZpZXdHZXN0dXJlQ29udHJvbGxlcj4gbV9zd2lwZVdhdGNoZG9n
VGltZXI7CiAgICAgUnVuTG9vcDo6VGltZXI8Vmlld0dlc3R1cmVDb250cm9sbGVyPiBtX3N3aXBl
QWN0aXZlTG9hZE1vbml0b3JpbmdUaW1lcjsKIAotICAgIFdlYkNvcmU6OkNvbG9yIG1fYmFja2dy
b3VuZENvbG9yRm9yQ3VycmVudFNuYXBzaG90OworICAgIFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSBt
X2JhY2tncm91bmRDb2xvckZvckN1cnJlbnRTbmFwc2hvdDsKIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICBSZWZQdHI8Vmlld1NuYXBzaG90PiBtX2N1cnJlbnRTd2lwZVNuYXBzaG90OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ck1hYy5tbQppbmRleCAzOGI3ZTM2OGM1OTk1YTI0NGM4YTdhZjljZDgyNmE4NTRjZjc1YTdjLi5l
YTFhOWU0MWNiNWYxMWM3NmRjMzMwNzdmYzdkMTc0ZjUwZjE4ODE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5t
bQpAQCAtNTY5LDcgKzU2OSw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdpblN3
aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtCiAgICAgICAgIGlm
IChzaG91bGRVc2VTbmFwc2hvdEZvclNpemUoKnNuYXBzaG90LCBzd2lwZUFyZWEuc2l6ZSgpLCB0
b3BDb250ZW50SW5zZXQpKQogICAgICAgICAgICAgW21fc3dpcGVTbmFwc2hvdExheWVyIHNldENv
bnRlbnRzOnNuYXBzaG90LT5hc0xheWVyQ29udGVudHMoKV07CiAKLSAgICAgICAgQ29sb3IgY29y
ZUNvbG9yID0gc25hcHNob3QtPmJhY2tncm91bmRDb2xvcigpOworICAgICAgICBPcHRpb25hbFJH
QkEgY29yZUNvbG9yID0gc25hcHNob3QtPmJhY2tncm91bmRDb2xvcigpOwogICAgICAgICBpZiAo
Y29yZUNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGNhY2hl
ZENHQ29sb3IoY29yZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICNpZiBVU0VfSU9TVVJG
QUNFX1ZJRVdfU05BUFNIT1RTCkBAIC05MDgsNyArOTA4LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OnJlbW92ZVN3aXBlU25hcHNob3QoKQogCiAgICAgbV93ZWJQYWdlUHJveHkubmF2
aWdhdGlvbkdlc3R1cmVTbmFwc2hvdFdhc1JlbW92ZWQoKTsKIAotICAgIG1fYmFja2dyb3VuZENv
bG9yRm9yQ3VycmVudFNuYXBzaG90ID0gQ29sb3IoKTsKKyAgICBtX2JhY2tncm91bmRDb2xvckZv
ckN1cnJlbnRTbmFwc2hvdCA9IE9wdGlvbmFsUkdCQSgpOwogfQogCiBkb3VibGUgVmlld0dlc3R1
cmVDb250cm9sbGVyOjptYWduaWZpY2F0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUuaAppbmRleCBhMTRhMTBjNDE1MTZmZDUz
ZTc5MmI0ZTIyYTlhMWExNjk5NmY5MmRhLi5hNDExZWQ5MjVmM2VmNGFlODgwNWZmYjIwMjI1NGYy
YWUyMTBkYjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdT
bmFwc2hvdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25h
cHNob3RTdG9yZS5oCkBAIC03Niw4ICs3Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlbmRl
clRyZWVTaXplKHVpbnQ2NF90IHJlbmRlclRyZWVTaXplKSB7IG1fcmVuZGVyVHJlZVNpemUgPSBy
ZW5kZXJUcmVlU2l6ZTsgfQogICAgIHVpbnQ2NF90IHJlbmRlclRyZWVTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZW5kZXJUcmVlU2l6ZTsgfQogCi0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3Io
V2ViQ29yZTo6Q29sb3IgY29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQotICAg
IFdlYkNvcmU6OkNvbG9yIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dy
b3VuZENvbG9yOyB9CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29yZTo6T3B0aW9u
YWxSR0JBIGNvbG9yKSB7IG1fYmFja2dyb3VuZENvbG9yID0gY29sb3I7IH0KKyAgICBXZWJDb3Jl
OjpPcHRpb25hbFJHQkEgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3Jv
dW5kQ29sb3I7IH0KIAogICAgIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2aWNl
U2NhbGVGYWN0b3IpIHsgbV9kZXZpY2VTY2FsZUZhY3RvciA9IGRldmljZVNjYWxlRmFjdG9yOyB9
CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2RldmljZVNj
YWxlRmFjdG9yOyB9CkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBt
X3JlbmRlclRyZWVTaXplOwogICAgIGZsb2F0IG1fZGV2aWNlU2NhbGVGYWN0b3I7CiAgICAgV2Vi
Q29yZTo6SW50U2l6ZSBtX3NpemU7Ci0gICAgV2ViQ29yZTo6Q29sb3IgbV9iYWNrZ3JvdW5kQ29s
b3I7CisgICAgV2ViQ29yZTo6T3B0aW9uYWxSR0JBIG1fYmFja2dyb3VuZENvbG9yOwogfTsKIAog
Y2xhc3MgVmlld1NuYXBzaG90U3RvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XZWJDb2xvclBpY2tlck1hYy5oCmluZGV4IGNmMmY2ZTg2MDI1NTYyN2QxNDhlOGI3Y2U1
NjNlMjY5NTQ2NjM3ZTEuLmIzZTNmMDk0YzRjM2Y1ZTE2OTkxMjE4ZWI1ODMwNTU1Y2YzZWRjNjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJN
YWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2VyTWFj
LmgKQEAgLTQyLDcgKzQyLDcgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLWNsYXNzIENvbG9yOworY2xhc3MgT3B0aW9uYWxSR0JBOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYwLDE3ICs2MCwxNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
ICAgICAKIGNsYXNzIFdlYkNvbG9yUGlja2VyTWFjIDogcHVibGljIFdlYkNvbG9yUGlja2VyIHsK
IHB1YmxpYzogICAgICAgIAotICAgIHN0YXRpYyBSZWY8V2ViQ29sb3JQaWNrZXJNYWM+IGNyZWF0
ZShXZWJDb2xvclBpY2tlcjo6Q2xpZW50KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiwgV0tWaWV3Kik7CisgICAgc3RhdGljIFJlZjxXZWJDb2xvclBpY2tl
ck1hYz4gY3JlYXRlKFdlYkNvbG9yUGlja2VyOjpDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpPcHRp
b25hbFJHQkEmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV0tWaWV3Kik7CiAgICAgfldlYkNv
bG9yUGlja2VyTWFjKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5kUGlja2VyKCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3Im
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbG9yUGlja2VyKGNvbnN0IFdlYkNv
cmU6OkNvbG9yJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkQ29sb3Io
Y29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IHNob3dDb2xvclBpY2tlcihjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmKSBvdmVycmlkZTsK
ICAgICAKLSAgICB2b2lkIGRpZENob29zZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7Cisg
ICAgdm9pZCBkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmKTsKIAog
cHJpdmF0ZToKLSAgICBXZWJDb2xvclBpY2tlck1hYyhXZWJDb2xvclBpY2tlcjo6Q2xpZW50Kiwg
Y29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV0tWaWV3Kik7
CisgICAgV2ViQ29sb3JQaWNrZXJNYWMoV2ViQ29sb3JQaWNrZXI6OkNsaWVudCosIGNvbnN0IFdl
YkNvcmU6Ok9wdGlvbmFsUkdCQSYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXS1ZpZXcqKTsK
ICAgICBSZXRhaW5QdHI8TlNPYmplY3Q8V0tDb2xvclBpY2tlclVJTWFjPiA+IG1fY29sb3JQaWNr
ZXJVSTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2Vi
Q29sb3JQaWNrZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbG9y
UGlja2VyTWFjLm1tCmluZGV4IDI2YWM2OWZlZDY2OWQ5NWQ2ZTZlNWRjMTk5ZjM0ZmI3MTYxZThh
ZjcuLjhhMDAyMzkzOTAyM2IzNTJjMjBhZDBhYmY5ODdlMDEyMWI2NzEwMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbQpAQCAtNzUs
NyArNzUsNyBAQCBAZW5kCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZWY8V2ViQ29sb3JQaWNr
ZXJNYWM+IFdlYkNvbG9yUGlja2VyTWFjOjpjcmVhdGUoV2ViQ29sb3JQaWNrZXI6OkNsaWVudCog
Y2xpZW50LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiByZWN0LCBXS1ZpZXcqIHZpZXcpCitSZWY8V2ViQ29sb3JQaWNrZXJNYWM+IFdl
YkNvbG9yUGlja2VyTWFjOjpjcmVhdGUoV2ViQ29sb3JQaWNrZXI6OkNsaWVudCogY2xpZW50LCBj
b25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgcmVjdCwgV0tWaWV3KiB2aWV3KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYkNvbG9yUGlja2VyTWFjKGNsaWVudCwgaW5pdGlhbENvbG9yLCByZWN0LCB2aWV3KSk7CiB9
CkBAIC04Niw3ICs4Niw3IEBAIFdlYkNvbG9yUGlja2VyTWFjOjp+V2ViQ29sb3JQaWNrZXJNYWMo
KQogICAgICAgICBlbmRQaWNrZXIoKTsKIH0KIAotV2ViQ29sb3JQaWNrZXJNYWM6OldlYkNvbG9y
UGlja2VyTWFjKFdlYkNvbG9yUGlja2VyOjpDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6
Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCwgV0tWaWV3
KiB2aWV3KQorV2ViQ29sb3JQaWNrZXJNYWM6OldlYkNvbG9yUGlja2VyTWFjKFdlYkNvbG9yUGlj
a2VyOjpDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJiBpbml0aWFs
Q29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QsIFdLVmlldyogdmlldykKICAgICA6
IFdlYkNvbG9yUGlja2VyKGNsaWVudCkKIHsKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUl9Q
T1BPVkVSKQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgV2ViQ29sb3JQaWNrZXJNYWM6OmVuZFBp
Y2tlcigpCiAgICAgbV9jb2xvclBpY2tlclVJID0gbmlsOwogfQogCi12b2lkIFdlYkNvbG9yUGlj
a2VyTWFjOjpzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3Zv
aWQgV2ViQ29sb3JQaWNrZXJNYWM6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6T3B0
aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICBpZiAoIW1fY2xpZW50IHx8ICFtX2NvbG9yUGlja2Vy
VUkpCiAgICAgICAgIHJldHVybjsKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFdlYkNvbG9yUGlj
a2VyTWFjOjpzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKICAg
ICBbbV9jb2xvclBpY2tlclVJIHNldENvbG9yOm5zQ29sb3IoY29sb3IpXTsKIH0KIAotdm9pZCBX
ZWJDb2xvclBpY2tlck1hYzo6ZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNv
bG9yKQordm9pZCBXZWJDb2xvclBpY2tlck1hYzo6ZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2ViQ29y
ZTo6T3B0aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICBy
ZXR1cm47CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBXZWJDb2xvclBpY2tlck1hYzo6ZGlkQ2hv
b3NlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQogICAgIG1fY2xpZW50LT5kaWRD
aG9vc2VDb2xvcihjb2xvcik7CiB9CiAKLXZvaWQgV2ViQ29sb3JQaWNrZXJNYWM6OnNob3dDb2xv
clBpY2tlcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCit2b2lkIFdlYkNvbG9yUGlja2Vy
TWFjOjpzaG93Q29sb3JQaWNrZXIoY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJiBjb2xvcikK
IHsKICAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
V2ViS2l0V2ViUGFnZS5jcHAKaW5kZXggMDkzMWNiZjAwNDc2MThlZmQwYmFmMTBmNmI1ODQ1ZjA5
YjgyYWMyMy4uNDJkNzQxNmNkMzMxMDM1ZmYwNzQzNzc1N2JhZGViNjQ0OTExYzA0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dl
YktpdFdlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcApAQCAtNDkzLDEwICs0OTMsMTAgQEAgdm9p
ZCB3ZWJraXRXZWJQYWdlRGlkUmVjZWl2ZU1lc3NhZ2UoV2ViS2l0V2ViUGFnZSogcGFnZSwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlTmEKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghc25hcHNob3RSZWN0LmlzRW1wdHko
KSkgewotICAgICAgICAgICAgICAgIENvbG9yIHNhdmVkQmFja2dyb3VuZENvbG9yOworICAgICAg
ICAgICAgICAgIE9wdGlvbmFsUkdCQSBzYXZlZEJhY2tncm91bmRDb2xvcjsKICAgICAgICAgICAg
ICAgICBpZiAodHJhbnNwYXJlbnRCYWNrZ3JvdW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIHNh
dmVkQmFja2dyb3VuZENvbG9yID0gZnJhbWVWaWV3LT5iYXNlQmFja2dyb3VuZENvbG9yKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihDb2xv
cjo6dHJhbnNwYXJlbnQpOworICAgICAgICAgICAgICAgICAgICBmcmFtZVZpZXctPnNldEJhc2VC
YWNrZ3JvdW5kQ29sb3IoT3B0aW9uYWxSR0JBOjp0cmFuc3BhcmVudCk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIHNuYXBzaG90SW1hZ2UgPSB3ZWJQYWdlLT5zY2FsZWRTbmFw
c2hvdFdpdGhPcHRpb25zKHNuYXBzaG90UmVjdCwgMSwgc25hcHNob3RPcHRpb25zIHwgU25hcHNo
b3RPcHRpb25zU2hhcmVhYmxlKTsKICAgICAgICAgICAgICAgICBpZiAodHJhbnNwYXJlbnRCYWNr
Z3JvdW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGFjODJhZDE5NTFiNjQzN2M2MDUz
YjZjNjZmMDY0MDI5ZTYwMjVhZjYuLjRkMDg5NTE5ZThhZTVhNmYzOWVmY2E1MTJjNjUyMDg4ZGEy
MzkzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTc1Nyw3ICs3NTcsNyBAQCBTdHJp
bmcgV2ViQ2hyb21lQ2xpZW50OjpnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZShjb25zdCBTdHJpbmcm
IHBhdGgpCiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLXN0ZDo6dW5pcXVlX3B0
cjxDb2xvckNob29zZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKENvbG9y
Q2hvb3NlckNsaWVudCogY2xpZW50LCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9yKQorc3RkOjp1
bmlxdWVfcHRyPENvbG9yQ2hvb3Nlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29z
ZXIoQ29sb3JDaG9vc2VyQ2xpZW50KiBjbGllbnQsIGNvbnN0IE9wdGlvbmFsUkdCQSYgaW5pdGlh
bENvbG9yKQogewogICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29sb3JDaG9vc2VyPihu
ZXcgV2ViQ29sb3JDaG9vc2VyKG1fcGFnZSwgY2xpZW50LCBpbml0aWFsQ29sb3IpKTsKIH0KQEAg
LTk4MywxMiArOTgzLDEyIEBAIFdURjo6T3B0aW9uYWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBX
ZWJDaHJvbWVDbGllbnQ6OnByZWZlcnJlZFNjcm9sbGJhck92ZXJsYXlTCiAgICAgcmV0dXJuIG1f
cGFnZS0+c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCk7IAogfQogCi1Db2xvciBXZWJDaHJvbWVDbGll
bnQ6OnVuZGVybGF5Q29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIFdlYkNocm9tZUNsaWVudDo6
dW5kZXJsYXlDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS0+dW5kZXJsYXlDb2xv
cigpOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6cGFnZUV4dGVuZGVkQmFja2dyb3VuZENv
bG9yRGlkQ2hhbmdlKENvbG9yIGJhY2tncm91bmRDb2xvcikgY29uc3QKK3ZvaWQgV2ViQ2hyb21l
Q2xpZW50OjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoT3B0aW9uYWxSR0JB
IGJhY2tncm91bmRDb2xvcikgY29uc3QKIHsKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JN
KEVGTCkKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UGFnZUV4dGVu
ZGVkQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKGJhY2tncm91bmRDb2xvcikpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKaW5kZXggYzFlZDM4NzZlODk5M2I1ZWQ3ZjRkY2JmM2EyZmQ3NTYyYzRjOTM1ZS4u
ZGNmMzZhZWFhZjRkYjRhZjQxMjc4NmU3N2Y2Y2ZiNWQ4MTAwYThmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCkBAIC0xNDksNyArMTQ5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyBn
ZW5lcmF0ZVJlcGxhY2VtZW50RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpIG92ZXJyaWRlOwogICAg
IAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OkNvbG9yQ2hvb3Nlcj4gY3JlYXRlQ29sb3JDaG9vc2VyKFdlYkNvcmU6OkNv
bG9yQ2hvb3NlckNsaWVudCosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xv
ckNob29zZXIoV2ViQ29yZTo6Q29sb3JDaG9vc2VyQ2xpZW50KiwgY29uc3QgV2ViQ29yZTo6T3B0
aW9uYWxSR0JBJikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZF
TlRTKQpAQCAtMjc1LDkgKzI3NSw5IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFdURjo6T3B0
aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBwcmVmZXJyZWRTY3JvbGxiYXJP
dmVybGF5U3R5bGUoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29sb3IgdW5k
ZXJsYXlDb2xvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgV2ViQ29yZTo6T3B0aW9u
YWxSR0JBIHVuZGVybGF5Q29sb3IoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoV2ViQ29yZTo6Q29sb3IpIGNv
bnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29s
b3JEaWRDaGFuZ2UoV2ViQ29yZTo6T3B0aW9uYWxSR0JBKSBjb25zdCBvdmVycmlkZTsKICAgICAK
ICAgICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZChib29sKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDb2xvckNob29zZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDb2xvckNob29zZXIuY3BwCmluZGV4IDE1ODU0YWVjMGI5YjFlYTRkYjg5YTI2
MDVjODkzOTY4NzllNjJiYjUuLjY2ZTdjN2NhYjI5MWVhODUzMTU0ZDI1ZGIxNTkzYzgxYWQ2YWQy
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ29sb3JDaG9vc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbG9yQ2hvb3Nlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJDb2xvckNob29zZXI6
OldlYkNvbG9yQ2hvb3NlcihXZWJQYWdlKiBwYWdlLCBDb2xvckNob29zZXJDbGllbnQqIGNsaWVu
dCwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvcikKK1dlYkNvbG9yQ2hvb3Nlcjo6V2ViQ29sb3JD
aG9vc2VyKFdlYlBhZ2UqIHBhZ2UsIENvbG9yQ2hvb3NlckNsaWVudCogY2xpZW50LCBjb25zdCBP
cHRpb25hbFJHQkEmIGluaXRpYWxDb2xvcikKICAgICA6IG1fY29sb3JDaG9vc2VyQ2xpZW50KGNs
aWVudCkKICAgICAsIG1fcGFnZShwYWdlKQogewpAQCAtNTQsNyArNTQsNyBAQCBXZWJDb2xvckNo
b29zZXI6On5XZWJDb2xvckNob29zZXIoKQogICAgIG1fcGFnZS0+c2V0QWN0aXZlQ29sb3JDaG9v
c2VyKDApOwogfQogCi12b2lkIFdlYkNvbG9yQ2hvb3Nlcjo6ZGlkQ2hvb3NlQ29sb3IoY29uc3Qg
Q29sb3ImIGNvbG9yKQordm9pZCBXZWJDb2xvckNob29zZXI6OmRpZENob29zZUNvbG9yKGNvbnN0
IE9wdGlvbmFsUkdCQSYgY29sb3IpCiB7CiAgICAgbV9jb2xvckNob29zZXJDbGllbnQtPmRpZENo
b29zZUNvbG9yKGNvbG9yKTsKIH0KQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBXZWJDb2xvckNob29z
ZXI6OmRpc2Nvbm5lY3RGcm9tUGFnZSgpCiAgICAgbV9wYWdlID0gMDsKIH0KIAotdm9pZCBXZWJD
b2xvckNob29zZXI6OnJlYXR0YWNoQ29sb3JDaG9vc2VyKGNvbnN0IENvbG9yJiBjb2xvcikKK3Zv
aWQgV2ViQ29sb3JDaG9vc2VyOjpyZWF0dGFjaENvbG9yQ2hvb3Nlcihjb25zdCBPcHRpb25hbFJH
QkEmIGNvbG9yKQogewogICAgIEFTU0VSVChtX3BhZ2UpOwogICAgIG1fcGFnZS0+c2V0QWN0aXZl
Q29sb3JDaG9vc2VyKHRoaXMpOwpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFdlYkNvbG9yQ2hvb3Nl
cjo6cmVhdHRhY2hDb2xvckNob29zZXIoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2hvd0NvbG9yUGlja2VyKGNvbG9yLCBtX2NvbG9yQ2hvb3NlckNsaWVu
dC0+ZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSksIG1fcGFnZS0+cGFnZUlEKCkpOwog
fQogCi12b2lkIFdlYkNvbG9yQ2hvb3Nlcjo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBDb2xvciYg
Y29sb3IpCit2b2lkIFdlYkNvbG9yQ2hvb3Nlcjo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBPcHRp
b25hbFJHQkEmIGNvbG9yKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bG9yQ2hvb3Nlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDb2xvckNob29zZXIuaAppbmRleCAwMzk0Y2M4MmNmMmQxYjE1MWU4NzVkMWYzNmUxYWZmMWVi
YzBhNTAwLi5mOWI2MTU3YWIyNWU0ZGM5YjY4M2I0NjM3NTRhYmY0ZjFjMGI4OTFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbG9yQ2hv
b3Nlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29sb3JDaG9vc2VyLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9y
Q2hvb3Nlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDb2xvcjsKK2NsYXNzIE9w
dGlvbmFsUkdCQTsKIGNsYXNzIENvbG9yQ2hvb3NlckNsaWVudDsKIH0KIApAQCAtNDEsMTUgKzQx
LDE1IEBAIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkNvbG9yQ2hvb3NlciA6IHB1YmxpYyBX
ZWJDb3JlOjpDb2xvckNob29zZXIgewogcHVibGljOgotICAgIFdlYkNvbG9yQ2hvb3NlcihXZWJQ
YWdlKiwgV2ViQ29yZTo6Q29sb3JDaG9vc2VyQ2xpZW50KiwgY29uc3QgV2ViQ29yZTo6Q29sb3Im
KTsKKyAgICBXZWJDb2xvckNob29zZXIoV2ViUGFnZSosIFdlYkNvcmU6OkNvbG9yQ2hvb3NlckNs
aWVudCosIGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYpOwogICAgIHZpcnR1YWwgfldlYkNv
bG9yQ2hvb3NlcigpOwogCi0gICAgdm9pZCBkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpD
b2xvciYpOworICAgIHZvaWQgZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxS
R0JBJik7CiAgICAgdm9pZCBkaWRFbmRDaG9vc2VyKCk7CiAgICAgdm9pZCBkaXNjb25uZWN0RnJv
bVBhZ2UoKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWF0dGFjaENvbG9yQ2hvb3Nlcihjb25zdCBX
ZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZENv
bG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJl
YXR0YWNoQ29sb3JDaG9vc2VyKGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6Ok9wdGlv
bmFsUkdCQSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBlbmRDaG9vc2VyKCkgb3ZlcnJp
ZGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDg2
ZjNlMzhkNjAzMDY0YWMxM2Q2YjRlNTJiZjE4OTYzYTY3YWY1NjEuLmYxYTFmYjg0N2I3ZTg3MWJk
YzhjM2RiNDcwYTNiZDg1OWM2Zjg1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCkBAIC0xMjg3LDcgKzEyODcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFu
c2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0g
bV9mcmFtZS0+cGFnZSgpOwogCi0gICAgQ29sb3IgYmFja2dyb3VuZENvbG9yID0gd2ViUGFnZS0+
ZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQoKSA/IENvbG9yOjp0cmFuc3BhcmVudCA6IENvbG9y
Ojp3aGl0ZTsKKyAgICBPcHRpb25hbFJHQkEgYmFja2dyb3VuZENvbG9yID0gd2ViUGFnZS0+ZHJh
d3NUcmFuc3BhcmVudEJhY2tncm91bmQoKSA/IE9wdGlvbmFsUkdCQTo6dHJhbnNwYXJlbnQgOiBP
cHRpb25hbFJHQkE6OndoaXRlOwogICAgIGJvb2wgaXNNYWluRnJhbWUgPSBtX2ZyYW1lLT5pc01h
aW5GcmFtZSgpOwogICAgIGJvb2wgaXNUcmFuc3BhcmVudCA9ICF3ZWJQYWdlLT5kcmF3c0JhY2tn
cm91bmQoKTsKICAgICBib29sIHNob3VsZFVzZUZpeGVkTGF5b3V0ID0gaXNNYWluRnJhbWUgJiYg
d2ViUGFnZS0+dXNlRml4ZWRMYXlvdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApp
bmRleCA1YTdmMTcwMGJkMTlhYmNhYTdmNzg1NmRhMmEwM2ViNmNlMjZmMWIwLi5jYWZiYmYyZGEx
ZTI4ZmZmMDY0MTViZWM4MjA4MTM5OTdkODI3ODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQ
YWludFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIHBhaW50TGF5ZXItPnNldEFuY2hv
clBvaW50KEZsb2F0UG9pbnQzRCgpKTsKICAgICBwYWludExheWVyLT5zZXRQb3NpdGlvbihyZWN0
LmxvY2F0aW9uKCkpOwogICAgIHBhaW50TGF5ZXItPnNldFNpemUocmVjdC5zaXplKCkpOwotICAg
IHBhaW50TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihDb2xvcigxLjBmLCAwLjBmLCAwLjBmLCAw
LjJmKSk7CisgICAgcGFpbnRMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKE9wdGlvbmFsUkdCQSgx
LjBmLCAwLjBmLCAwLjBmLCAwLjJmKSk7CiAKICAgICBLZXlmcmFtZVZhbHVlTGlzdCBmYWRlS2V5
ZnJhbWVzKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KTsKICAgICBmYWRlS2V5ZnJhbWVzLmluc2Vy
dChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIDEpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA0NDNhY2ViMTkzMzFhMzczOGIxOTIyN2Rh
OGNlNThiNDU5YzU1OTMxLi4zOGY0ZTA0ZGY2NDMzOTNlNDY4MTc0MWI1Y2FhNWRlZjk0ZjdjZmYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC00ODAsOSArNDgwLDkg
QEAgU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dW5pcXVlTmFtZSgpCiAgICAgcmV0dXJu
IHBhc3RlYm9hcmROYW1lOwogfQogCi1Db2xvciBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbG9y
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitPcHRpb25hbFJHQkEgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIENv
bG9yIGNvbG9yOworICAgIE9wdGlvbmFsUkdCQSBjb2xvcjsKICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkQ29sb3IocGFzdGVib2FyZE5hbWUpLCBNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkQ29sb3I6OlJlcGx5KGNvbG9y
KSwgMCk7CiAgICAgcmV0dXJuIGNvbG9yOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmgKaW5kZXggYzU4NDFhYTI5NjRkN2I0NmMyODQ0OTJmZWY0MzdlYjdjNWJlYmM3NS4uNTU1YmZl
Mjg1M2I5NDE5NDg5NjRkMzRiOWMyYjY0OWUyMjU2NjU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCkBAIC05Nyw3ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJp
bmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGxvbmcgY2hhbmdlQ291
bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBT
dHJpbmcgdW5pcXVlTmFtZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29sb3Ig
Y29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBXZWJDb3JlOjpPcHRpb25hbFJHQkEgY29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpVUkwgdXJsKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBsb25nIGFkZFR5cGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKaW5kZXggOWNjODZkNGZmYTVlNDBlMTE3YjYxZTVi
MjBlNDg2OTdkM2ViYmU5Ny4uNmEzMmQ5ZWI2MGYwNzBlZTE0OWVkNDNjNWNjNjhlMmEyMGZmOWI4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENv
bnRyb2xsZXIuY3BwCkBAIC00MzYsNyArNDM2LDcgQEAgY29uc3QgZmxvYXQgc2hhZG93Q29sb3JB
bHBoYSA9IDAuNTsKIAogdm9pZCBGaW5kQ29udHJvbGxlcjo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkm
LCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlS
ZWN0KQogewotICAgIENvbG9yIG92ZXJsYXlCYWNrZ3JvdW5kQ29sb3IoMC4xZiwgMC4xZiwgMC4x
ZiwgMC4yNWYpOworICAgIE9wdGlvbmFsUkdCQSBvdmVybGF5QmFja2dyb3VuZENvbG9yKDAuMWYs
IDAuMWYsIDAuMWYsIDAuMjVmKTsKIAogICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0cyA9IHJlY3Rz
Rm9yVGV4dE1hdGNoZXMoKTsKIApAQCAtNDQ2LDggKzQ0Niw4IEBAIHZvaWQgRmluZENvbnRyb2xs
ZXI6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRl
eHQsIGNvCiAgICAgewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoZ3JhcGhpY3NDb250ZXh0KTsKIAotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hhZG93
KEZsb2F0U2l6ZShzaGFkb3dPZmZzZXRYLCBzaGFkb3dPZmZzZXRZKSwgc2hhZG93Qmx1clJhZGl1
cywgQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgc2hhZG93Q29sb3JBbHBoYSksIENvbG9yU3BhY2VT
UkdCKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUs
IENvbG9yU3BhY2VTUkdCKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNoYWRvdyhGbG9h
dFNpemUoc2hhZG93T2Zmc2V0WCwgc2hhZG93T2Zmc2V0WSksIHNoYWRvd0JsdXJSYWRpdXMsIE9w
dGlvbmFsUkdCQSgwLjBmLCAwLjBmLCAwLjBmLCBzaGFkb3dDb2xvckFscGhhKSwgQ29sb3JTcGFj
ZVNSR0IpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKE9wdGlvbmFsUkdC
QTo6d2hpdGUsIENvbG9yU3BhY2VTUkdCKTsKIAogICAgICAgICAvLyBEcmF3IHdoaXRlIGZyYW1l
cyBhcm91bmQgdGhlIGhvbGVzLgogICAgICAgICBmb3IgKGF1dG8mIHJlY3QgOiByZWN0cykgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXgg
ZjE4ZGU1MTZhMjk1ZDFhOWRlODllNGUzOTBkYmE1OWNhMjhiYzAxMy4uOTcxOWRiNzBhNDUzMWYw
ZDNmYTljMjM2ZTk5NzhjMGE4YjEzMjRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC02MjMsNyArNjIzLDcgQEAgYm9vbCBXZWJGcmFt
ZTo6Z2V0RG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoZG91YmxlKiByZWQsIGRvdWJsZSogZ3JlZW4s
IGRvdWJsZSogYmwKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IENvbG9yIGJnQ29sb3IgPSB2aWV3LT5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpOworICAgIE9w
dGlvbmFsUkdCQSBiZ0NvbG9yID0gdmlldy0+ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKTsKICAg
ICBpZiAoIWJnQ29sb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkYjc3ZDEw
ODU5N2U1NjE3ZjkwZTdhNjk4ZDFmNjgzNzYwM2E5ZDA0Li5iYzNiYzQxNzRlMGIzNzQyZmE4NmJi
YWUyYmNlYWYxZDdmMzZmMWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0zMzgsNyArMzM4LDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
CiAgICAgLCBtX3ZvbGF0aWxpdHlUaW1lcigqdGhpcywgJldlYlBhZ2U6OnZvbGF0aWxpdHlUaW1l
ckZpcmVkKQogI2VuZGlmCiAgICAgLCBtX2luc3BlY3RvckNsaWVudCgwKQotICAgICwgbV9iYWNr
Z3JvdW5kQ29sb3IoQ29sb3I6OndoaXRlKQorICAgICwgbV9iYWNrZ3JvdW5kQ29sb3IoT3B0aW9u
YWxSR0JBOjp3aGl0ZSkKICAgICAsIG1fbWF4aW11bVJlbmRlcmluZ1N1cHByZXNzaW9uVG9rZW4o
MCkKICAgICAsIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yKERvTm90UGluKQogICAgICwgbV91c2VB
c3luY1Njcm9sbGluZyhmYWxzZSkKQEAgLTE3NTEsOCArMTc1MSw4IEBAIFBhc3NSZWZQdHI8V2Vi
SW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0
IEludFNpemUmCiAKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5iaXRtYXAo
KS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKLSAgICBDb2xvciBkb2N1bWVudEJhY2tncm91
bmRDb2xvciA9IGZyYW1lVmlldy0+ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKTsKLSAgICBDb2xv
ciBiYWNrZ3JvdW5kQ29sb3IgPSAoY29yZUZyYW1lLT5zZXR0aW5ncygpLmJhY2tncm91bmRTaG91
bGRFeHRlbmRCZXlvbmRQYWdlKCkgJiYgZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgp
KSA/IGRvY3VtZW50QmFja2dyb3VuZENvbG9yIDogZnJhbWVWaWV3LT5iYXNlQmFja2dyb3VuZENv
bG9yKCk7CisgICAgT3B0aW9uYWxSR0JBIGRvY3VtZW50QmFja2dyb3VuZENvbG9yID0gZnJhbWVW
aWV3LT5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpOworICAgIE9wdGlvbmFsUkdCQSBiYWNrZ3Jv
dW5kQ29sb3IgPSAoY29yZUZyYW1lLT5zZXR0aW5ncygpLmJhY2tncm91bmRTaG91bGRFeHRlbmRC
ZXlvbmRQYWdlKCkgJiYgZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKSA/IGRvY3Vt
ZW50QmFja2dyb3VuZENvbG9yIDogZnJhbWVWaWV3LT5iYXNlQmFja2dyb3VuZENvbG9yKCk7CiAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5maWxsUmVjdChJbnRSZWN0KEludFBvaW50KCksIGJpdG1hcFNp
emUpLCBiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgaWYgKCEo
b3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVEZXZpY2VTY2FsZUZhY3RvcikpIHsKQEAg
LTE3NzYsNyArMTc3Niw3IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90
QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmCiAKICAgICBpZiAob3B0
aW9ucyAmIFNuYXBzaG90T3B0aW9uc1BhaW50U2VsZWN0aW9uUmVjdGFuZ2xlKSB7CiAgICAgICAg
IEZsb2F0UmVjdCBzZWxlY3Rpb25SZWN0YW5nbGUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCkt
PnNlbGVjdGlvbigpLnNlbGVjdGlvbkJvdW5kcygpOwotICAgICAgICBncmFwaGljc0NvbnRleHQt
PnNldFN0cm9rZUNvbG9yKENvbG9yKDB4RkYsIDAsIDApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRTdHJva2VDb2xvcihPcHRpb25hbFJHQkEoMHhG
RiwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBncmFwaGljc0NvbnRleHQt
PnN0cm9rZVJlY3Qoc2VsZWN0aW9uUmVjdGFuZ2xlLCAxKTsKICAgICB9CiAgICAgCkBAIC0xODI0
LDggKzE4MjQsOCBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdE5vZGUo
V2ViQ29yZTo6Tm9kZSYgbm9kZSwgU25hcHNob3RPcHRpb25zCiAgICAgZ3JhcGhpY3NDb250ZXh0
LT5zY2FsZShGbG9hdFNpemUoc2NhbGVGYWN0b3IsIHNjYWxlRmFjdG9yKSk7CiAgICAgZ3JhcGhp
Y3NDb250ZXh0LT50cmFuc2xhdGUoLXNuYXBzaG90UmVjdC54KCksIC1zbmFwc2hvdFJlY3QueSgp
KTsKIAotICAgIENvbG9yIHNhdmVkQmFja2dyb3VuZENvbG9yID0gZnJhbWVWaWV3LT5iYXNlQmFj
a2dyb3VuZENvbG9yKCk7Ci0gICAgZnJhbWVWaWV3LT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKENv
bG9yOjp0cmFuc3BhcmVudCk7CisgICAgT3B0aW9uYWxSR0JBIHNhdmVkQmFja2dyb3VuZENvbG9y
ID0gZnJhbWVWaWV3LT5iYXNlQmFja2dyb3VuZENvbG9yKCk7CisgICAgZnJhbWVWaWV3LT5zZXRC
YXNlQmFja2dyb3VuZENvbG9yKE9wdGlvbmFsUkdCQTo6dHJhbnNwYXJlbnQpOwogICAgIGZyYW1l
Vmlldy0+c2V0Tm9kZVRvRHJhdygmbm9kZSk7CiAKICAgICBmcmFtZVZpZXctPnBhaW50Q29udGVu
dHNGb3JTbmFwc2hvdChncmFwaGljc0NvbnRleHQuZ2V0KCksIHNuYXBzaG90UmVjdCwgRnJhbWVW
aWV3OjpFeGNsdWRlU2VsZWN0aW9uLCBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOwpA
QCAtMjI5MSw3ICsyMjkxLDcgQEAgdm9pZCBXZWJQYWdlOjpzZXREcmF3c1RyYW5zcGFyZW50QmFj
a2dyb3VuZChib29sIGRyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKQogCiAgICAgbV9kcmF3c1Ry
YW5zcGFyZW50QmFja2dyb3VuZCA9IGRyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kOwogCi0gICAg
Q29sb3IgYmFja2dyb3VuZENvbG9yID0gZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQgPyBDb2xv
cjo6dHJhbnNwYXJlbnQgOiBDb2xvcjo6d2hpdGU7CisgICAgT3B0aW9uYWxSR0JBIGJhY2tncm91
bmRDb2xvciA9IGRyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kID8gT3B0aW9uYWxSR0JBOjp0cmFu
c3BhcmVudCA6IE9wdGlvbmFsUkdCQTo6d2hpdGU7CiAgICAgZm9yIChGcmFtZSogY29yZUZyYW1l
ID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOyBjb3JlRnJhbWU7IGNvcmVGcmFtZSA9IGNvcmVG
cmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZp
ZXcgPSBjb3JlRnJhbWUtPnZpZXcoKSkKICAgICAgICAgICAgIHZpZXctPnNldEJhc2VCYWNrZ3Jv
dW5kQ29sb3IoYmFja2dyb3VuZENvbG9yKTsKQEAgLTMyNjYsNyArMzI2Niw3IEBAIHZvaWQgV2Vi
UGFnZTo6ZGlkRW5kQ29sb3JQaWNrZXIoKQogICAgIG1fYWN0aXZlQ29sb3JDaG9vc2VyLT5kaWRF
bmRDaG9vc2VyKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2Vi
Q29yZTo6Q29sb3ImIGNvbG9yKQordm9pZCBXZWJQYWdlOjpkaWRDaG9vc2VDb2xvcihjb25zdCBX
ZWJDb3JlOjpPcHRpb25hbFJHQkEmIGNvbG9yKQogewogICAgIG1fYWN0aXZlQ29sb3JDaG9vc2Vy
LT5kaWRDaG9vc2VDb2xvcihjb2xvcik7CiB9CkBAIC00MTUyLDcgKzQxNTIsNyBAQCB2b2lkIFdl
YlBhZ2U6OnNldENvbXBvc2l0aW9uRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9u
U3RyaW5nLCB1aW50NjRfdAogICAgICAgICByZXR1cm47CiAKICAgICBWZWN0b3I8Q29tcG9zaXRp
b25VbmRlcmxpbmU+IHVuZGVybGluZXM7Ci0gICAgdW5kZXJsaW5lcy5hcHBlbmQoQ29tcG9zaXRp
b25VbmRlcmxpbmUoMCwgY29tcG9zaXRpb25TdHJpbmcubGVuZ3RoKCksIENvbG9yKENvbG9yOjpi
bGFjayksIGZhbHNlKSk7CisgICAgdW5kZXJsaW5lcy5hcHBlbmQoQ29tcG9zaXRpb25VbmRlcmxp
bmUoMCwgY29tcG9zaXRpb25TdHJpbmcubGVuZ3RoKCksIE9wdGlvbmFsUkdCQShPcHRpb25hbFJH
QkE6OmJsYWNrKSwgZmFsc2UpKTsKICAgICBmcmFtZS5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbihj
b21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5lcywgZnJvbSwgZnJvbSArIGxlbmd0aCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGQyNDBi
M2E5ODE0MzBjMDhhNDE2NGRhMGEzYTc3OTc1ZmM2ZjMzNzMuLmFkMWI2OTQ2YzkzOWM5NzhmNmRh
OWNiMzc5MmVmMTRkOWVjOWMyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaApAQCAtMjc4LDcgKzI3OCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKICAgICBXZWJDb2xvckNob29zZXIqIGFjdGl2ZUNvbG9yQ2hvb3Nlcigp
IGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlQ29sb3JDaG9vc2VyOyB9CiAgICAgdm9pZCBzZXRBY3Rp
dmVDb2xvckNob29zZXIoV2ViQ29sb3JDaG9vc2VyKik7Ci0gICAgdm9pZCBkaWRDaG9vc2VDb2xv
cihjb25zdCBXZWJDb3JlOjpDb2xvciYpOworICAgIHZvaWQgZGlkQ2hvb3NlQ29sb3IoY29uc3Qg
V2ViQ29yZTo6T3B0aW9uYWxSR0JBJik7CiAgICAgdm9pZCBkaWRFbmRDb2xvclBpY2tlcigpOwog
I2VuZGlmCiAKQEAgLTM5Niw4ICszOTYsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBkcmF3c0JhY2tn
cm91bmQoKSBjb25zdCB7IHJldHVybiBtX2RyYXdzQmFja2dyb3VuZDsgfQogICAgIGJvb2wgZHJh
d3NUcmFuc3BhcmVudEJhY2tncm91bmQoKSBjb25zdCB7IHJldHVybiBtX2RyYXdzVHJhbnNwYXJl
bnRCYWNrZ3JvdW5kOyB9CiAKLSAgICB2b2lkIHNldFVuZGVybGF5Q29sb3IoY29uc3QgV2ViQ29y
ZTo6Q29sb3ImIGNvbG9yKSB7IG1fdW5kZXJsYXlDb2xvciA9IGNvbG9yOyB9Ci0gICAgV2ViQ29y
ZTo6Q29sb3IgdW5kZXJsYXlDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJsYXlDb2xvcjsg
fQorICAgIHZvaWQgc2V0VW5kZXJsYXlDb2xvcihjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEm
IGNvbG9yKSB7IG1fdW5kZXJsYXlDb2xvciA9IGNvbG9yOyB9CisgICAgV2ViQ29yZTo6T3B0aW9u
YWxSR0JBIHVuZGVybGF5Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3VuZGVybGF5Q29sb3I7IH0K
IAogICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKICAgICB2b2lkIHN0b3BMb2FkaW5nRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCk7CkBAIC0xMTg3LDcgKzExODcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9kcmF3c0JhY2tncm91bmQ7CiAgICAgYm9vbCBtX2RyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5k
OwogCi0gICAgV2ViQ29yZTo6Q29sb3IgbV91bmRlcmxheUNvbG9yOworICAgIFdlYkNvcmU6Ok9w
dGlvbmFsUkdCQSBtX3VuZGVybGF5Q29sb3I7CiAKICAgICBib29sIG1faXNJblJlZG87CiAgICAg
Ym9vbCBtX2lzQ2xvc2VkOwpAQCAtMTM4NCw3ICsxMzg0LDcgQEAgcHJpdmF0ZToKICAgICBXZWJJ
bnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50OwogCiAgICAgSGFzaFNldDxTdHJpbmcs
IENhc2VGb2xkaW5nSGFzaD4gbV9taW1lVHlwZXNXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyczsK
LSAgICBXZWJDb3JlOjpDb2xvciBtX2JhY2tncm91bmRDb2xvcjsKKyAgICBXZWJDb3JlOjpPcHRp
b25hbFJHQkEgbV9iYWNrZ3JvdW5kQ29sb3I7CiAKICAgICBIYXNoU2V0PHVuc2lnbmVkPiBtX2Fj
dGl2ZVJlbmRlcmluZ1N1cHByZXNzaW9uVG9rZW5zOwogICAgIHVuc2lnbmVkIG1fbWF4aW11bVJl
bmRlcmluZ1N1cHByZXNzaW9uVG9rZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDAwYWI0ZmQ1YWMzYTNlM2Y1
YzdkNDRjNTk5NmFlMjE1M2ZhYmU0ZDUuLmRjMGQ3NjBjM2ZkMzgxYzI1NTdmNDlkMTRmMDU0MDFk
NDQ5MGJkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zMiw3ICszMiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2UgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgU2V0VG9wQ29udGVudEluc2V0KGZsb2F0IGNvbnRl
bnRJbnNldCkKIAotICAgIFNldFVuZGVybGF5Q29sb3IoV2ViQ29yZTo6Q29sb3IgY29sb3IpCisg
ICAgU2V0VW5kZXJsYXlDb2xvcihXZWJDb3JlOjpPcHRpb25hbFJHQkEgY29sb3IpCiAKICAgICBW
aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpCiAgICAgVmlld1dpbGxFbmRMaXZlUmVzaXplKCkKQEAg
LTExMiw3ICsxMTIsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKIAog
I2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgIERpZEVuZENvbG9yUGlja2VyKCkKLSAg
ICBEaWRDaG9vc2VDb2xvcihXZWJDb3JlOjpDb2xvciBjb2xvcikKKyAgICBEaWRDaG9vc2VDb2xv
cihXZWJDb3JlOjpPcHRpb25hbFJHQkEgY29sb3IpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KaW5kZXggZjVlODZkZjAxZmRhMTlkMmU2ZTQx
ZTFmNDA4YjhkYzMxNWI4YTI4Yy4uNDliNDk1NTQzZjA3YzZhMTJiNjZmNTk5ZjQzZjQ3ZmQzYTc5
NDMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9G
aW5kQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCkBAIC00NSw5ICs0NSw5IEBAIGNvbnN0IGludCBj
b3JuZXJSYWRpdXMgPSAzOwogY29uc3QgaW50IHRvdGFsSG9yaXpvbnRhbE1hcmdpbiA9IDI7CiBj
b25zdCBpbnQgdG90YWxWZXJ0aWNhbE1hcmdpbiA9IDE7CiAKLXN0YXRpYyBDb2xvciBoaWdobGln
aHRDb2xvcigpCitzdGF0aWMgT3B0aW9uYWxSR0JBIGhpZ2hsaWdodENvbG9yKCkKIHsKLSAgICBy
ZXR1cm4gQ29sb3IoMjU1LCAyMjgsIDU2LCAyNTUpOworICAgIHJldHVybiBPcHRpb25hbFJHQkEo
MjU1LCAyMjgsIDU2LCAyNTUpOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBh
ZjYxYjg2M2MwYmNjMzFmNjVhZTlkMjM3NjVkYWEyZGI1Y2JkZDAzLi5mODRiZjRjYTczNmViYTZi
MTVlZmNkMTQzYzIzNzIyMThkODdkZDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC02MzQsNyArNjM0LDcgQEAgdm9p
ZCBXZWJQYWdlOjpzZW5kVGFwSGlnaGxpZ2h0Rm9yTm9kZUlmTmVjZXNzYXJ5KHVpbnQ2NF90IHJl
cXVlc3RJRCwgTm9kZSogbm9kZSkKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFkczsKICAgICBp
ZiAoUmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCkpIHsKICAgICAgICAg
cmVuZGVyZXItPmFic29sdXRlUXVhZHMocXVhZHMpOwotICAgICAgICBDb2xvciBoaWdobGlnaHRD
b2xvciA9IHJlbmRlcmVyLT5zdHlsZSgpLnRhcEhpZ2hsaWdodENvbG9yKCk7CisgICAgICAgIE9w
dGlvbmFsUkdCQSBoaWdobGlnaHRDb2xvciA9IHJlbmRlcmVyLT5zdHlsZSgpLnRhcEhpZ2hsaWdo
dENvbG9yKCk7CiAgICAgICAgIGlmICghbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpLT5pc01haW5G
cmFtZSgpKSB7CiAgICAgICAgICAgICBGcmFtZVZpZXcqIHZpZXcgPSBub2RlLT5kb2N1bWVudCgp
LmZyYW1lKCktPnZpZXcoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVh
ZHMuc2l6ZSgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgKaW5kZXgg
OTZhM2ZiYjUwMWFlOWE0NDI5NmY5NmI4OGI0NDEzYmQxZjA3NjM4Ni4uM2YyMWM3YjAyMTUyMGYx
MWU1YWNlYzViNDI2NmJiZmI0MWExMmYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVt
b3RlLmgKQEAgLTkwLDE0ICs5MCwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEZy
b21WYWx1ZShmbG9hdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEZyb21WYWx1ZShj
b25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludDNEJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpDb2xvciYp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3QgV2ViQ29yZTo6
T3B0aW9uYWxSR0JBJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEZyb21WYWx1ZShj
b25zdCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb24qLCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0
eUluZGV4KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY29weUZyb21WYWx1ZUZyb20oY29u
c3QgV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVh
bCB2b2lkIHNldFRvVmFsdWUoZmxvYXQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRU
b1ZhbHVlKGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludDNEJikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6Q29s
b3ImKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBXZWJDb3Jl
OjpPcHRpb25hbFJHQkEmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VG9WYWx1ZShj
b25zdCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb24qLCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0
eUluZGV4KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY29weVRvVmFsdWVGcm9tKGNvbnN0
IFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb24mKSBvdmVycmlkZTsKIApAQCAtMTA1LDcgKzEw
NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3Rvcjxm
bG9hdD4mKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4mKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFBvaW50M0Q+Jikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
Q29sb3I+Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0
b3I8V2ViQ29yZTo6T3B0aW9uYWxSR0JBPiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb24+PiYs
IGludCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBjb3B5VmFsdWVzRnJvbShjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uJikg
b3ZlcnJpZGU7CiAKQEAgLTE0MSw3ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAg
ICAgfQogCi0gICAgICAgIEtleWZyYW1lVmFsdWUoV2ViQ29yZTo6Q29sb3IgdmFsdWUpCisgICAg
ICAgIEtleWZyYW1lVmFsdWUoV2ViQ29yZTo6T3B0aW9uYWxSR0JBIHZhbHVlKQogICAgICAgICAg
ICAgOiBrZXlUeXBlKENvbG9yS2V5VHlwZSkKICAgICAgICAgICAgICwgY29sb3IodmFsdWUpCiAg
ICAgICAgIHsKQEAgLTIwMiw3ICsyMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4g
bnVtYmVyOwogICAgICAgICB9CiAKLSAgICAgICAgV2ViQ29yZTo6Q29sb3IgY29sb3JWYWx1ZSgp
IGNvbnN0CisgICAgICAgIFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSBjb2xvclZhbHVlKCkgY29uc3QK
ICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGtleVR5cGUgPT0gQ29sb3JLZXlUeXBlKTsK
ICAgICAgICAgICAgIHJldHVybiBjb2xvcjsKQEAgLTIzMyw3ICsyMzMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIEtleWZyYW1lVHlwZSBrZXlUeXBlOwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAg
ICBmbG9hdCBudW1iZXI7Ci0gICAgICAgICAgICBXZWJDb3JlOjpDb2xvciBjb2xvcjsKKyAgICAg
ICAgICAgIFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSBjb2xvcjsKICAgICAgICAgICAgIFdlYkNvcmU6
OkZsb2F0UG9pbnQzRCBwb2ludDsKICAgICAgICAgICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4IHRyYW5zZm9ybTsKICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJl
bW90ZS5tbQppbmRleCBhOWM5NGZiZDc0YzJlOTlhYWVkYzIwOGVmYjNkMThhZDVkY2UwMTk4Li41
ZTI4Nzk4ZjRjYTlkZTY3OTIyYjIwZjQ4MGQ4NTk0Y2U3ZmMyNGJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1v
dGUubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9y
bUNBQW5pbWF0aW9uUmVtb3RlLm1tCkBAIC00ODUsNyArNDg1LDcgQEAgdm9pZCBQbGF0Zm9ybUNB
QW5pbWF0aW9uUmVtb3RlOjpzZXRGcm9tVmFsdWUoY29uc3QgRmxvYXRQb2ludDNEJiB2YWx1ZSkK
ICAgICBtX3Byb3BlcnRpZXMua2V5VmFsdWVzWzBdID0gS2V5ZnJhbWVWYWx1ZSh2YWx1ZSk7CiB9
CiAKLXZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6c2V0RnJvbVZhbHVlKGNvbnN0IENv
bG9yJiB2YWx1ZSkKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6c2V0RnJvbVZhbHVl
KGNvbnN0IE9wdGlvbmFsUkdCQSYgdmFsdWUpCiB7CiAgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAh
PSBCYXNpYykKICAgICAgICAgcmV0dXJuOwpAQCAtNTQxLDcgKzU0MSw3IEBAIHZvaWQgUGxhdGZv
cm1DQUFuaW1hdGlvblJlbW90ZTo6c2V0VG9WYWx1ZShjb25zdCBGbG9hdFBvaW50M0QmIHZhbHVl
KQogICAgIG1fcHJvcGVydGllcy5rZXlWYWx1ZXNbMV0gPSBLZXlmcmFtZVZhbHVlKHZhbHVlKTsK
IH0KIAotdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpzZXRUb1ZhbHVlKGNvbnN0IENv
bG9yJiB2YWx1ZSkKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6c2V0VG9WYWx1ZShj
b25zdCBPcHRpb25hbFJHQkEmIHZhbHVlKQogewogICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0g
QmFzaWMpCiAgICAgICAgIHJldHVybjsKQEAgLTYxNCw3ICs2MTQsNyBAQCB2b2lkIFBsYXRmb3Jt
Q0FBbmltYXRpb25SZW1vdGU6OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8RmxvYXRQb2ludDNEPiYg
dmFsdWVzKQogICAgIG1fcHJvcGVydGllcy5rZXlWYWx1ZXMgPSBXVEY6Om1vdmUoa2V5ZnJhbWVz
KTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpzZXRWYWx1ZXMoY29uc3Qg
VmVjdG9yPENvbG9yPiYgdmFsdWVzKQordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpz
ZXRWYWx1ZXMoY29uc3QgVmVjdG9yPE9wdGlvbmFsUkdCQT4mIHZhbHVlcykKIHsKICAgICBpZiAo
YW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lKQogICAgICAgICByZXR1cm47CkBAIC02ODYsNyAr
Njg2LDcgQEAgc3RhdGljIE5TT2JqZWN0KiBhbmltYXRpb25WYWx1ZUZyb21LZXlmcmFtZVZhbHVl
KGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUKICAgICAgICAgcmV0dXJuIEAoa2V5ZnJh
bWVWYWx1ZS5udW1iZXJWYWx1ZSgpKTsKICAgICAgICAgICAgIAogICAgIGNhc2UgUGxhdGZvcm1D
QUFuaW1hdGlvblJlbW90ZTo6S2V5ZnJhbWVWYWx1ZTo6Q29sb3JLZXlUeXBlOiB7Ci0gICAgICAg
IENvbG9yIGNvbG9yID0ga2V5ZnJhbWVWYWx1ZS5jb2xvclZhbHVlKCk7CisgICAgICAgIE9wdGlv
bmFsUkdCQSBjb2xvciA9IGtleWZyYW1lVmFsdWUuY29sb3JWYWx1ZSgpOwogICAgICAgICByZXR1
cm4gQFsgQChjb2xvci5yZWQoKSksIEAoY29sb3IuZ3JlZW4oKSksIEAoY29sb3IuYmx1ZSgpKSwg
QChjb2xvci5hbHBoYSgpKSBdOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3Bw
CmluZGV4IDllMWEzYTMzYjdlZjE2NTRmNDhkZTE4OTM1ZjUxNjJjMjY1ZjY2OGMuLjI3YjgzOTQw
YTM1YzEwODk4OTMyYzA2NTlhOGIyZWI2MTI5YTIzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJl
bW90ZS5jcHAKQEAgLTU4NSwxMiArNTg1LDEyIEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3Rl
OjpzZXRNYWduaWZpY2F0aW9uRmlsdGVyKEZpbHRlclR5cGUgdmFsdWUpCiAgICAgbV9wcm9wZXJ0
aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TWFn
bmlmaWNhdGlvbkZpbHRlckNoYW5nZWQpOwogfQogCi1Db2xvciBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OmJhY2tncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUGxhdGZvcm1DQUxheWVy
UmVtb3RlOjpiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogewogICAgIHJldHVybiBtX3Byb3BlcnRp
ZXMuYmFja2dyb3VuZENvbG9yOwogfQogCi12b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0
QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiB2YWx1ZSkKK3ZvaWQgUGxhdGZvcm1DQUxheWVy
UmVtb3RlOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiB2YWx1ZSkKIHsK
ICAgICBtX3Byb3BlcnRpZXMuYmFja2dyb3VuZENvbG9yID0gdmFsdWU7CiAgICAgbV9wcm9wZXJ0
aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QmFj
a2dyb3VuZENvbG9yQ2hhbmdlZCk7CkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OnNldEJvcmRlcldpZHRoKGZsb2F0IHZhbHVlKQogICAgIG1fcHJvcGVydGll
cy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJvcmRl
cldpZHRoQ2hhbmdlZCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRCb3Jk
ZXJDb2xvcihjb25zdCBDb2xvciYgdmFsdWUpCit2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
c2V0Qm9yZGVyQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiB2YWx1ZSkKIHsKICAgICBpZiAodmFs
dWUgPT0gbV9wcm9wZXJ0aWVzLmJvcmRlckNvbG9yKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXll
clJlbW90ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUuaAppbmRleCBkMGY0YzdkMGI3MzEzZDAzZDJhYjFjYmVjZjJmNWQ5ZTY4
MWI5MzQ5Li5lNDljMDQ4OTc5YzAwM2ZkMDM1MmQ3ZWMxOTE5MzAyNzkyMmIxYzE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXll
clJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxh
dGZvcm1DQUxheWVyUmVtb3RlLmgKQEAgLTExNywxMSArMTE3LDExIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0TWluaWZpY2F0aW9uRmlsdGVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
cjo6RmlsdGVyVHlwZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldE1hZ25pZmljYXRp
b25GaWx0ZXIoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpGaWx0ZXJUeXBlKSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29sb3IgYmFja2dyb3VuZENvbG9yKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3Jl
OjpDb2xvciYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgV2ViQ29yZTo6T3B0aW9uYWxSR0JBIGJh
Y2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNr
Z3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJikgb3ZlcnJpZGU7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Qm9yZGVyV2lkdGgoZmxvYXQpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRCb3JkZXJDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRCb3JkZXJDb2xvcihjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJH
QkEmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFjaXR5KGZsb2F0KSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlVGlsZWRCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmNwcAppbmRleCAwNThh
ZTJhOTkxNzZhNDRhODNjMWE4ZjhjNjQzMDdkYzcwMzUxYjYzLi5hZDNmODBmYTQyNmIyZTc4ZTcy
NzVhMGIyNjhlN2I1Y2Q2ZDljNDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVUaWxlZEJhY2tpbmcuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmc6OnNldEJvcmRlcldpZHRoKGZsb2F0IGJvcmRlcldpZHRo
KQogICAgIG1fdGlsZUNvbnRyb2xsZXItPnNldFRpbGVEZWJ1Z0JvcmRlcldpZHRoKGJvcmRlcldp
ZHRoIC8gMik7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nOjpz
ZXRCb3JkZXJDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCit2b2lkIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZVRpbGVkQmFja2luZzo6c2V0Qm9yZGVyQ29sb3IoY29uc3QgV2ViQ29yZTo6
T3B0aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICBtX3RpbGVDb250cm9sbGVyLT5zZXRUaWxlRGVi
dWdCb3JkZXJDb2xvcihjb2xvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGVUaWxlZEJhY2tpbmcuaAppbmRleCBkNWY0ZDI2MzI4YWJhNGUwY2YzNDRjZmZjMTcxMDEzZTRj
N2ExNzNmLi45Njg4N2MxYzE5MTNlODI4MTU2ZGVhY2E4MDRiNDIzYjZkYzU1ZjA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXll
clJlbW90ZVRpbGVkQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmgKQEAgLTU3LDcgKzU3
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTY2FsZShmbG9hdCkg
b3ZlcnJpZGU7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHNldEJvcmRlcldpZHRoKGZsb2F0KSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Qm9yZGVyQ29sb3IoY29uc3QgV2ViQ29yZTo6
Q29sb3ImKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Qm9yZGVyQ29sb3IoY29uc3Qg
V2ViQ29yZTo6T3B0aW9uYWxSR0JBJikgb3ZlcnJpZGU7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI+IG1fdGlsZUNvbnRyb2xsZXI7CiAgICAgbXV0YWJsZSBX
ZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJMaXN0IG1fY3VzdG9tU3VibGF5ZXJzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0KaW5kZXggZjVlYTE0ZTE4MzYwODUwNTM0MTgyYmFhOWI0NjBiNWViZDY4YTVmNS4u
YjQ2ZTQ4ZDZiOGUwNTJlZDcxYTI2YjMzMmVmZmIxYjI0Y2IyMWJiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tCkBAIC00MjcsNyArNDI3LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpkaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgIFtDQVRyYW5zYWN0
aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107CiAKICAgICBbdmlkZW9MYXllciBzZXRQb3NpdGlv
bjpDR1BvaW50TWFrZSgwLCAwKV07Ci0gICAgW3ZpZGVvTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9y
OmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OnRyYW5zcGFyZW50LCBXZWJDb3JlOjpDb2xv
clNwYWNlRGV2aWNlUkdCKV07CisgICAgW3ZpZGVvTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNh
Y2hlZENHQ29sb3IoV2ViQ29yZTo6T3B0aW9uYWxSR0JBOjp0cmFuc3BhcmVudCwgV2ViQ29yZTo6
Q29sb3JTcGFjZURldmljZVJHQildOwogCiAgICAgLy8gU2V0IGEgc2NhbGUgZmFjdG9yIGhlcmUg
dG8gbWFrZSBjb252ZXJ0UmVjdDp0b0xheWVyOm5pbCB0YWtlIHNjYWxlIGZhY3RvciBpbnRvIGFj
Y291bnQuIDxyZGFyOi8vcHJvYmxlbS8xODMxNjU0Mj4uCiAgICAgLy8gVGhpcyBzY2FsZSBmYWN0
b3IgaXMgaW52ZXJ0ZWQgaW4gdGhlIGhvc3RpbmcgcHJvY2Vzcy4KZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyODk3YmJmODg0YTA4ODFlMWE0M2Uz
YmFkNDljMmQwMGE3MWYwZDEyLi5iYjZmNDNhMDhmNjIzMzBlZjIwMjUwNzc2NjNlMDE4ODVkNjkz
ZTU3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTUtMDgtMDkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBDb2xvciB0byBPcHRpb25hbFJHQkEKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzgyMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9kby13ZWJjb3JlLXJl
bmFtZTogVXNlZCB0aGlzIHNjcmlwdCB0byBkbyB0aGUgcmVuYW1lLgorCiAyMDE1LTA4LTA3ICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0dU
S10gQW5vdGhlciBidWlsZCBmaXggYWZ0ZXIgcjE4ODE1Ny4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvZG8td2ViY29yZS1yZW5hbWUgYi9Ub29scy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1l
CmluZGV4IDA5OTk0MzJjMmEwZDk0YmQzMTdjNDAxYTM1ZWU1MzAwZDc2MDY0ZWIuLjZmMDE3NzA1
OTVhYjA2YTM4NzY4OTlhMzY3MjVmMThlYTA1ZmEyNWEgMTAwNzU1Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvZG8td2ViY29yZS1yZW5hbWUKKysrIGIvVG9vbHMvU2NyaXB0cy9kby13ZWJjb3JlLXJlbmFt
ZQpAQCAtOTgsNyArOTgsNyBAQCBzdWIgd2FudGVkCiBteSAkaXNET01UeXBlUmVuYW1lID0gMDsK
IG15ICVyZW5hbWVzID0gKAogICAgICMgUmVuYW1lcyBnbyBoZXJlIGluIHRoZSBmb3JtIG9mOgot
ICAgICJkZWxldGVBbGxWYWx1ZXMiID0+ICJkZXByZWNhdGVkRGVsZXRlQWxsVmFsdWVzIiwKKyAg
ICAiQ29sb3IiID0+ICJPcHRpb25hbFJHQkEiLAogKTsKIAogbXkgJXJlbmFtZXNDb250ZW1wbGF0
ZWRGb3JUaGVGdXR1cmUgPSAoCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258608</attachid>
            <date>2015-08-09 19:47:03 -0700</date>
            <delta_ts>2015-08-11 15:51:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147820-20150809194649.patch</filename>
            <type>text/plain</type>
            <size>740964</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTc5OGU4YWQ4YWM0YWQ3
NTM2YTcwOGFjNWU4MDBjMTYyNzgzMjViOS4uMWZkNDEyZjQ1M2Y2MTk1NWE5N2JmMTEwNjk1ODli
YmI0YTc0NzMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3NCBAQAorMjAxNS0wOC0wOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIENvbG9yIHRvIE9w
dGlvbmFsUkdCQQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBpcyB0aGUgbmV4dCBzdGVwIGluIHJhdGlvbmFsaXppbmcgaG93IFdlYkNvcmUgaGFu
ZGxlcyBjb2xvciBzcGFjZXMuCisgICAgICAgIFdlIGFyZSBhZGRpbmcgYSBuZXcgQ29sb3IgY2xh
c3MgdGhhdCB3aWxsIGNvbnRhaW4gY29sb3IgdmFsdWVzIGFsb25nIHdpdGgKKyAgICAgICAgdGhl
IGNvbG9yIHNwYWNlIGluZm9ybWF0aW9uLiBUaGUgb2xkIGNsYXNzIHRoYXQgc2ltcGx5IGNvbnRh
aW5zIGNvbG9yIHZhbHVlcworICAgICAgICB3aXRoIDgtYml0IHJlZCwgZ3JlZW4sIGJsdWUsIGFu
ZCBhbHBoYSBpcyBnb2luZyB0byBiZSBuYW1lZCBSR0JBLiBUaGUgZXhpc3RpbmcKKyAgICAgICAg
Y2xhc3MgaXMgbGlrZSB0aGF0LCBidXQgd2l0aCBhbiAiaW52YWxpZCIgc3RhdGUsIHNvIGl0cyBu
YW1lIGlzIE9wdGlvbmFsUkdCQS4KKyAgICAgICAgTmV4dCBzdGVwcyBhcmUgdG8gYWRkIHRoZSBu
ZXcgUkdCQSBjbGFzcyBhbmQgdGhlIG5ldyBDb2xvciBjbGFzcywgYW5kIHN0YXJ0CisgICAgICAg
IHVzaW5nIHRoZW0gYXQgbW9zdCBjYWxsIHNpdGVzLiBEdXJpbmcgdGhpcyByZWZhY3RvcmluZyB3
ZSBhbHNvIHBsYW4gdG8gaW1wcm92ZQorICAgICAgICB0aGUgY2xhcml0eSBvZiB2YXJpb3VzIGZ1
bmN0aW9ucyBpbiB0aGUgbGVnYWN5IGNsYXNzLiBPbmNlIHRoZSB3b3JrIGlzIGVudGlyZWx5Cisg
ICAgICAgIGRvbmUsIE9wdGlvbmFsUkdCQSBzaG91bGQgYmUgcmVtb3ZlZCBlbnRpcmVseSBhbmQg
YW55IGNhbGwgc2l0ZXMgdGhhdCBzdGlsbCBuZWVkCisgICAgICAgIGl0IGNhbiB1c2UgT3B0aW9u
YWw8UkdCQT4uCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpjb2xv
clZhbHVlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0YVRhYmxlKToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5j
cHA6CisgICAgICAgIChnZXRBdHRyaWJ1dGVTZXRGb3JBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHA6
CisgICAgICAgIChnZXRJbnRlcmZhY2VNYXNrRnJvbU9iamVjdCk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06CisgICAgICAg
IChBWEF0dHJpYnV0ZVN0cmluZ1NldFN0eWxlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAgKEFYQXR0cmli
dXRlU3RyaW5nU2V0U3R5bGUpOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3Vy
cmVudENvbG9yT3JWYWxpZENvbG9yKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmg6CisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aW50ZXJwb2xhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRW
YWx1ZTo6YWRkU3RvcHMpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmg6CisgICAg
ICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBh
cnNlU3lzdGVtQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxT
aG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6ZmFzdFBhcnNlQ29sb3JJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmZhc3RQYXJzZUNvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcik6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpmb3JtYXRO
dW1iZXJGb3JDdXN0b21DU1NUZXh0KToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVQb29sLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Q1NTVmFsdWVQb29sKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6Y3JlYXRlQ29sb3JWYWx1ZSk6CisgICAgICAgICogY3Nz
L1JHQkNvbG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSR0JDb2xvcjo6Y29sb3IpOgorICAgICAg
ICAqIGNzcy9TVkdDU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZVNWR1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VTVkdQYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlU1ZHQ29sb3IpOgorICAgICAg
ICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRhcEhpZ2hsaWdodENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNWR0NvbG9yKToKKyAgICAgICAg
KiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0U3ZnU2hhZG93KToKKyAgICAgICAg
KiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVy
dGllczo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNv
bHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb2xvckZvckNTU1ZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMpOgorICAg
ICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpTdGF0ZTo6YmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKiBjc3MvbWFrZXByb3AucGw6
CisgICAgICAgIChnZW5lcmF0ZUluaGVyaXRWYWx1ZVNldHRlcik6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVzZXRMaW5rQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnJlc2V0VmlzaXRlZExpbmtDb2xvcik6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VGV4dENvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0ZXh0Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmxpbmtDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dmlzaXRlZExp
bmtDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWN0aXZlTGlua0NvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRMaW5rQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnNldFZpc2l0ZWRMaW5rQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnNldEFjdGl2ZUxpbmtDb2xvcik6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5n
U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3NzVmFsdWVUb1JHQkEpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVDaGFuZ2U6OmV4dHJhY3RUZXh0U3R5bGVzKToKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU6OkNv
bXBvc2l0aW9uVW5kZXJsaW5lKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRpc2FwcGVhcnNJbnRvQmFja2dyb3VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpDYXJldEJhc2U6OnBhaW50Q2FyZXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246OnNldENhcmV0Q29sb3IpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAg
ICAgIChfcGxhdGZvcm1Db2xvcik6CisgICAgICAgIChub3JtYWxpemVkQ29sb3IpOgorICAgICAg
ICAoSFRNTENvbnZlcnRlckNhY2hlczo6Y29sb3JQcm9wZXJ0eVZhbHVlRm9yTm9kZSk6CisgICAg
ICAgIChIVE1MQ29udmVydGVyOjpfY29sb3JGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5n
L21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmZvbnRBdHRyaWJ1
dGVzRm9yU2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZENvbG9yU3RyaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbG9ySW5wdXRUeXBlOjp2YWx1ZUFzQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29s
b3JJbnB1dFR5cGU6OmRpZENob29zZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5w
dXRUeXBlOjpjdXJyZW50Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6
OnN1Z2dlc3Rpb25zKToKKyAgICAgICAgKiBodG1sL0NvbG9ySW5wdXRUeXBlLmg6CisgICAgICAg
ICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9yU3Ry
aW5nV2l0aENyYXp5TGVnYWN5UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6
OmFkZEhUTUxDb2xvclRvU3R5bGUpOgorICAgICAgICAqIGh0bWwvSFRNTEhSRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSFJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50
YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3RDb2xvckluQ29sb3JDaG9v
c2VyKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9DYW52YXNHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNHcmFk
aWVudDo6YWRkQ29sb3JTdG9wKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpTdGF0ZTo6U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzaGFkb3dDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmNsZWFyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmNsZWFyU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6YXBwbHlTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50Q29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmFwcGx5U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmNvbG9yKToK
KyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbmZpZ0NvbG9yKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9y
Q2hvb3Nlcik6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01lZGlhQUYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJl
bmNlc01lZGlhQUY6OmNhcHRpb25zV2luZG93Q1NTKToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0JhY2tncm91bmRDU1MpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zVGV4dENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpj
YXB0aW9uc1RleHRDb2xvckNTUyk6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZl
cmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNFZGdlQ29sb3JGb3JUZXh0Q29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNzc1Byb3BlcnR5V2l0aFRl
eHRFZGdlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUY6OmNvbG9yUHJvcGVydHlDU1MpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zVGV4dEVkZ2VDU1MpOgorICAgICAgICAqIHBhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmNyZWF0ZUNvbG9yQ2hvb3Nlcik6CisgICAg
ICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAg
ICAgICAqIHBhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVn
aW9uT3ZlcmxheTo6UmVnaW9uT3ZlcmxheSk6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJh
Zyk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6
Y3JlYXRlVmlldyk6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvRnJh
bWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3ROb2RlKToKKyAg
ICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OkZyYW1lVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlY2FsY3VsYXRlU2Ny
b2xsYmFyT3ZlcmxheVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YmFzZUJh
Y2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldEJhc2VCYWNr
Z3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVCYWNrZ3Jv
dW5kUmVjdXJzaXZlbHkpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVUaWxl
c0ZvckV4dGVuZGVkQmFja2dyb3VuZE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
Ojpkb2N1bWVudEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICog
cGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBhZ2VFeHRlbmRlZEJhY2tn
cm91bmRDb2xvcik6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9QYWdl
T3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlT3ZlcmxheTo6UGFnZU92ZXJsYXkp
OgorICAgICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBy
aW50Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKToKKyAgICAgICAgKiBwYWdl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpi
bGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVyQ29sb3I6OlByb3Bl
cnR5V3JhcHBlckNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlckNvbG9y
OjpibGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpzaGFkb3dGb3JCbGVuZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcjo6UHJvcGVydHlXcmFw
cGVyTWF5YmVJbnZhbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVy
TWF5YmVJbnZhbGlkQ29sb3I6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVdy
YXBwZXJNYXliZUludmFsaWRDb2xvcjo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVy
dHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3I6OlByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZl
Y3RlZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclNWR1BhaW50OjpQ
cm9wZXJ0eVdyYXBwZXJTVkdQYWludCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVdyYXBw
ZXJTVkdQYWludDo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclNW
R1BhaW50OjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vQ29sb3JDaG9vc2VyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDb2xvckNob29zZXI6OnJlYXR0YWNoQ29sb3JDaG9vc2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbG9yQ2hvb3Nlcjo6c2V0U2VsZWN0ZWRDb2xvcik6CisgICAgICAgICog
cGxhdGZvcm0vQ29sb3JDaG9vc2VyQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0Rh
dGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qb3B1
cE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qb3B1cE1lbnVTdHlsZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6UG9wdXBNZW51U3R5bGU6OlBvcHVwTWVudVN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBvcHVwTWVudVN0eWxlOjpmb3JlZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6UG9wdXBNZW51U3R5bGU6OmJhY2tncm91bmRDb2xvcik6CisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjpk
ZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWU6OnNldFVwT3ZlcmhhbmdBcmVhc0xheWVyQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ29tcG9zaXRlOjpwYWludFNjcm9sbENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9UaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6ZHJhd05hbWVkSW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL1RoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpUaGVt
ZTo6c2VsZWN0aW9uQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OnRleHRTZWFyY2hI
aWdobGlnaHRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6c3lzdGVtQ29sb3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGhlbWVDb2NvYTo6ZHJhd05hbWVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9E
cmFnRGF0YUVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNDb2xvcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lRWZsOjppc0NvbnRyb2xTdHlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVFZmw6OnBhaW50VGhlbWVQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxD
b2xvcnNGcm9tRWRqZUNsYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpS
ZW5kZXJUaGVtZUVmbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGxhdGZv
cm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVFZmw6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9u
Rm9yZWdyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpwbGF0
Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lRWZsOjpwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c29saWRDb2xv
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcHRpb25h
bFJHQkE6OnBhcnNlSGV4Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6ZGlmZmVyZW5jZVNxdWFy
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6T3B0aW9uYWxSR0JBOjpPcHRpb25hbFJHQkEpOgorICAg
ICAgICAoV2ViQ29yZTo6T3B0aW9uYWxSR0JBOjpzZXJpYWxpemVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wdGlvbmFsUkdCQTo6bmFtZUZvclJlbmRlclRyZWVBc1RleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6T3B0aW9uYWxSR0JBOjpzZXROYW1lZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
dGlvbmFsUkdCQTo6bGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6T3B0aW9uYWxSR0JBOjpkYXJr
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wdGlvbmFsUkdCQTo6aXNEYXJrKToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wdGlvbmFsUkdCQTo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6T3B0aW9uYWxS
R0JBOjpibGVuZFdpdGhXaGl0ZSk6CisgICAgICAgIChXZWJDb3JlOjpPcHRpb25hbFJHQkE6Omdl
dFJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6T3B0aW9uYWxSR0JBOjpnZXRIU0wpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IpOgorICAgICAgICAoV2ViQ29y
ZTo6cHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OnBhcnNlSGV4Q29sb3IpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q29sb3I6OkNvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbG9yOjpzZXJpYWxpemVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpu
YW1lRm9yUmVuZGVyVHJlZUFzVGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb2xv
cjo6c2V0TmFtZWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6bGln
aHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmRhcmspOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmlzRGFyayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDb2xvcjo6YmxlbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmJs
ZW5kV2l0aFdoaXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpnZXRSR0JB
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpnZXRIU0wpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpP
cHRpb25hbFJHQkE6Ok9wdGlvbmFsUkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpPcHRpb25hbFJH
QkE6OmNyZWF0ZVVuY2hlY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OkNv
bG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpjcmVhdGVVbmNoZWNrZWQp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjphZGRDb2xvclN0b3ApOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYWRpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d1JhaXNlZEVsbGlwc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRT
dHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRv
dyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldExlZ2FjeVNoYWRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmZpbGxDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpzZXRC
YWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Z2V0RGVi
dWdCb3JkZXJJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnVwZGF0ZURl
YnVnSW5kaWNhdG9ycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ci5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6YmFja2dyb3VuZENvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnNldERlYnVnQmFja2dyb3VuZENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnNldERlYnVnQm9yZGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OnNvbGlkQ29sb3IpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpmb3JlZ3JvdW5kQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OmJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6aGlnaGxpZ2h0Q29sb3IpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1
ZmZlcjo6c2V0Q2FjaGVkU2hhZG93VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hC
dWZmZXI6OnNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd0JsdXI6OlNoYWRvd0JsdXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6c2V0
U2hhZG93VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGls
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhU
aWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRo
VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmJlZ2luU2hhZG93TGF5ZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJMYXllcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDQTo6c2V0QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb1NvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldExheWVyRGVidWdCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGVudHNMYXll
ckRlYnVnQm9yZGVyQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Y2xvbmVMYXllckRlYnVnQm9y
ZGVyQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVEZWJ1
Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRl
bnRzQ29sb3JMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldERl
YnVnQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
Z2V0RGVidWdCb3JkZXJJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
c2V0RGVidWdCb3JkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmlt
YXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6c2V0VGlsZURlYnVnQm9yZGVyQ29sb3Ip
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRpbGVDb3ZlcmFnZU1hcDo6VGlsZUNvdmVyYWdlTWFwKToKKyAgICAgICAgKFdl
YkNvcmU6OlRpbGVDb3ZlcmFnZU1hcDo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9UaWxlR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlR3JpZDo6dXBkYXRl
VGlsZUxheWVyUHJvcGVydGllcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLm1tOgorICAgICAgICAoUGxhdGZv
cm1DQUFuaW1hdGlvbkNvY29hOjpzZXRGcm9tVmFsdWUpOgorICAgICAgICAoUGxhdGZvcm1DQUFu
aW1hdGlvbkNvY29hOjpzZXRUb1ZhbHVlKToKKyAgICAgICAgKFBsYXRmb3JtQ0FBbmltYXRpb25D
b2NvYTo6c2V0VmFsdWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9Q
bGF0Zm9ybUNBRmlsdGVyc0NvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChQbGF0Zm9ybUNB
TGF5ZXJDb2NvYTo6YmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllckNv
Y29hOjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyQ29jb2E6
OnNldEJvcmRlckNvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9X
ZWJUaWxlZEJhY2tpbmdMYXllci5tbToKKyAgICAgICAgKC1bV2ViVGlsZWRCYWNraW5nTGF5ZXIg
c2V0Qm9yZGVyQ29sb3I6XSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1Bs
YXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUFuaW1hdGlvbldp
bjo6c2V0RnJvbVZhbHVlKToKKyAgICAgICAgKFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OnNldFRv
VmFsdWUpOgorICAgICAgICAoUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6c2V0VmFsdWVzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4u
Y3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2luOjpiYWNrZ3JvdW5kQ29sb3IpOgorICAg
ICAgICAoUGxhdGZvcm1DQUxheWVyV2luOjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAo
UGxhdGZvcm1DQUxheWVyV2luOjpzZXRCb3JkZXJDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHA6CisgICAgICAg
IChQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6ZGlzcGxheUNhbGxiYWNrKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRTb3VyY2VSR0JBRnJvbUNvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxS
ZWN0V2l0aENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdMaW5lT25DYWlyb0NvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjphZGp1c3RGb2N1c1JpbmdDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0Ojpjb21wdXRlTGluZUJvdW5kc0ZvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3TGluZXNGb3JUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6c2V0UGxhdGZvcm1GaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjpwdXRCeXRlQXJyYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1Bs
YXRmb3JtQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByZXBhcmVDYWlyb0Nv
bnRleHRTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdl
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xv
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpPcHRpb25hbFJHQkE6Ok9wdGlvbmFsUkdCQSk6CisgICAgICAgIChXZWJDb3Jl
OjpsZWFrQ0dDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbG9yOjpDb2xvcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0
Q0dGaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q0dTdHJva2VDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0Ojpjb21wdXRlTGluZUJvdW5kc0ZvclRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZXNGb3JUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TdHJva2VDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtRmlsbENvbG9yKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6ZGlsYXRpb25TaXplRm9yVGV4dENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVz
ZUxpZ2h0aW5nOjpGRURpZmZ1c2VMaWdodGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1
c2VMaWdodGluZzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5n
OjpsaWdodGluZ0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpz
ZXRMaWdodGluZ0NvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RGlmZnVzZUxpZ2h0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURyb3BTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93OjpGRURyb3BT
aGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93OjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpGRURyb3BTaGFkb3c6OnNoYWRvd0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZF
RHJvcFNoYWRvdzo6c2V0U2hhZG93Q29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVGbG9vZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjpGRUZsb29k
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGRUZsb29kOjpmbG9vZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OnNldEZs
b29kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RkVMaWdodGluZzo6RkVMaWdodGluZyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVT
cGVjdWxhckxpZ2h0aW5nOjpGRVNwZWN1bGFyTGlnaHRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
RkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVTcGVjdWxh
ckxpZ2h0aW5nOjpsaWdodGluZ0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJM
aWdodGluZzo6c2V0TGlnaHRpbmdDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcm9wU2hh
ZG93RmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUFscGhhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2Via2l0VmlkZW9TaW5rUmVu
ZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvQ29sb3JHdGsuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6T3B0aW9uYWxSR0JBOjpPcHRpb25hbFJHQkEpOgorICAgICAgICAoV2Vi
Q29yZTo6T3B0aW9uYWxSR0JBOjpvcGVyYXRvciBHZGtSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbG9yOjpDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6b3BlcmF0
b3IgR2RrUkdCQSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Nv
bG9yTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Y29sb3JGcm9tTlNDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpu
c0NvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXREZWJ1Z0JvcmRlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZTo6ZHJhd1JlcGFpbnRDb3VudGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0Nv
dW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckZQU0NvdW50ZXI6OnVw
ZGF0ZUZQU0FuZERpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpk
cmF3Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd051bWJl
cik6CisgICAgICAgIChXZWJDb3JlOjpwcmVwYXJlRmlsdGVyUHJvZ3JhbSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdTb2xpZENvbG9yKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpibGVuZFdpdGhPcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllcjo6c2V0U29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5
ZXI6OnNldERlYnVnVmlzdWFscyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXI6OmRyYXdCb3JkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3Qm9yZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJhd1Jl
cGFpbnRDb3VudGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9Tb2xpZENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0RGVi
dWdCb3JkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3Jl
Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L1VwZGF0ZUF0bGFzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENH
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldENHU3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6c3BlbGxp
bmdQYXR0ZXJuQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Z3JhbW1hclBhdHRlcm5Db2xvcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yRG9jdW1lbnRN
YXJrZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6YXNDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xl
Z2FjeVRpbGVDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUu
bW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OmNvbG9yRm9yR3JpZFRpbGVC
b3JkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNvbG9yKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tOgorICAg
ICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZFNldHVwRnVsbHNj
cmVlbik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmFzQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0
Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmNvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6c2V0VXBPdmVyaGFuZ0FyZWFCYWNrZ3JvdW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzZXRVcE92ZXJoYW5nQXJlYXNM
YXllckNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9j
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VHJhY2tC
YWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRU
aHVtYik6CisgICAgICAgICogcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdEYXRhOjphc0NvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJh
Z0ltYWdlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmsp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UG9wdXBNZW51V2luOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1dlYkNv
cmVUZXh0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9EcmF3VGV4dEF0UG9pbnQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZURyYXdEb3VibGVkVGV4dEF0UG9pbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL0JvcmRlckVkZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyRWRnZTo6Qm9y
ZGVyRWRnZSk6CisgICAgICAgICogcmVuZGVyaW5nL0JvcmRlckVkZ2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkJvcmRlckVkZ2U6OmNvbG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvRWxsaXBzaXNC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxsaXBzaXNCb3g6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkVsbGlwc2lzQm94OjpwYWludFNlbGVjdGlvbik6CisgICAgICAgICogcmVuZGVy
aW5nL0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6
cGFpbnRGaWxsTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50
RmlsbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50Qm94RGVj
b3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cGFpbnRNYXNrKToK
KyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBh
aW50U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50Q29t
cG9zaXRpb25CYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBh
aW50RGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludFRl
eHRNYXRjaE1hcmtlcik6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUGFpbnRJbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWludElu
Zm86OmZvcmNlZFRleHRDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Um9vdEJveEZpbGxMYXllcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpnZXRCYWNrZ3JvdW5kUGFpbnRlZEV4dGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmJhY2tncm91bmRJc0tub3duVG9CZU9wYXF1
ZUluUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmJhY2tncm91bmRIYXNPcGFx
dWVUb3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Q2xpcHBpbmdN
YXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRNYXNrSW1hZ2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVy
RXh0ZW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
T25lQm9yZGVyU2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRCb3JkZXJTaWRlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91
bmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hh
ZG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJEZXRhaWxzTWFya2VyOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c2VsZWN0aW9u
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c2VsZWN0aW9uRm9yZWdy
b3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnNlbGVjdGlvbkVt
cGhhc2lzTWFya0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnNlbGVj
dGlvbkJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojpk
cmF3TGluZUZvckJveFNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6cGFp
bnRPdXRsaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFByZXNzZWRDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpyZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlcGxhY2VtZW50VGV4dENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnVuYXZhaWxhYmxlUGx1
Z2luQm9yZGVyQ29sb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJTdGFydEVkZ2VDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpib3JkZXJFbmRFZGdlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyRmlsbENv
bG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGdWxsU2NyZWVuU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRSZXBs
YWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludFNjcm9sbENvcm5lcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbkNyZWF0ZVRp
bGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpyZW5kZXJl
ckJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6
OnVwZGF0ZURpcmVjdGx5Q29tcG9zaXRlZEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVJvb3RMYXllckNvbmZpZ3VyYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzaG91bGREdW1wUHJvcGVydHlG
b3JMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp2aWV3SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cm9vdE9yQm9keVN0
eWxlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNl
dFJvb3RFeHRlbmRlZEJhY2tncm91bmRDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtQmFja2dyb3VuZCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJNZW51TGlzdC5jcHA6CisgICAgICAgIChSZW5kZXJNZW51TGlzdDo6aXRlbVN0eWxlKToKKyAg
ICAgICAgKFJlbmRlck1lbnVMaXN0OjpnZXRJdGVtQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TXVsdGlDb2x1bW5TZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5T
ZXQ6OnBhaW50Q29sdW1uUnVsZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVjb3JhdGlvbkNvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6Z2V0VGV4dERlY29yYXRpb25Db2xvcnNBbmRTdHlsZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpjYWxjdWxhdGVCb3JkZXJTdHlsZUNvbG9yKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6
OmdldFNjcm9sbGJhclBzZXVkb1N0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6
OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpiZ0NvbG9yKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVtcHR5Qm9yZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZFN0
YXJ0Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNv
bGxhcHNlZEVuZEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNv
bXB1dGVDb2xsYXBzZWRCZWZvcmVCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGVDZWxsOjpjb21wdXRlQ29sbGFwc2VkQWZ0ZXJCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGFibGVDZWxsOjpwYWludEJhY2tncm91bmRzQmVoaW5kQ2VsbCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUYWJsZVNlY3Rpb246OmNhY2hlZENvbGxhcHNlZEJvcmRlcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpzZWxlY3Rp
b25Gb3JlZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c2VsZWN0
aW9uRW1waGFzaXNNYXJrQ29sb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjdXN0b21Gb2N1c1JpbmdDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWU6OmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZTo6aW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6aW5hY3RpdmVTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFjdGl2ZUxpc3RC
b3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWU6OmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6aW5hY3RpdmVMaXN0Qm94U2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwbGF0
Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZTo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBsYXRmb3JtSW5h
Y3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWU6OnBsYXRmb3JtQWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwbGF0
Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmlzQ29udHJvbFN0
eWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGxhdGZvcm1Db2xvcnNEaWRD
aGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdo
bGlnaHRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGxhdGZvcm1JbmFj
dGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZTo6dGFwSGlnaGxpZ2h0Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6
OmRpc2FibGVkVGV4dENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpzZXRD
dXN0b21Gb2N1c1JpbmdDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6Zm9j
dXNSaW5nQ29sb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBsYXRmb3JtRm9jdXNSaW5nQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUd0azo6UmVuZGVyVGhlbWVHdGspOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGxhdGZvcm1BY3RpdmVT
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVH
dGs6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3Vu
ZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwbGF0Zm9ybUluYWN0
aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lR3RrOjpwbGF0Zm9ybUFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBsYXRmb3JtSW5hY3RpdmVMaXN0Qm94
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
R3RrOjpwbGF0Zm9ybUFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBsYXRmb3JtSW5hY3RpdmVMaXN0Qm94U2Vs
ZWN0aW9uRm9yZWdyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3Rr
OjpzeXN0ZW1Db2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnNo
YWRvd0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludENoZWNr
Ym94RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OmlzQ29u
dHJvbFN0eWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRSYWRp
b0RlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludE1l
bnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJ
T1M6OnBhaW50U2xpZGVyVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6
OnBhaW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBh
aW50RmlsZVVwbG9hZEljb25EZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUlPUzo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnN5c3RlbUNv
bG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZU1hYzo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtQWN0
aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybUluYWN0aXZl
TGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZU1hYzo6cGxhdGZvcm1Gb2N1c1JpbmdDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnN5c3RlbUNvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjppc0NvbnRyb2xTdHlsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6YWRqdXN0TWVudUxpc3RT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjphdHRhY2htZW50SWNvbkJhY2tncm91bmRDb2xvcik6
CisgICAgICAgIChXZWJDb3JlOjphdHRhY2htZW50SWNvbkJvcmRlckNvbG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OmF0dGFjaG1lbnRUaXRsZUluYWN0aXZlQmFja2dyb3VuZENvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OmF0dGFjaG1lbnRUaXRsZUluYWN0aXZlVGV4dENvbG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OmF0dGFjaG1lbnRTdWJ0aXRsZVRleHRDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjphdHRhY2htZW50UHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6YXR0YWNobWVudFByb2dyZXNzQmFyRmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmF0
dGFjaG1lbnRQcm9ncmVzc0JhckJvcmRlckNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50
QXR0YWNobWVudFRpdGxlQmFja2dyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lU2FmYXJpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwbGF0
Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZVNhZmFyaTo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6YWN0aXZlTGlzdEJveFNl
bGVjdGlvbkJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNh
ZmFyaTo6cGxhdGZvcm1Gb2N1c1JpbmdDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZVNhZmFyaTo6aXNDb250cm9sU3R5bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdE1lbnVMaXN0U3R5bGUpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGxhdGZv
cm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVXaW46OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9u
Rm9yZWdyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpwbGF0
Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lV2luOjpzeXN0ZW1Db2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lV2luLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclZpZXc6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVM
YXlvdXQ6OnBhaW50RGVidWdCb3JkZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dFBhaW50
U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50U3R5bGU6OlRleHRQYWludFN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdENvbG9yRm9yVmlzaWJpbGl0eU9uQmFja2dy
b3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlVGV4dFBhaW50U3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29tcHV0ZVRleHRTZWxlY3Rpb25QYWludFN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OnVwZGF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRQ
YWludFN0eWxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0FwcGxpZXI6OlNoYWRvd0FwcGxpZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6cGFpbnRUZXh0V2l0aFNoYWRvd3MpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxv
Y2s6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNs
b3NlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE1lbmNsb3NlOjpwYWludCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0JvcmRlclZhbHVlLmg6CisgICAgICAgIChXZWJD
b3JlOjpCb3JkZXJWYWx1ZTo6c2V0Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyVmFs
dWU6OmNvbG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ29sbGFwc2VkQm9yZGVyVmFs
dWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbGxhcHNlZEJvcmRlclZhbHVlOjpDb2xsYXBzZWRC
b3JkZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xsYXBzZWRCb3JkZXJWYWx1ZTo6Y29s
b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OnZpc2l0ZWRMaW5rQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OnNldENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRWaXNpdGVkTGlu
a0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb2xvckluY2x1ZGluZ0Zh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjp2aXNpdGVkRGVwZW5kZW50
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxUYXBIaWdobGln
aHRDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbEZpbGxQYWludENvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1JlbmRlclN0eWxlOjppbml0aWFsU3Ryb2tlUGFpbnRDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbFN0b3BDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbEZsb29kQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxMaWdodGluZ0NvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1JlbmRlclN0eWxlOjpzZXRGaWxsUGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UmVuZGVyU3R5bGU6OnNldFN0cm9rZVBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRl
clN0eWxlOjpzZXRTdG9wQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6
OnNldEZsb29kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OnNldExp
Z2h0aW5nQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmZpbGxQYWlu
dENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzdHJva2VQYWludENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjpzdG9wQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmZsb29kQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyU3R5bGU6OmxpZ2h0aW5nQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUmVuZGVyU3R5bGU6OnZpc2l0ZWRMaW5rRmlsbFBhaW50Q29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyU3R5bGU6OnZpc2l0ZWRMaW5rU3Ryb2tlUGFpbnRDb2xvcik6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5oOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRh
OjpTaGFkb3dEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0RhdGE6OmNvbG9yKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5oOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVCYWNrZ3JvdW5kRGF0YTo6Y29sb3IpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U3R5bGVNdWx0aUNvbERhdGEuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YS5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUlu
aGVyaXRlZERhdGEuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5oZXJpdENvbG9yRnJvbVBhcmVudFN0eWxlSWZOZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6cmVxdWVzdFBhaW50aW5nUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2U6OmZpbGxQYWludGluZ1Jlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlOjpzdHJva2VQYWludGluZ1Jlc291cmNl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1NoYXBlOjpmaWxsQ29udGFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
U2hhcGU6OnN0cm9rZUNvbnRhaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBl
OjpmaWxsU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OnN0cm9rZVNo
YXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb25CYWNrZ3JvdW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OmFjcXVpcmVQYWludGluZ1Jl
c291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJDb3JlOjp3cml0
ZVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuaDoK
KyAgICAgICAgKiBzdmcvQ29sb3JEaXN0YW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb2xv
ckRpc3RhbmNlOjpDb2xvckRpc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yRGlzdGFu
Y2U6OmNsYW1wQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JEaXN0YW5jZTo6YWRkQ29s
b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yRGlzdGFuY2U6OmFkZFRvQ29sb3IpOgorICAg
ICAgICAqIHN2Zy9Db2xvckRpc3RhbmNlLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkQ29s
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yOjpjb25z
dHJ1Y3RGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdEZvckN1cnJlbnRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9yRnJvbVN0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yOjpjYWxjdWxhdGVE
aXN0YW5jZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVkVHlwZTo6c2V0VmFsdWVBc1N0cmluZyk6CisgICAgICAgICogc3ZnL1NWR0Fu
aW1hdGVkVHlwZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpjb2xvcik6
CisgICAgICAgICogc3ZnL1NWR0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbG9y
Ojpjb2xvckZyb21SR0JDb2xvclN0cmluZyk6CisgICAgICAgICogc3ZnL1NWR0NvbG9yLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6Y3JlYXRlRnJvbUNvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0NvbG9yOjpjb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6c2V0
Q29sb3IpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5pZGw6CisgICAg
ICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcv
U1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURyb3BT
aGFkb3dFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRmxvb2RFbGVtZW50OjpidWlsZCk6CisgICAgICAg
ICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9T
VkdHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVt
ZW50OjpidWlsZFN0b3BzKToKKyAgICAgICAgKiBzdmcvU1ZHUGFpbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhaW50OjpjcmVhdGVDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWlu
dDo6Y3JlYXRlVVJJQW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGFpbnQ6OmNyZWF0
ZSk6CisgICAgICAgICogc3ZnL1NWR1N0b3BFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1N0b3BFbGVtZW50OjpzdG9wQ29sb3JJbmNsdWRpbmdPcGFjaXR5KToKKyAgICAgICAgKiBz
dmcvU1ZHU3RvcEVsZW1lbnQuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNlbGVjdENvbG9ySW5Db2xvckNob29zZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRWaWV3QmFzZUJhY2tncm91bmRDb2xvcik6
CisgICAgICAgICogdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3UmVjdCk6CisKIDIwMTUtMDgtMDkg
IE5hbiBXYW5nICA8bl93YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogQ1NTIHRhYmxlIGRp
c3BsYXkgc3R5bGVzIGNhbiBjYXVzZSBtYWxmb3JtZWQsIGluYWNjZXNzaWJsZSBBWFRhYmxlcyB0
byBiZSBleHBvc2VkIHRvIHRoZSBBWCB0cmVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lv
cy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKaW5kZXggZDRlNDUxNmQ3
NGYxZTYyNTk1ZGZmYzEwYzkxMDkxYWEwOTIyYzc3MS4uZjYyYzUxMjdlYjJhOTRiZjU3MDNiM2Q3
ZmRlYjliZWZkYmVhODc2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1
LTA4LTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUg
Q29sb3IgdG8gT3B0aW9uYWxSR0JBCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDc4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lPUy5tbToKKyAgICAgICAgKC1bV2Vi
UERGVmlldyBkcmF3UGFnZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBsYWluV2hpdGVWaWV3
Lm1tOgorCiAyMDE1LTA4LTA1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbCBvdXQgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvMTg3OTcyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDQ2YTBhY2E0ZmVkM2ZhOTc0NWU0YmUyNzBm
ZWY3ZmNjYjZlMGEwNjQuLmQyOTkyZDBjM2Y5ZTdlNjYyNzU4ODAyNWU3ZTk5ZDBkODBjNTExNzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxNS0wOC0wOSAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIENvbG9yIHRvIE9wdGlvbmFs
UkdCQQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3
ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUNv
bG9yQ2hvb3Nlcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
OgorICAgICAgICAodW5kb05hbWVGb3JFZGl0QWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvbG9yKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJG
cmFtZSBfdXBkYXRlQmFja2dyb3VuZEFuZFVwZGF0ZXNXaGlsZU9mZnNjcmVlbl0pOgorICAgICAg
ICAoLVtXZWJGcmFtZSBfYm9keUJhY2tncm91bmRDb2xvcl0pOgorICAgICAgICAoLVtXZWJGcmFt
ZSBzZXRDYXJldENvbG9yOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJGcmFtZVZpZXcgZHJhd1JlY3Q6XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGV4dHJhY3RVbmRlcmxpbmVzKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkluZGljYXRlTGF5ZXIubW06CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6
Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGluaXRTaW1wbGVIVE1MRG9jdW1lbnRX
aXRoU3R5bGU6ZnJhbWU6cHJlZmVyZW5jZXM6Z3JvdXBOYW1lOl0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxNS0wOC0wNiAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoZXMgd2hlbiBjYWxsaW5nIHN3aXp6bGVk
IHNldE5lZWRzRGlzcGxheUluUmVjdDogb24gaGVhcnRiZWF0IHRocmVhZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CmluZGV4IDlkNDJiYzQyZDQzZDE5YTAyMTk2YzY2YjFjZDA2Yjg4ZGM4MWViMmYuLjljY2I3ZjE4
YjI1YmZhNDczOTM5ZWNmYmVlOGNlZDI3NzgyZGYwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxNS0wOC0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVuYW1lIENvbG9yIHRvIE9wdGlvbmFsUkdCQQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3ODIwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
LmNwcDoKKyAgICAgICAgKEhVRFNsaWRlcjo6ZHJhdyk6CisgICAgICAgIChGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyOjpkcmF3KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlv
blRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAg
ICAoV2ViRnJhbWU6OnVwZGF0ZUJhY2tncm91bmQpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgor
ICAgICAgICAoV2ViVmlldzo6cGFpbnRJbnRvQmFja2luZ1N0b3JlKToKKyAgICAgICAgKGNvbXBv
c2l0aW9uVG9VbmRlcmxpbmVzKToKKyAgICAgICAgKFdlYlZpZXc6OnNldENvbXBvc2l0aW9uRm9y
VGVzdGluZyk6CisKIDIwMTUtMDgtMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBCdWlsZCBtb3JlIHRlc3RpbmcgYmluYXJpZXMgd2l0aCBD
TWFrZSBvbiBXaW5kb3dzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2JiYWE2YzFmYzY0YTg1ZDE2MGQ0N2RjYWQ2
OTI2MzBjNzA0NzFiYi4uYTY0NTI3NDQ4MDc3OTkyMjIzZjNmN2FiZTI2NjdmZDY4YzFlMTNlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxOCBAQAorMjAxNS0wOC0wOSAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIENvbG9yIHRvIE9wdGlvbmFsUkdCQQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3ODIwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpkcmF3Qm9yZGVyKToKKyAgICAgICAg
KFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmRyYXdSZXBhaW50Q291bnRlcik6Cisg
ICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmUuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+OjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Q29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpw
YWludFRvQ3VycmVudEdMQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6cGFpbnRUb0dyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg6CisgICAgICAgIChX
ZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0Vmlld0JhY2tncm91bmRDb2xvcik6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6dmlld0JhY2tncm91
bmRDb2xvcik6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRj
b21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRocmVh
ZGVkQ29tcG9zaXRvcjo6cmVuZGVyTGF5ZXJUcmVlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxPcHRpb25h
bFJHQkE+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE9wdGlvbmFsUkdC
QT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OmRlY29kZUZpbHRlck9wZXJhdGlvbik6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q29sb3I+OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPENvbG9yPjo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL0FyZ3VtZW50Q29k
ZXJzTWFjLm1tOgorICAgICAgICAoSVBDOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9tYWMv
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KToKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90
ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbToKKyAgICAgICAgKFdlYktpdDo6Y2dDb2xvckZy
b21Db2xvcik6CisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bi5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6cGFnZUV4
dGVuZGVkQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OnNldFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcik6CisgICAgICAgICog
U2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6TGF5ZXJQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6b3Bl
cmF0b3I8PCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXdFZmwuY3BwOgor
ICAgICAgICAoV0tWaWV3U2V0QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdLVmlld0dldEJh
Y2tncm91bmRDb2xvcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW06CisgICAgICAgIChiYXNlU2Nyb2xsVmlld0JhY2tncm91bmRDb2xvcik6CisgICAgICAgIChz
Y3JvbGxWaWV3QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF91cGRhdGVT
Y3JvbGxWaWV3QmFja2dyb3VuZF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Byb2Nlc3NEaWRF
eGl0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHA6CisgICAgICAg
IChFd2tWaWV3OjpyZXF1ZXN0Q29sb3JQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL0V3a1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlj
a2VyLmNwcDoKKyAgICAgICAgKEV3a0NvbG9yUGlja2VyOjpFd2tDb2xvclBpY2tlcik6CisgICAg
ICAgIChFd2tDb2xvclBpY2tlcjo6c2V0Q29sb3IpOgorICAgICAgICAoRXdrQ29sb3JQaWNrZXI6
OmNvbG9yKToKKyAgICAgICAgKGV3a19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KToKKyAgICAgICAg
KGV3a19jb2xvcl9waWNrZXJfY29sb3JfZ2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29sb3JfcGlja2VyX3ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpj
cmVhdGVDb2xvclBpY2tlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRDb2xvckNob29zZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYktpdENvbG9yQ2hvb3Nlcjo6V2ViS2l0Q29sb3JDaG9vc2VyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViS2l0Q29sb3JDaG9vc2VyOjpzaG93Q29sb3JQaWNrZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3Nlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXcubW06CisgICAgICAgIChleHRyYWN0VW5kZXJsaW5lcyk6CisgICAgICAgICgtW1dL
VmlldyB1bmRlcmxheUNvbG9yXSk6CisgICAgICAgICgtW1dLVmlldyBfcGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yXSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQ
cm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBh
c3RlYm9hcmRDb2xvcik6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
V2ViVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZUNvbG9yUGlja2Vy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
Q29sb3JQaWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlcjo6c2V0U2Vs
ZWN0ZWRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yUGlja2VyOjpzaG93Q29sb3JQ
aWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb2xvclBpY2tlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RWRpdENvbW1hbmRQcm94eTo6bmFtZUZvckVkaXRBY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VW5kZXJsYXlDb2xv
cik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvd0NvbG9yUGlja2VyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRDb2xvclBpY2tlckNvbG9yKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VDb2xvcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6dW5kZXJsYXlDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpiYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpCYWNraW5nU3RvcmU6OmluY29ycG9yYXRlVXBkYXRlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvZWZsL0lucHV0TWV0aG9kQ29udGV4dEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OklucHV0
TWV0aG9kQ29udGV4dEVmbDo6b25JTUZQcmVlZGl0U2VxdWVuY2VDaGFuZ2VkKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3
Q2xpZW50RWZsOjpzaG93Q29sb3JQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2Vi
Q29sb3JQaWNrZXJFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlckVmbDo6
V2ViQ29sb3JQaWNrZXJFZmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlckVmbDo6
c2hvd0NvbG9yUGlja2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJFZmw6OnNl
dFNlbGVjdGVkQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlckVmbDo6ZGlk
Q2hvb3NlQ29sb3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29sb3JQaWNrZXJFZmwu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJFZmw6OmNyZWF0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2VmbC9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHk6OnNldENv
bG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3RWZsOjpzZXRWaWV3QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0VmbDo6dmlld0JhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdFZmw6OmNyZWF0ZUNvbG9yUGlja2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZs
L1dlYlZpZXdFZmwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0lucHV0TWV0aG9kRmlsdGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5wdXRNZXRob2RGaWx0ZXI6OmhhbmRsZUtleWJvYXJk
RXZlbnRXaXRoQ29tcG9zaXRpb25SZXN1bHRzKToKKyAgICAgICAgKFdlYktpdDo6SW5wdXRNZXRo
b2RGaWx0ZXI6OnVwZGF0ZVByZWVkaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViQ29s
b3JQaWNrZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlckd0azo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJHdGs6OldlYkNvbG9yUGlja2Vy
R3RrKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJHdGs6OmRpZENob29zZUNvbG9y
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJHdGs6OnNob3dDb2xvclBpY2tlcik6
CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJDb2xvclBpY2tlckd0ay5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6ZGlkR2V0VGFwSGlnaGxpZ2h0R2VvbWV0cmllcyk6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OnJlbW92ZVN3aXBlU25hcHNob3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgX2RpZEdldFRhcEhpZ2hsaWdodEZvclJlcXVlc3Q6Y29sb3I6cXVhZHM6dG9wTGVmdFJhZGl1
czp0b3BSaWdodFJhZGl1czpib3R0b21MZWZ0UmFkaXVzOmJvdHRvbVJpZ2h0UmFkaXVzOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXMpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlQ29sb3JQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVD
b250cm9sbGVyLmg6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6YmFj
a2dyb3VuZENvbG9yRm9yQ3VycmVudFNuYXBzaG90KToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1
cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6cmVtb3ZlU3dpcGVTbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNo
b3Q6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6
YmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2Vy
TWFjLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJNYWM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbG9yUGlja2VyTWFjOjpXZWJDb2xvclBpY2tlck1hYyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbG9yUGlja2VyTWFjOjpzZXRTZWxlY3RlZENvbG9yKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29sb3JQaWNrZXJNYWM6OmRpZENob29zZUNvbG9yKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29sb3JQaWNrZXJNYWM6OnNob3dDb2xvclBpY2tlcik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwOgorICAgICAgICAod2Vi
a2l0V2ViUGFnZURpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9t
ZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21l
Q2xpZW50Ojp1bmRlcmxheUNvbG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50
OjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb2xvckNob29zZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb2xvckNob29zZXI6OldlYkNvbG9yQ2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbG9yQ2hvb3Nlcjo6ZGlkQ2hvb3NlQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xv
ckNob29zZXI6OnJlYXR0YWNoQ29sb3JDaG9vc2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29s
b3JDaG9vc2VyOjpzZXRTZWxlY3RlZENvbG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbG9yQ2hvb3Nlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJlY3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb2xvcik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6ZHJhd1JlY3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpnZXRE
b2N1bWVudEJhY2tncm91bmRDb2xvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnNldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6ZGlkQ2hvb3NlQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpz
ZXRDb21wb3NpdGlvbkZvclRlc3RpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFVuZGVybGF5Q29sb3IpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1bmRlcmxheUNvbG9yKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoaGlnaGxpZ2h0Q29s
b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2VuZFRhcEhpZ2hsaWdodEZvck5vZGVJZk5lY2Vzc2Fy
eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9u
UmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5p
bWF0aW9uUmVtb3RlLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBQW5pbWF0aW9uUmVt
b3RlOjpzZXRGcm9tVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBQW5pbWF0aW9u
UmVtb3RlOjpzZXRUb1ZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUFuaW1hdGlv
blJlbW90ZTo6c2V0VmFsdWVzKToKKyAgICAgICAgKFdlYktpdDo6YW5pbWF0aW9uVmFsdWVGcm9t
S2V5ZnJhbWVWYWx1ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OmJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6c2V0QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxh
eWVyUmVtb3RlOjpzZXRCb3JkZXJDb2xvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZzo6c2V0Qm9yZGVyQ29sb3Ip
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3Rl
VGlsZWRCYWNraW5nLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6ZGlkU2V0dXBGdWxsc2NyZWVuKToKKwogMjAxNS0wOC0wOSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEZvbGxvdy11cCBuaXQgZml4ZXMgYWZ0ZXIgcjE4NzY5
MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggODk1M2ViYWI2OTg4Njg4MmJmYjFlODMxYjAyN2Y0ZTk5
ZDY3MTg1MC4uMTViNDI2YTRiMjQ3ODMxZGE2MTlkMThhZDQ1MjEwOWE5YWQ1NmU3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5jcHAKQEAgLTE4ODEsOCArMTg4MSw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3Q6OmNvbG9yVmFsdWUoaW50JiByLCBpbnQmIGcsIGludCYgYikgY29uc3QKICAgICBpZiAo
IWVxdWFsSWdub3JpbmdDYXNlKHR5cGUsICJjb2xvciIpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICAvLyBIVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZSBhbHdheXMgcmV0dXJucyBhIHN0cmluZyBwYXJz
ZWFibGUgYnkgQ29sb3IoKS4KLSAgICBDb2xvciBjb2xvcihpbnB1dC52YWx1ZSgpKTsKKyAgICAv
LyBIVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZSBhbHdheXMgcmV0dXJucyBhIHN0cmluZyBwYXJzZWFi
bGUgYnkgT3B0aW9uYWxSR0JBKCkuCisgICAgT3B0aW9uYWxSR0JBIGNvbG9yKGlucHV0LnZhbHVl
KCkpOwogICAgIHIgPSBjb2xvci5yZWQoKTsKICAgICBnID0gY29sb3IuZ3JlZW4oKTsKICAgICBi
ID0gY29sb3IuYmx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IGJmZTIwOTRmYWMwYzEyZmEwYjk3MzNlMDJiZjg0
NWE0MDM0ZTdjYWUuLjhlMTQ5MGU5NWFjMzYwNzY5N2M3OTQ2NDEzZTBhMjQ1ZWQ1YzY1YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZS5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRh
VGFibGUoKSBjb25zdAogICAgIAogICAgIC8vIFN0b3JlIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9m
IHRoZSB0YWJsZSB0byBjaGVjayBhZ2FpbnN0IGNlbGwncyBiYWNrZ3JvdW5kIGNvbG9ycy4KICAg
ICBjb25zdCBSZW5kZXJTdHlsZSYgdGFibGVTdHlsZSA9IHRhYmxlLnN0eWxlKCk7Ci0gICAgQ29s
b3IgdGFibGVCR0NvbG9yID0gdGFibGVTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ29sb3IpOworICAgIE9wdGlvbmFsUkdCQSB0YWJsZUJHQ29sb3IgPSB0
YWJsZVN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
cik7CiAgICAgCiAgICAgLy8gY2hlY2sgZW5vdWdoIG9mIHRoZSBjZWxscyB0byBmaW5kIGlmIHRo
ZSB0YWJsZSBtYXRjaGVzIG91ciBjcml0ZXJpYQogICAgIC8vIENyaXRlcmlhOiAKQEAgLTE5Miw3
ICsxOTIsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAog
ICAgIHVuc2lnbmVkIGNlbGxzV2l0aExlZnRCb3JkZXIgPSAwOwogICAgIHVuc2lnbmVkIGNlbGxz
V2l0aFJpZ2h0Qm9yZGVyID0gMDsKICAgICAKLSAgICBDb2xvciBhbHRlcm5hdGluZ1Jvd0NvbG9y
c1s1XTsKKyAgICBPcHRpb25hbFJHQkEgYWx0ZXJuYXRpbmdSb3dDb2xvcnNbNV07CiAgICAgaW50
IGFsdGVybmF0aW5nUm93Q29sb3JDb3VudCA9IDA7CiAgICAgCiAgICAgaW50IGhlYWRlcnNJbkZp
cnN0Q29sdW1uQ291bnQgPSAwOwpAQCAtMjUzLDcgKzI1Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0
eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNvbnN0CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8v
IElmIHRoZSBjZWxsIGhhcyBhIGRpZmZlcmVudCBjb2xvciBmcm9tIHRoZSB0YWJsZSBhbmQgdGhl
cmUgaXMgY2VsbCBzcGFjaW5nLAogICAgICAgICAgICAgLy8gdGhlbiBpdCBpcyBwcm9iYWJseSBh
IGRhdGEgdGFibGUgY2VsbCAoc3BhY2luZyBhbmQgY29sb3JzIHRha2UgdGhlIHBsYWNlIG9mIGJv
cmRlcnMpLgotICAgICAgICAgICAgQ29sb3IgY2VsbENvbG9yID0gcmVuZGVyU3R5bGUudmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAgICAg
IE9wdGlvbmFsUkdCQSBjZWxsQ29sb3IgPSByZW5kZXJTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29s
b3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogICAgICAgICAgICAgaWYgKHRhYmxlLmhC
b3JkZXJTcGFjaW5nKCkgPiAwICYmIHRhYmxlLnZCb3JkZXJTcGFjaW5nKCkgPiAwCiAgICAgICAg
ICAgICAgICAgJiYgdGFibGVCR0NvbG9yICE9IGNlbGxDb2xvciAmJiBjZWxsQ29sb3IuYWxwaGEo
KSAhPSAxKQogICAgICAgICAgICAgICAgICsrYmFja2dyb3VuZERpZmZlcmVuY2VDZWxsQ291bnQ7
CkBAIC0yNjgsNyArMjY4LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0YVRhYmxl
KCkgY29uc3QKICAgICAgICAgICAgICAgICBpZiAoIWlzPFJlbmRlclRhYmxlUm93PihyZW5kZXJS
b3cpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBjb25z
dCBSZW5kZXJTdHlsZSYgcm93UmVuZGVyU3R5bGUgPSByZW5kZXJSb3ctPnN0eWxlKCk7Ci0gICAg
ICAgICAgICAgICAgQ29sb3Igcm93Q29sb3IgPSByb3dSZW5kZXJTdHlsZS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOworICAgICAgICAgICAgICAgIE9w
dGlvbmFsUkdCQSByb3dDb2xvciA9IHJvd1JlbmRlclN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgICAgICAgICAgICAgYWx0ZXJuYXRp
bmdSb3dDb2xvcnNbYWx0ZXJuYXRpbmdSb3dDb2xvckNvdW50XSA9IHJvd0NvbG9yOwogICAgICAg
ICAgICAgICAgICsrYWx0ZXJuYXRpbmdSb3dDb2xvckNvdW50OwogICAgICAgICAgICAgfQpAQCAt
MzAwLDcgKzMwMCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNv
bnN0CiAKICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhbiBhbHRlcm5hdGluZyByb3cgYmFja2dy
b3VuZCBjb2xvciBpbmRpY2F0aW5nIGEgemVicmEgc3RyaXBlZCBzdHlsZSBwYXR0ZXJuLgogICAg
IGlmIChhbHRlcm5hdGluZ1Jvd0NvbG9yQ291bnQgPiAyKSB7Ci0gICAgICAgIENvbG9yIGZpcnN0
Q29sb3IgPSBhbHRlcm5hdGluZ1Jvd0NvbG9yc1swXTsKKyAgICAgICAgT3B0aW9uYWxSR0JBIGZp
cnN0Q29sb3IgPSBhbHRlcm5hdGluZ1Jvd0NvbG9yc1swXTsKICAgICAgICAgZm9yIChpbnQgayA9
IDE7IGsgPCBhbHRlcm5hdGluZ1Jvd0NvbG9yQ291bnQ7IGsrKykgewogICAgICAgICAgICAgLy8g
SWYgYW4gb2RkIHJvdyB3YXMgdGhlIHNhbWUgY29sb3IgYXMgdGhlIGZpcnN0IHJvdywgaXRzIG5v
dCBhbHRlcm5hdGluZy4KICAgICAgICAgICAgIGlmIChrICUgMiA9PSAxICYmIGFsdGVybmF0aW5n
Um93Q29sb3JzW2tdID09IGZpcnN0Q29sb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4
dC5jcHAKaW5kZXggZWE2OGIwMzBlNDU4MjM3OTgxOGQwM2JlZGY0NGNmM2Q2ZTA1YTU1Zi4uMmQx
M2UwODkxZTNlYzk3YmE2YmNlYWJhODFmYmU0YTM3MDJhOTk2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVJbnRlcmZhY2VUZXh0LmNwcApAQCAtOTAsMTMgKzkwLDEzIEBAIHN0YXRpYyBBdGtBdHRyaWJ1
dGVTZXQqIGdldEF0dHJpYnV0ZVNldEZvckFjY2Vzc2liaWxpdHlPYmplY3QoY29uc3QgQWNjZXNz
aWJpbGl0CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gYnVmZmVyKGdfc3RyZHVwX3ByaW50ZigiJWki
LCBzdHlsZS0+Zm9udFNpemUoKSkpOwogICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0
KHJlc3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJfU0laRSks
IGJ1ZmZlci5nZXQoKSk7CiAKLSAgICBDb2xvciBiZ0NvbG9yID0gc3R5bGUtPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CisgICAgT3B0aW9uYWxSR0JB
IGJnQ29sb3IgPSBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yKTsKICAgICBpZiAoYmdDb2xvci5pc1ZhbGlkKCkpIHsKICAgICAgICAgYnVmZmVy
LnJlc2V0KGdfc3RyZHVwX3ByaW50ZigiJWksJWksJWkiLCBiZ0NvbG9yLnJlZCgpLCBiZ0NvbG9y
LmdyZWVuKCksIGJnQ29sb3IuYmx1ZSgpKSk7CiAgICAgICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0
cmlidXRlU2V0KHJlc3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FU
VFJfQkdfQ09MT1IpLCBidWZmZXIuZ2V0KCkpOwogICAgIH0KIAotICAgIENvbG9yIGZnQ29sb3Ig
PSBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpOworICAgIE9w
dGlvbmFsUkdCQSBmZ0NvbG9yID0gc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9w
ZXJ0eUNvbG9yKTsKICAgICBpZiAoZmdDb2xvci5pc1ZhbGlkKCkpIHsKICAgICAgICAgYnVmZmVy
LnJlc2V0KGdfc3RyZHVwX3ByaW50ZigiJWksJWksJWkiLCBmZ0NvbG9yLnJlZCgpLCBmZ0NvbG9y
LmdyZWVuKCksIGZnQ29sb3IuYmx1ZSgpKSk7CiAgICAgICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0
cmlidXRlU2V0KHJlc3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FU
VFJfRkdfQ09MT1IpLCBidWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3Bw
CmluZGV4IDMxMjgxNjczODM3MTIwNzlkODYyN2Q1MWIyYTRlNzJmNThiMDcyN2QuLjlmMDk2N2Jk
ZjNmYjA1ZWM1NjU3YTg4MDVlOWZlNzUzOGNlODJmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBl
ckF0ay5jcHAKQEAgLTExNDYsNyArMTE0Niw3IEBAIHN0YXRpYyBndWludDE2IGdldEludGVyZmFj
ZU1hc2tGcm9tT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QpCiAgICAgICAg
IGludGVyZmFjZU1hc2sgfD0gMSA8PCBXQUlWYWx1ZTsKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBF
X0NPTE9SKQotICAgIC8vIENvbG9yIHR5cGUuCisgICAgLy8gT3B0aW9uYWxSR0JBIHR5cGUuCiAg
ICAgaWYgKHJvbGUgPT0gQ29sb3JXZWxsUm9sZSkKICAgICAgICAgaW50ZXJmYWNlTWFzayB8PSAx
IDw8IFdBSVRleHQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KaW5kZXggNWI1ZWYzOTgwYmJhNmVmZDUxOTg3ZmVkZTliOGE3ZTdjN2QwMzE0MS4uNzE1NjI2
MWNjMTliNTUwYmQ4MmU1ZTBlNmI4NzQ1MWU3M2VhZTA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTE4NDgsNyArMTg0OCw3IEBAIHN0YXRpYyB2b2lkIEFY
QXR0cmlidXRlU3RyaW5nU2V0U3R5bGUoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0
cmluZywgUmVuCiAgICAgICAgICAgICAgICAgCiAgICAgaW50IGRlY29yID0gc3R5bGUudGV4dERl
Y29yYXRpb25zSW5FZmZlY3QoKTsKICAgICBpZiAoKGRlY29yICYgKFRleHREZWNvcmF0aW9uVW5k
ZXJsaW5lIHwgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCkpICE9IDApIHsKLSAgICAgICAgQ29s
b3IgdW5kZXJsaW5lQ29sb3IsIG92ZXJsaW5lQ29sb3IsIGxpbmV0aHJvdWdoQ29sb3I7CisgICAg
ICAgIE9wdGlvbmFsUkdCQSB1bmRlcmxpbmVDb2xvciwgb3ZlcmxpbmVDb2xvciwgbGluZXRocm91
Z2hDb2xvcjsKICAgICAgICAgVGV4dERlY29yYXRpb25TdHlsZSB1bmRlcmxpbmVTdHlsZSwgb3Zl
cmxpbmVTdHlsZSwgbGluZXRocm91Z2hTdHlsZTsKICAgICAgICAgcmVuZGVyZXItPmdldFRleHRE
ZWNvcmF0aW9uQ29sb3JzQW5kU3R5bGVzKGRlY29yLCB1bmRlcmxpbmVDb2xvciwgb3ZlcmxpbmVD
b2xvciwgbGluZXRocm91Z2hDb2xvciwgdW5kZXJsaW5lU3R5bGUsIG92ZXJsaW5lU3R5bGUsIGxp
bmV0aHJvdWdoU3R5bGUpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW0KaW5kZXggODM1NGVlNTU4YTYyODY0MmRlMzUyMzgzYmIzOGE4NWIxOWI2ZmMzMi4u
NDBjYjI3NTZlNDViNDk1NTBkZjJiYjExNzQ1NmU3ZDgyMmY5YzcyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTkxMSw3ICs5MTEsNyBAQCBzdGF0aWMgdm9p
ZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFN0eWxlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0
dHJTdHJpbmcsIFJlbgogICAgIAogICAgIGlmICgoZGVjb3IgJiAoVGV4dERlY29yYXRpb25VbmRl
cmxpbmUgfCBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoKSkgIT0gMCkgewogICAgICAgICAvLyBG
SVhNRTogU2hvdWxkIHRoZSB1bmRlcmxpbmUgc3R5bGUgYmUgcmVwb3J0ZWQgaGVyZT8KLSAgICAg
ICAgQ29sb3IgdW5kZXJsaW5lQ29sb3IsIG92ZXJsaW5lQ29sb3IsIGxpbmV0aHJvdWdoQ29sb3I7
CisgICAgICAgIE9wdGlvbmFsUkdCQSB1bmRlcmxpbmVDb2xvciwgb3ZlcmxpbmVDb2xvciwgbGlu
ZXRocm91Z2hDb2xvcjsKICAgICAgICAgVGV4dERlY29yYXRpb25TdHlsZSB1bmRlcmxpbmVTdHls
ZSwgb3ZlcmxpbmVTdHlsZSwgbGluZXRocm91Z2hTdHlsZTsKICAgICAgICAgcmVuZGVyZXItPmdl
dFRleHREZWNvcmF0aW9uQ29sb3JzQW5kU3R5bGVzKGRlY29yLCB1bmRlcmxpbmVDb2xvciwgb3Zl
cmxpbmVDb2xvciwgbGluZXRocm91Z2hDb2xvciwgdW5kZXJsaW5lU3R5bGUsIG92ZXJsaW5lU3R5
bGUsIGxpbmV0aHJvdWdoU3R5bGUpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggMmVjNDQ0MjVhYzA1Y2M0
ODE5MGI2OTBkNzdkOTQzMGE2OTllYzIxMC4uNmVmOWYyNmZhYjk3NjYxYzg3MGZjNWIzMzE3Y2Ri
MzI3MDhiMWFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTcyNiw3ICs3MjYsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gcG9zaXRpb25PZmZzZXRWYWx1ZShSZW5kZXJTdHlsZSYgc3R5bGUsIENTU1Byb3Bl
cnR5SQogICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVBdXRvKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6Y3VycmVudENvbG9yT3JWYWxpZENvbG9yKFJlbmRlclN0eWxlKiBzdHls
ZSwgY29uc3QgQ29sb3ImIGNvbG9yKSBjb25zdAorUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VycmVudENvbG9yT3JWYWxpZENvbG9yKFJlbmRl
clN0eWxlKiBzdHlsZSwgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvcikgY29uc3QKIHsKICAgICAv
LyBUaGlzIGZ1bmN0aW9uIGRvZXMgTk9UIGxvb2sgYXQgdmlzaXRlZCBpbmZvcm1hdGlvbiwgc28g
dGhhdCBjb21wdXRlZCBzdHlsZSBkb2Vzbid0IGV4cG9zZSB0aGF0LgogICAgIGlmICghY29sb3Iu
aXNWYWxpZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5oCmluZGV4IGU5NjZkMjQzYWYyYmE4MDNjZWQ4ZGVmZDZhYmEwOTAyNDQ1Njc0MzYu
LjA2MGRmMmI4YzlkNjkwMjAxMGNkMWRiMTMzYmZhZTNkNzcxZmNhZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTMwLDcgKzMw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKIGNs
YXNzIENTU1ZhbHVlTGlzdDsKLWNsYXNzIENvbG9yOworY2xhc3MgT3B0aW9uYWxSR0JBOwogY2xh
c3MgRmlsdGVyT3BlcmF0aW9uczsKIGNsYXNzIE11dGFibGVTdHlsZVByb3BlcnRpZXM7CiBjbGFz
cyBOb2RlOwpAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8U1ZHUGFp
bnQ+IGFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFBhc3NSZWZQdHI8U1ZHUGFpbnQ+LCBS
ZW5kZXJTdHlsZSopIGNvbnN0OwogCiAgICAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JT
aGFkb3coY29uc3QgU2hhZG93RGF0YSosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFJlbmRlclN0eWxl
JiwgQWRqdXN0UGl4ZWxWYWx1ZXNGb3JDb21wdXRlZFN0eWxlID0gQWRqdXN0UGl4ZWxWYWx1ZXMp
OwotICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGN1cnJlbnRDb2xvck9yVmFsaWRD
b2xvcihSZW5kZXJTdHlsZSosIGNvbnN0IENvbG9yJikgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKFJlbmRlclN0eWxlKiwg
Y29uc3QgT3B0aW9uYWxSR0JBJikgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlz
dD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxl
UHJvcGVydHlTaG9ydGhhbmQmKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4g
Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5
U2hvcnRoYW5kJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
ZGllbnRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAK
aW5kZXggNWI0MzFlZmFlMDNiNWZlYWI4MWMwMWM3ZTk3NDY2YmZkOGU2YzE4MS4uNThhOGZhNDAx
Y2IzY2E0ODVhNjdiYzU5ZjEzN2JhMjM4MWFiNGMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFkaWVudFZhbHVlLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIENTU0dyYWRpZW50VmFsdWU6
OnNvcnRTdG9wc0lmTmVlZGVkKCkKIH0KIAogc3RydWN0IEdyYWRpZW50U3RvcCB7Ci0gICAgQ29s
b3IgY29sb3I7CisgICAgT3B0aW9uYWxSR0JBIGNvbG9yOwogICAgIGZsb2F0IG9mZnNldDsKICAg
ICBib29sIHNwZWNpZmllZDsKICAgICBib29sIGlzTWlkcG9pbnQ7CkBAIC0xNDAsMTQgKzE0MCwx
NCBAQCBzdGF0aWMgaW5saW5lIGludCBpbnRlcnBvbGF0ZShpbnQgbWluLCBpbnQgbWF4LCBmbG9h
dCBwb3NpdGlvbikKICAgICByZXR1cm4gbWluICsgc3RhdGljX2Nhc3Q8aW50Pihwb3NpdGlvbiAq
IChtYXggLSBtaW4pKTsKIH0KIAotc3RhdGljIGlubGluZSBDb2xvciBpbnRlcnBvbGF0ZShDb2xv
ciBjb2xvcjEsIENvbG9yIGNvbG9yMiwgZmxvYXQgcG9zaXRpb24pCitzdGF0aWMgaW5saW5lIE9w
dGlvbmFsUkdCQSBpbnRlcnBvbGF0ZShPcHRpb25hbFJHQkEgY29sb3IxLCBPcHRpb25hbFJHQkEg
Y29sb3IyLCBmbG9hdCBwb3NpdGlvbikKIHsKICAgICBpbnQgcmVkID0gaW50ZXJwb2xhdGUoY29s
b3IxLnJlZCgpLCBjb2xvcjIucmVkKCksIHBvc2l0aW9uKTsKICAgICBpbnQgZ3JlZW4gPSBpbnRl
cnBvbGF0ZShjb2xvcjEuZ3JlZW4oKSwgY29sb3IyLmdyZWVuKCksIHBvc2l0aW9uKTsKICAgICBp
bnQgYmx1ZSA9IGludGVycG9sYXRlKGNvbG9yMS5ibHVlKCksIGNvbG9yMi5ibHVlKCksIHBvc2l0
aW9uKTsKICAgICBpbnQgYWxwaGEgPSBpbnRlcnBvbGF0ZShjb2xvcjEuYWxwaGEoKSwgY29sb3Iy
LmFscGhhKCksIHBvc2l0aW9uKTsKIAotICAgIHJldHVybiBDb2xvcihyZWQsIGdyZWVuLCBibHVl
LCBhbHBoYSk7CisgICAgcmV0dXJuIE9wdGlvbmFsUkdCQShyZWQsIGdyZWVuLCBibHVlLCBhbHBo
YSk7CiB9CiAKIHZvaWQgQ1NTR3JhZGllbnRWYWx1ZTo6YWRkU3RvcHMoR3JhZGllbnQmIGdyYWRp
ZW50LCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgZmxv
YXQgbWF4TGVuZ3RoRm9yUmVwZWF0KQpAQCAtMjkyLDggKzI5Miw4IEBAIHZvaWQgQ1NTR3JhZGll
bnRWYWx1ZTo6YWRkU3RvcHMoR3JhZGllbnQmIGdyYWRpZW50LCBjb25zdCBDU1NUb0xlbmd0aENv
bnZlcnNpb25ECiAKICAgICAgICAgLy8gRmluZCBwcmV2aW91cyBhbmQgbmV4dCBjb2xvciBzbyB3
ZSBrbm93IHdoYXQgdG8gaW50ZXJwb2xhdGUgYmV0d2Vlbi4KICAgICAgICAgLy8gV2UgYWxyZWFk
eSBrbm93IHRoZXkgaGF2ZSBhIGNvbG9yIHNpbmNlIHdlIGNoZWNrZWQgZm9yIHRoYXQgZWFybGll
ci4KLSAgICAgICAgQ29sb3IgY29sb3IxID0gc3RvcHNbeCAtIDFdLmNvbG9yOwotICAgICAgICBD
b2xvciBjb2xvcjIgPSBzdG9wc1t4ICsgMV0uY29sb3I7CisgICAgICAgIE9wdGlvbmFsUkdCQSBj
b2xvcjEgPSBzdG9wc1t4IC0gMV0uY29sb3I7CisgICAgICAgIE9wdGlvbmFsUkdCQSBjb2xvcjIg
PSBzdG9wc1t4ICsgMV0uY29sb3I7CiAgICAgICAgIC8vIExpa2V3aXNlIGZpbmQgdGhlIHBvc2l0
aW9uIG9mIHByZXZpb3VzIGFuZCBuZXh0IGNvbG9yIHN0b3AuCiAgICAgICAgIGZsb2F0IG9mZnNl
dDEgPSBzdG9wc1t4IC0gMV0ub2Zmc2V0OwogICAgICAgICBmbG9hdCBvZmZzZXQyID0gc3RvcHNb
eCArIDFdLm9mZnNldDsKQEAgLTQ2Niw3ICs0NjYsNyBAQCB2b2lkIENTU0dyYWRpZW50VmFsdWU6
OmFkZFN0b3BzKEdyYWRpZW50JiBncmFkaWVudCwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RAogCiAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGludGVyU3RvcFByb3BvcnRpb24gPSAtcHJl
dk9mZnNldCAvIChuZXh0T2Zmc2V0IC0gcHJldk9mZnNldCk7CiAgICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiB3aGVuIHdlIGludGVycG9sYXRlIGdyYWRpZW50cyB1c2luZyBwcmVtdWx0aXBs
aWVkIGNvbG9ycywgdGhpcyBzaG91bGQgZG8gcHJlbXVsdGlwbGljYXRpb24uCi0gICAgICAgICAg
ICAgICAgICAgIENvbG9yIGJsZW5kZWRDb2xvciA9IGJsZW5kKHN0b3BzW2ZpcnN0WmVyb09yR3Jl
YXRlckluZGV4IC0gMV0uY29sb3IsIHN0b3BzW2ZpcnN0WmVyb09yR3JlYXRlckluZGV4XS5jb2xv
ciwgaW50ZXJTdG9wUHJvcG9ydGlvbik7CisgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsUkdC
QSBibGVuZGVkQ29sb3IgPSBibGVuZChzdG9wc1tmaXJzdFplcm9PckdyZWF0ZXJJbmRleCAtIDFd
LmNvbG9yLCBzdG9wc1tmaXJzdFplcm9PckdyZWF0ZXJJbmRleF0uY29sb3IsIGludGVyU3RvcFBy
b3BvcnRpb24pOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIENsYW1wIHRoZSBwb3NpdGlvbnMg
dG8gMCBhbmQgc2V0IHRoZSBjb2xvci4KICAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBmaXJzdFplcm9PckdyZWF0ZXJJbmRleDsgKytpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYWRpZW50VmFsdWUuaAppbmRleCBkYTkxMWEyMjAzOGQ2NDVjMzlkNzI2NmMzZTM0NzZl
YmVjNTRmNjQ5Li4xZTQ3M2YzYzA4Y2I2N2IyMzc2ZGQ5OGEyNzUyNDUyYTU5NjAxZjZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKQEAgLTUwLDcgKzUwLDcgQEAgZW51bSBD
U1NHcmFkaWVudFJlcGVhdCB7IE5vblJlcGVhdGluZywgUmVwZWF0aW5nIH07CiBzdHJ1Y3QgQ1NT
R3JhZGllbnRDb2xvclN0b3AgewogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9wb3Np
dGlvbjsgLy8gcGVyY2VudGFnZSBvciBsZW5ndGgKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IG1fY29sb3I7Ci0gICAgQ29sb3IgbV9yZXNvbHZlZENvbG9yOworICAgIE9wdGlvbmFsUkdC
QSBtX3Jlc29sdmVkQ29sb3I7CiAgICAgYm9vbCBtX2NvbG9ySXNEZXJpdmVkRnJvbUVsZW1lbnQg
PSBmYWxzZTsKICAgICBib29sIGlzTWlkcG9pbnQgPSBmYWxzZTsKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQ1NTR3JhZGllbnRDb2xvclN0b3AmIG90aGVyKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcAppbmRleCBjNTdmYTAzMjMwYWIxN2VlNTIzZmY0MWZiZjI0NzNmYTBhYmM0YTA0
Li5kOWUzZjE3MDcxZWE1OTc0MjkwY2U3NDVkMTQzMDU5ODMyMWU2ZDQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcApAQCAtMTQwNCw3ICsxNDA0LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNl
U3lzdGVtQ29sb3IoUkdCQTMyJiBjb2xvciwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIERvY3VtZW50
KgogICAgIGlmICghdmFsaWRQcmltaXRpdmVWYWx1ZUNvbG9yKGlkKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgQ29sb3IgcGFyc2VkQ29sb3IgPSBkb2N1bWVudC0+cGFnZSgpLT50aGVt
ZSgpLnN5c3RlbUNvbG9yKGlkKTsKKyAgICBPcHRpb25hbFJHQkEgcGFyc2VkQ29sb3IgPSBkb2N1
bWVudC0+cGFnZSgpLT50aGVtZSgpLnN5c3RlbUNvbG9yKGlkKTsKICAgICBpZiAoIXBhcnNlZENv
bG9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zNDk4LDcgKzM0OTgs
NyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGaWxsU2hvcnRoYW5kKENTU1Byb3BlcnR5SUQgcHJv
cElkLCBjb25zdCBDU1NQcm9wZXJ0eUlEKiBwcgogICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5l
eHQoKTsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsK
ICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRDb2xvciAmJiBwYXJzZWRQcm9wZXJ0eVtpXSkKLSAgICAgICAgICAgICAgICAgICAgLy8gQ29s
b3IgaXMgbm90IGFsbG93ZWQgZXhjZXB0IGFzIHRoZSBsYXN0IGl0ZW0gaW4gYSBsaXN0IGZvciBi
YWNrZ3JvdW5kcy4KKyAgICAgICAgICAgICAgICAgICAgLy8gT3B0aW9uYWxSR0JBIGlzIG5vdCBh
bGxvd2VkIGV4Y2VwdCBhcyB0aGUgbGFzdCBpdGVtIGluIGEgbGlzdCBmb3IgYmFja2dyb3VuZHMu
CiAgICAgICAgICAgICAgICAgICAgIC8vIFJlamVjdCB0aGUgZW50aXJlIHByb3BlcnR5LgogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTczMDMsMTAgKzczMDMsMTAgQEAg
c3RhdGljIGlubGluZSBib29sIGZhc3RQYXJzZUNvbG9ySW50ZXJuYWwoUkdCQTMyJiByZ2IsIGNv
bnN0IENoYXJhY3RlclR5cGUqIGNoYXIKICAgICAKICAgICBpZiAoIXN0cmljdCAmJiBsZW5ndGgg
Pj0gMykgewogICAgICAgICBpZiAoY2hhcmFjdGVyc1swXSA9PSAnIycpIHsKLSAgICAgICAgICAg
IGlmIChDb2xvcjo6cGFyc2VIZXhDb2xvcihjaGFyYWN0ZXJzICsgMSwgbGVuZ3RoIC0gMSwgcmdi
KSkKKyAgICAgICAgICAgIGlmIChPcHRpb25hbFJHQkE6OnBhcnNlSGV4Q29sb3IoY2hhcmFjdGVy
cyArIDEsIGxlbmd0aCAtIDEsIHJnYikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoQ29sb3I6OnBhcnNlSGV4Q29sb3IoY2hh
cmFjdGVycywgbGVuZ3RoLCByZ2IpKQorICAgICAgICAgICAgaWYgKE9wdGlvbmFsUkdCQTo6cGFy
c2VIZXhDb2xvcihjaGFyYWN0ZXJzLCBsZW5ndGgsIHJnYikpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC03Mzc0LDcgKzczNzQsNyBAQCBib29sIENT
U1BhcnNlcjo6ZmFzdFBhcnNlQ29sb3IoUkdCQTMyJiByZ2IsIGNvbnN0IFN0cmluZ1R5cGUmIG5h
bWUsIGJvb2wgc3RyaWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIFRyeSBuYW1l
ZCBjb2xvcnMuCi0gICAgQ29sb3IgdGM7CisgICAgT3B0aW9uYWxSR0JBIHRjOwogICAgIHRjLnNl
dE5hbWVkQ29sb3IobmFtZSk7CiAgICAgaWYgKHRjLmlzVmFsaWQoKSkgewogICAgICAgICByZ2Ig
PSB0Yy5yZ2IoKTsKQEAgLTc0OTYsNyArNzQ5Niw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUhT
TFBhcmFtZXRlcnMoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlLCBkb3VibGUqIGNvbG9yQXJyYXksIGJv
CiAKIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VDb2xvcihD
U1NQYXJzZXJWYWx1ZSogdmFsdWUpCiB7Ci0gICAgUkdCQTMyIGMgPSBDb2xvcjo6dHJhbnNwYXJl
bnQ7CisgICAgUkdCQTMyIGMgPSBPcHRpb25hbFJHQkE6OnRyYW5zcGFyZW50OwogICAgIGlmICgh
cGFyc2VDb2xvckZyb21WYWx1ZSh2YWx1ZSA/ICp2YWx1ZSA6ICptX3ZhbHVlTGlzdC0+Y3VycmVu
dCgpLCBjKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bCgpLmNyZWF0ZUNvbG9yVmFsdWUoYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmNwcAppbmRleCA0ZTYxNzNkYjNlODhhYmE0ZmJjMjU4M2I3ZTAyYzM1ODIyNjRkZmZiLi4z
NmI4MTljZWY3OWI5MDAwYTk4OWVkODQ5M2VjMDI2ZTg5M2UwZmVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTEwOTcsOCArMTA5Nyw4IEBAIEFMV0FZU19J
TkxJTkUgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpmb3JtYXROdW1iZXJGb3JDdXN0b21DU1NU
ZXh0KCkgY29uc3QKICAgICBjYXNlIENTU19QQVJTRVJfSEVYQ09MT1I6IHsKICAgICAgICAgUkdC
QTMyIHJnYkNvbG9yID0gbV92YWx1ZS5yZ2Jjb2xvcjsKICAgICAgICAgaWYgKG1fcHJpbWl0aXZl
VW5pdFR5cGUgPT0gQ1NTX1BBUlNFUl9IRVhDT0xPUikKLSAgICAgICAgICAgIENvbG9yOjpwYXJz
ZUhleENvbG9yKG1fdmFsdWUuc3RyaW5nLCByZ2JDb2xvcik7Ci0gICAgICAgIENvbG9yIGNvbG9y
KHJnYkNvbG9yKTsKKyAgICAgICAgICAgIE9wdGlvbmFsUkdCQTo6cGFyc2VIZXhDb2xvcihtX3Zh
bHVlLnN0cmluZywgcmdiQ29sb3IpOworICAgICAgICBPcHRpb25hbFJHQkEgY29sb3IocmdiQ29s
b3IpOwogCiAgICAgICAgIFZlY3RvcjxMQ2hhcj4gcmVzdWx0OwogICAgICAgICByZXN1bHQucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eSgzMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVQb29sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCmlu
ZGV4IGFlM2UwZmQ0YWViNjBkNmRjODg2ZGM5MWI5YjAwNGM1ZjVjNDkxZGEuLmMyMzZjYTNhZTZi
ZGUxY2RjZWE1OWZjMzFmZTU5NTViZDgxYjhkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBv
b2wuY3BwCkBAIC00NCw5ICs0NCw5IEBAIENTU1ZhbHVlUG9vbDo6Q1NTVmFsdWVQb29sKCkKICAg
ICA6IG1faW5oZXJpdGVkVmFsdWUoQ1NTSW5oZXJpdGVkVmFsdWU6OmNyZWF0ZSgpKQogICAgICwg
bV9pbXBsaWNpdEluaXRpYWxWYWx1ZShDU1NJbml0aWFsVmFsdWU6OmNyZWF0ZUltcGxpY2l0KCkp
CiAgICAgLCBtX2V4cGxpY2l0SW5pdGlhbFZhbHVlKENTU0luaXRpYWxWYWx1ZTo6Y3JlYXRlRXhw
bGljaXQoKSkKLSAgICAsIG1fY29sb3JUcmFuc3BhcmVudChDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KSkKLSAgICAsIG1fY29sb3JXaGl0ZShDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlQ29sb3IoQ29sb3I6OndoaXRlKSkKLSAgICAsIG1fY29sb3JCbGFj
ayhDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29sb3IoQ29sb3I6OmJsYWNrKSkKKyAgICAsIG1f
Y29sb3JUcmFuc3BhcmVudChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29sb3IoT3B0aW9uYWxS
R0JBOjp0cmFuc3BhcmVudCkpCisgICAgLCBtX2NvbG9yV2hpdGUoQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZUNvbG9yKE9wdGlvbmFsUkdCQTo6d2hpdGUpKQorICAgICwgbV9jb2xvckJsYWNrKENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xvcihPcHRpb25hbFJHQkE6OmJsYWNrKSkKIHsKIH0K
IApAQCAtNjksMTIgKzY5LDEyIEBAIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29s
OjpjcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTUHJvcGVydHlJRCBpZGVudCkKIFJlZjxDU1NQcmlt
aXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVDb2xvclZhbHVlKHVuc2lnbmVkIHJnYlZh
bHVlKQogewogICAgIC8vIFRoZXNlIGFyZSB0aGUgZW1wdHkgYW5kIGRlbGV0ZWQgdmFsdWVzIG9m
IHRoZSBoYXNoIHRhYmxlLgotICAgIGlmIChyZ2JWYWx1ZSA9PSBDb2xvcjo6dHJhbnNwYXJlbnQp
CisgICAgaWYgKHJnYlZhbHVlID09IE9wdGlvbmFsUkdCQTo6dHJhbnNwYXJlbnQpCiAgICAgICAg
IHJldHVybiBtX2NvbG9yVHJhbnNwYXJlbnQuY29weVJlZigpOwotICAgIGlmIChyZ2JWYWx1ZSA9
PSBDb2xvcjo6d2hpdGUpCisgICAgaWYgKHJnYlZhbHVlID09IE9wdGlvbmFsUkdCQTo6d2hpdGUp
CiAgICAgICAgIHJldHVybiBtX2NvbG9yV2hpdGUuY29weVJlZigpOwogICAgIC8vIEp1c3QgYmVj
YXVzZSBpdCBpcyBjb21tb24uCi0gICAgaWYgKHJnYlZhbHVlID09IENvbG9yOjpibGFjaykKKyAg
ICBpZiAocmdiVmFsdWUgPT0gT3B0aW9uYWxSR0JBOjpibGFjaykKICAgICAgICAgcmV0dXJuIG1f
Y29sb3JCbGFjay5jb3B5UmVmKCk7CiAKICAgICAvLyBSZW1vdmUgb25lIGVudHJ5IGF0IHJhbmRv
bSBpZiB0aGUgY2FjaGUgZ3Jvd3MgdG9vIGxhcmdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1JHQkNvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUkdCQ29sb3IuaAppbmRleCAx
YWY3ZWI3NWQxY2YwYzQwYWU0ODIzYjE5NGRhYTViOTY4ZTQyNmIzLi45NTQ4ODJhMzkyN2UyMThm
M2FjZjA4YTYwMjU0NjBhY2NjNjlmMWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
UkdCQ29sb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUkdCQ29sb3IuaApAQCAtNDMsNyAr
NDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGJsdWUoKTsKICAgICAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
YWxwaGEoKTsKIAotICAgICAgICBDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKG1f
cmdiQ29sb3IpOyB9CisgICAgICAgIE9wdGlvbmFsUkdCQSBjb2xvcigpIGNvbnN0IHsgcmV0dXJu
IE9wdGlvbmFsUkdCQShtX3JnYkNvbG9yKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUkdC
Q29sb3IodW5zaWduZWQgcmdiQ29sb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U1ZHQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwCmlu
ZGV4IDkwNjNhOTAzNjRhZjYzNjQwYWNlOWE1OWJhMTZmMWFiOWI5MTQwZDAuLjcxOWQ0MzNkYzJi
NDlmZjU0MWYzZTc0NWQ3NWQ0NTgzOWNkODQ2NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TVkdDU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJz
ZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU1ZHVmFsdWUo
Q1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgZWxzZSBp
ZiAoaXNWYWxpZFN5c3RlbUNvbnRyb2xDb2xvclZhbHVlKGlkKSB8fCBpZCA9PSBDU1NWYWx1ZU1l
bnUpCiAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBTVkdQYWludDo6Y3JlYXRlQ29sb3Io
UmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5zeXN0ZW1Db2xvcihpZCkpOwogICAgICAgICAg
ICAgZWxzZSBpZiAodmFsdWVXaXRoQ2FsY3VsYXRpb24udmFsdWUoKS51bml0ID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfVVJJKSB7Ci0gICAgICAgICAgICAgICAgUkdCQTMyIGMgPSBDb2xvcjo6
dHJhbnNwYXJlbnQ7CisgICAgICAgICAgICAgICAgUkdCQTMyIGMgPSBPcHRpb25hbFJHQkE6OnRy
YW5zcGFyZW50OwogICAgICAgICAgICAgICAgIGlmIChtX3ZhbHVlTGlzdC0+bmV4dCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZUNvbG9yRnJvbVZhbHVlKCptX3ZhbHVlTGlzdC0+
Y3VycmVudCgpLCBjKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gU1ZH
UGFpbnQ6OmNyZWF0ZVVSSUFuZENvbG9yKHZhbHVlV2l0aENhbGN1bGF0aW9uLnZhbHVlKCkuc3Ry
aW5nLCBjKTsKQEAgLTM2NiwxOCArMzY2LDE4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1Bh
cnNlcjo6cGFyc2VTVkdTdHJva2VEYXNoYXJyYXkoKQogCiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NQYXJzZXI6OnBhcnNlU1ZHUGFpbnQoKQogewotICAgIFJHQkEzMiBjID0gQ29sb3I6OnRyYW5z
cGFyZW50OworICAgIFJHQkEzMiBjID0gT3B0aW9uYWxSR0JBOjp0cmFuc3BhcmVudDsKICAgICBp
ZiAoIXBhcnNlQ29sb3JGcm9tVmFsdWUoKm1fdmFsdWVMaXN0LT5jdXJyZW50KCksIGMpKQogICAg
ICAgICByZXR1cm4gU1ZHUGFpbnQ6OmNyZWF0ZVVua25vd24oKTsKLSAgICByZXR1cm4gU1ZHUGFp
bnQ6OmNyZWF0ZUNvbG9yKENvbG9yKGMpKTsKKyAgICByZXR1cm4gU1ZHUGFpbnQ6OmNyZWF0ZUNv
bG9yKE9wdGlvbmFsUkdCQShjKSk7CiB9CiAKIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNl
cjo6cGFyc2VTVkdDb2xvcigpCiB7Ci0gICAgUkdCQTMyIGMgPSBDb2xvcjo6dHJhbnNwYXJlbnQ7
CisgICAgUkdCQTMyIGMgPSBPcHRpb25hbFJHQkE6OnRyYW5zcGFyZW50OwogICAgIGlmICghcGFy
c2VDb2xvckZyb21WYWx1ZSgqbV92YWx1ZUxpc3QtPmN1cnJlbnQoKSwgYykpCiAgICAgICAgIHJl
dHVybiAwOwotICAgIHJldHVybiBTVkdDb2xvcjo6Y3JlYXRlRnJvbUNvbG9yKENvbG9yKGMpKTsK
KyAgICByZXR1cm4gU1ZHQ29sb3I6OmNyZWF0ZUZyb21Db2xvcihPcHRpb25hbFJHQkEoYykpOwog
fQogCiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlUGFpbnRPcmRlcigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggZWIwM2ZiMDVk
ZWQ2MWUyOGJiN2JlN2FlNzJmYjE5MmIyNjdiMjA0YS4uYzMyZjE1NTcxYTUxZDMwNjhlY2FlYzI1
NzNkYzAxMDZlZmFmYzY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVp
bGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252
ZXJ0ZXIuaApAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBjb252
ZXJ0VG91Y2hDYWxsb3V0KFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogI2VuZGlmCiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBzdGF0aWMgQ29sb3IgY29udmVydFRhcEhpZ2hsaWdo
dENvbG9yKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBPcHRpb25hbFJH
QkEgY29udmVydFRhcEhpZ2hsaWdodENvbG9yKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwog
I2VuZGlmCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKICAgICBz
dGF0aWMgYm9vbCBjb252ZXJ0T3ZlcmZsb3dTY3JvbGxpbmcoU3R5bGVSZXNvbHZlciYsIENTU1Zh
bHVlJik7CkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYWludE9yZGVy
IGNvbnZlcnRQYWludE9yZGVyKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRp
YyBmbG9hdCBjb252ZXJ0T3BhY2l0eShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBz
dGF0aWMgU3RyaW5nIGNvbnZlcnRTVkdVUklSZWZlcmVuY2UoU3R5bGVSZXNvbHZlciYsIENTU1Zh
bHVlJik7Ci0gICAgc3RhdGljIENvbG9yIGNvbnZlcnRTVkdDb2xvcihTdHlsZVJlc29sdmVyJiwg
Q1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWxSR0JBIGNvbnZlcnRTVkdDb2xvcihTdHls
ZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgU3R5bGVTZWxmQWxpZ25tZW50RGF0
YSBjb252ZXJ0U2VsZk9yRGVmYXVsdEFsaWdubWVudERhdGEoU3R5bGVSZXNvbHZlciYsIENTU1Zh
bHVlJik7CiAgICAgc3RhdGljIFN0eWxlQ29udGVudEFsaWdubWVudERhdGEgY29udmVydENvbnRl
bnRBbGlnbm1lbnREYXRhKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBF
R2x5cGhPcmllbnRhdGlvbiBjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihTdHlsZVJlc29sdmVyJiwg
Q1NTVmFsdWUmKTsKQEAgLTEwMjcsNyArMTAyNyw3IEBAIGlubGluZSBib29sIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFRvdWNoQ2FsbG91dChTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUm
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi1pbmxpbmUgQ29sb3IgU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGFwSGlnaGxpZ2h0Q29sb3IoU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIE9wdGlvbmFsUkdCQSBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUYXBIaWdobGlnaHRDb2xvcihTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHN0eWxlUmVz
b2x2ZXIuY29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKSk7CiB9CkBAIC0xMTA3LDcgKzExMDcsNyBAQCBpbmxpbmUgU3RyaW5nIFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFNWR1VSSVJlZmVyZW5jZShTdHlsZVJlc29sdmVyJiBzdHls
ZQogICAgIHJldHVybiBTVkdVUklSZWZlcmVuY2U6OmZyYWdtZW50SWRlbnRpZmllckZyb21JUklT
dHJpbmcocywgc3R5bGVSZXNvbHZlci5kb2N1bWVudCgpKTsKIH0KIAotaW5saW5lIENvbG9yIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNWR0NvbG9yKFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBPcHRpb25hbFJHQkEgU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHQ29sb3IoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHN2Z0NvbG9yID0gZG93bmNhc3Q8U1ZH
Q29sb3I+KHZhbHVlKTsKICAgICByZXR1cm4gc3ZnQ29sb3IuY29sb3JUeXBlKCkgPT0gU1ZHQ29s
b3I6OlNWR19DT0xPUlRZUEVfQ1VSUkVOVENPTE9SID8gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5j
b2xvcigpIDogc3ZnQ29sb3IuY29sb3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZUJ1aWxkZXJDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJD
dXN0b20uaAppbmRleCAyZWIxYWEwYjJiOTg5ZjFkMjlmM2RlYTNhZmYwMzM2MWJmODM2M2E4Li4y
YmE3ZjE2ZjNkYTMzNmFkMTkzNDA4MDQzOTc2NjBmOGYzNWU1MjNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCkBAIC03NjAsMTIgKzc2MCwxMiBAQCBpbmxpbmUgdm9p
ZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUoU3R5bGVSZXNv
bHZlciYgc3R5bGVSZQogICAgICAgICBpbnQgYmx1ciA9IHNoYWRvd1ZhbHVlLmJsdXIgPyBzaGFk
b3dWYWx1ZS5ibHVyLT5jb21wdXRlTGVuZ3RoPGludD4oY29udmVyc2lvbkRhdGEpIDogMDsKICAg
ICAgICAgaW50IHNwcmVhZCA9IHNoYWRvd1ZhbHVlLnNwcmVhZCA/IHNoYWRvd1ZhbHVlLnNwcmVh
ZC0+Y29tcHV0ZUxlbmd0aDxpbnQ+KGNvbnZlcnNpb25EYXRhKSA6IDA7CiAgICAgICAgIFNoYWRv
d1N0eWxlIHNoYWRvd1N0eWxlID0gc2hhZG93VmFsdWUuc3R5bGUgJiYgc2hhZG93VmFsdWUuc3R5
bGUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUluc2V0ID8gSW5zZXQgOiBOb3JtYWw7Ci0gICAg
ICAgIENvbG9yIGNvbG9yOworICAgICAgICBPcHRpb25hbFJHQkEgY29sb3I7CiAgICAgICAgIGlm
IChzaGFkb3dWYWx1ZS5jb2xvcikKICAgICAgICAgICAgIGNvbG9yID0gc3R5bGVSZXNvbHZlci5j
b2xvckZyb21QcmltaXRpdmVWYWx1ZSgqc2hhZG93VmFsdWUuY29sb3IpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBjb2xvciA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+Y29sb3IoKTsKLSAg
ICAgICAgYXV0byBzaGFkb3dEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPihJbnRQ
b2ludCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwgaWQgPT0gQ1NTUHJvcGVydHlX
ZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogQ29sb3I6OnRyYW5zcGFy
ZW50KTsKKyAgICAgICAgYXV0byBzaGFkb3dEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dE
YXRhPihJbnRQb2ludCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwgaWQgPT0gQ1NT
UHJvcGVydHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogT3B0aW9u
YWxSR0JBOjp0cmFuc3BhcmVudCk7CiAgICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eVRleHRT
aGFkb3cpCiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRTaGFkb3co
V1RGOjptb3ZlKHNoYWRvd0RhdGEpLCAhaXNGaXJzdEVudHJ5KTsgLy8gYWRkIHRvIHRoZSBsaXN0
IGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBlbnRyeQogICAgICAgICBlbHNlCkBAIC0xMjI3LDcg
KzEyMjcsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJr
aXRTdmdTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZQogICAgIEludFBvaW50IGxvY2F0aW9u
KHNoYWRvd1ZhbHVlLngtPmNvbXB1dGVMZW5ndGg8aW50PihzdHlsZVJlc29sdmVyLnN0YXRlKCku
Y3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLmNvcHlXaXRoQWRqdXN0ZWRab29tKDEuMGYpKSwK
ICAgICAgICAgc2hhZG93VmFsdWUueS0+Y29tcHV0ZUxlbmd0aDxpbnQ+KHN0eWxlUmVzb2x2ZXIu
c3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkuY29weVdpdGhBZGp1c3RlZFpvb20o
MS4wZikpKTsKICAgICBpbnQgYmx1ciA9IHNoYWRvd1ZhbHVlLmJsdXIgPyBzaGFkb3dWYWx1ZS5i
bHVyLT5jb21wdXRlTGVuZ3RoPGludD4oc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEoKS5jb3B5V2l0aEFkanVzdGVkWm9vbSgxLjBmKSkgOiAwOwotICAgIENv
bG9yIGNvbG9yOworICAgIE9wdGlvbmFsUkdCQSBjb2xvcjsKICAgICBpZiAoc2hhZG93VmFsdWUu
Y29sb3IpCiAgICAgICAgIGNvbG9yID0gc3R5bGVSZXNvbHZlci5jb2xvckZyb21QcmltaXRpdmVW
YWx1ZSgqc2hhZG93VmFsdWUuY29sb3IpOwogCkBAIC0xMjM1LDcgKzEyMzUsNyBAQCBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRTdmdTaGFkb3coU3R5bGVS
ZXNvbHZlciYgc3R5bGVSZQogICAgIEFTU0VSVCghc2hhZG93VmFsdWUuc3ByZWFkKTsKICAgICBB
U1NFUlQoIXNoYWRvd1ZhbHVlLnN0eWxlKTsKIAotICAgIHN2Z1N0eWxlLnNldFNoYWRvdyhzdGQ6
Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KGxvY2F0aW9uLCBibHVyLCAwLCBOb3JtYWwsIGZhbHNl
LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IENvbG9yOjp0cmFuc3BhcmVudCkpOworICAgIHN2
Z1N0eWxlLnNldFNoYWRvdyhzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KGxvY2F0aW9uLCBi
bHVyLCAwLCBOb3JtYWwsIGZhbHNlLCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IE9wdGlvbmFs
UkdCQTo6dHJhbnNwYXJlbnQpKTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseUluaXRpYWxGb250V2VpZ2h0KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCmluZGV4IGRlZGQwNzAwN2FlNWU5NWUz
YTRlNDg4NDIxZTg4YTVhZWQzN2QzNjQuLjA2ZmE1NTNiZWFlNzhlMmM1YWIyMGZhZGMwZGFmMjYx
MDlkMDM3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCkBAIC0zOTQs
NyArMzk0LDcgQEAgU3RyaW5nIFN0eWxlUHJvcGVydGllczo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZh
bHVlKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHMKICAgICAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZXNbal07CiAKLSAgICAgICAgICAg
ICAgICAgICAgLy8gQ29sb3Igb25seSBiZWxvbmdzIGluIHRoZSBsYXN0IGxheWVyLgorICAgICAg
ICAgICAgICAgICAgICAvLyBPcHRpb25hbFJHQkEgb25seSBiZWxvbmdzIGluIHRoZSBsYXN0IGxh
eWVyLgogICAgICAgICAgICAgICAgICAgICBpZiAoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtqXSA9
PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikgewogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGkgIT0gbnVtTGF5ZXJzIC0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1
ZSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNDY3M2M4
NWM3OGE0MWY2Y2M1NTQ4ODNmN2JkMjA0NTk0MjM1ZmM3MS4uZjM5YWE1YTJkODA2MDRmY2QwNWM2
MmI5YzEzNTM3Y2JkZDYzOTdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApA
QCAtMjA0Miw3ICsyMDQyLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpzZXRGb250U2l6ZShGb250
RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgZmxvYXQgc2l6ZSkKICAgICBmb250RGVzY3Jp
cHRpb24uc2V0Q29tcHV0ZWRTaXplKFN0eWxlOjpjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmll
ZFNpemUoc2l6ZSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIHVzZVNWR1pvb21S
dWxlcygpLCBtX3N0YXRlLnN0eWxlKCksIGRvY3VtZW50KCkpKTsKIH0KIAotc3RhdGljIENvbG9y
IGNvbG9yRm9yQ1NTVmFsdWUoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlkKQorc3RhdGljIE9wdGlvbmFs
UkdCQSBjb2xvckZvckNTU1ZhbHVlKENTU1ZhbHVlSUQgY3NzVmFsdWVJZCkKIHsKICAgICBzdHJ1
Y3QgQ29sb3JWYWx1ZSB7CiAgICAgICAgIENTU1ZhbHVlSUQgY3NzVmFsdWVJZDsKQEAgLTIwOTMs
MTYgKzIwOTMsMTYgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjb2xvckZyb21QcmltaXRpdmVWYWx1
ZUlzRGVyaXZlZEZyb21FbGVtZW50KENTU1ByaW1pdGl2ZVZhbHUKICAgICB9CiB9CiAKLUNvbG9y
IFN0eWxlUmVzb2x2ZXI6OmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVl
JiB2YWx1ZSwgYm9vbCBmb3JWaXNpdGVkTGluaykgY29uc3QKK09wdGlvbmFsUkdCQSBTdHlsZVJl
c29sdmVyOjpjb2xvckZyb21QcmltaXRpdmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUs
IGJvb2wgZm9yVmlzaXRlZExpbmspIGNvbnN0CiB7CiAgICAgaWYgKHZhbHVlLmlzUkdCQ29sb3Io
KSkKLSAgICAgICAgcmV0dXJuIENvbG9yKHZhbHVlLmdldFJHQkEzMlZhbHVlKCkpOworICAgICAg
ICByZXR1cm4gT3B0aW9uYWxSR0JBKHZhbHVlLmdldFJHQkEzMlZhbHVlKCkpOwogCiAgICAgY29u
c3QgU3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsKICAgICBDU1NWYWx1ZUlEIGlkZW50ID0gdmFsdWUu
Z2V0VmFsdWVJRCgpOwogICAgIHN3aXRjaCAoaWRlbnQpIHsKICAgICBjYXNlIDA6Ci0gICAgICAg
IHJldHVybiBDb2xvcigpOworICAgICAgICByZXR1cm4gT3B0aW9uYWxSR0JBKCk7CiAgICAgY2Fz
ZSBDU1NWYWx1ZVdlYmtpdFRleHQ6CiAgICAgICAgIHJldHVybiBzdGF0ZS5kb2N1bWVudCgpLnRl
eHRDb2xvcigpOwogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRMaW5rOgpAQCAtMjMwNCwxMSArMjMw
NCwxMSBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoQ1NTVmFs
dWUmIGluVmFsdWUsIEZpbHRlck9wZXJhdGlvbnMmCiAgICAgICAgICAgICBpbnQgeSA9IGl0ZW0u
eS0+Y29tcHV0ZUxlbmd0aDxpbnQ+KHN0YXRlLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSk7
CiAgICAgICAgICAgICBJbnRQb2ludCBsb2NhdGlvbih4LCB5KTsKICAgICAgICAgICAgIGludCBi
bHVyID0gaXRlbS5ibHVyID8gaXRlbS5ibHVyLT5jb21wdXRlTGVuZ3RoPGludD4oc3RhdGUuY3Nz
VG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKSA6IDA7Ci0gICAgICAgICAgICBDb2xvciBjb2xvcjsK
KyAgICAgICAgICAgIE9wdGlvbmFsUkdCQSBjb2xvcjsKICAgICAgICAgICAgIGlmIChpdGVtLmNv
bG9yKQogICAgICAgICAgICAgICAgIGNvbG9yID0gY29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoKml0
ZW0uY29sb3IpOwogCi0gICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQo
RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKGxvY2F0aW9uLCBibHVyLCBjb2xvci5p
c1ZhbGlkKCkgPyBjb2xvciA6IENvbG9yOjp0cmFuc3BhcmVudCkpOworICAgICAgICAgICAgb3Bl
cmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246OmNy
ZWF0ZShsb2NhdGlvbiwgYmx1ciwgY29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBPcHRpb25hbFJH
QkE6OnRyYW5zcGFyZW50KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIFdlYktpdENTU0ZpbHRlclZhbHVlOjpVbmtub3duRmlsdGVyT3BlcmF0aW9uOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggYWRkNTQyNWQ3ZmRiNThkMTE5ZTk4NDYyYjhl
MDYzN2E5ZmRjZWY5MS4uMmY0Yjg3NWIxMTZlN2ZlYzliZWFkYTE3YWNhNWJkNjFjZGU4OTA0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC0yMTAsNyArMjEwLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgdXNlU1ZHWm9vbVJ1bGVzRm9yTGVuZ3RoKCk7CiAKICAgICBzdGF0aWMgYm9v
bCBjb2xvckZyb21QcmltaXRpdmVWYWx1ZUlzRGVyaXZlZEZyb21FbGVtZW50KENTU1ByaW1pdGl2
ZVZhbHVlJik7Ci0gICAgQ29sb3IgY29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWUmLCBib29sIGZvclZpc2l0ZWRMaW5rID0gZmFsc2UpIGNvbnN0OworICAgIE9wdGlvbmFs
UkdCQSBjb2xvckZyb21QcmltaXRpdmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSYsIGJvb2wgZm9y
VmlzaXRlZExpbmsgPSBmYWxzZSkgY29uc3Q7CiAKICAgICBib29sIGhhc1NlbGVjdG9yRm9ySWQo
Y29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CiAgICAgYm9vbCBoYXNTZWxlY3RvckZvckNsYXNz
KGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OwpAQCAtMzkwLDcgKzM5MCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgYm9vbCBoYXNVQUFwcGVhcmFuY2UoKSBjb25zdCB7IHJldHVybiBtX2hhc1VBQXBw
ZWFyYW5jZTsgfQogICAgICAgICBCb3JkZXJEYXRhIGJvcmRlckRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2JvcmRlckRhdGE7IH0KICAgICAgICAgRmlsbExheWVyIGJhY2tncm91bmREYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRGF0YTsgfQotICAgICAgICBDb2xvciBiYWNrZ3JvdW5k
Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQorICAgICAgICBPcHRp
b25hbFJHQkEgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29s
b3I7IH0KIAogICAgICAgICBjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbigp
IHsgcmV0dXJuIG1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOyB9CiAgICAgICAgIGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgcGFyZW50Rm9udERlc2NyaXB0aW9uKCkgeyByZXR1cm4gbV9wYXJlbnRT
dHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7IH0KQEAgLTQzMyw3ICs0MzMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGJvb2wgbV9oYXNVQUFwcGVhcmFuY2U7CiAgICAgICAgIEJvcmRlckRhdGEgbV9ib3Jk
ZXJEYXRhOwogICAgICAgICBGaWxsTGF5ZXIgbV9iYWNrZ3JvdW5kRGF0YTsKLSAgICAgICAgQ29s
b3IgbV9iYWNrZ3JvdW5kQ29sb3I7CisgICAgICAgIE9wdGlvbmFsUkdCQSBtX2JhY2tncm91bmRD
b2xvcjsKIAogICAgICAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIG1fY3NzVG9MZW5ndGhD
b252ZXJzaW9uRGF0YTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21h
a2Vwcm9wLnBsIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCmluZGV4IDZiMGJiMzVj
NzcyZTdkZmU3N2E0YzU5MTlkZjA1NDEwOGFkZjQ0OTcuLmViYjg1MGQ2YjhjZmQ2N2Q0ZTE0YTNi
MDc3NDQ2NmY4Mjc1MzJhNmYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJv
cC5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKQEAgLTc0Miw3ICs3NDIs
NyBAQCBzdWIgZ2VuZXJhdGVJbmhlcml0VmFsdWVTZXR0ZXIgewogICAgICRzZXR0ZXJDb250ZW50
IC49ICRpbmRlbnQgLiAiICAgICAgICByZXR1cm47XG4iOwogICAgICRzZXR0ZXJDb250ZW50IC49
ICRpbmRlbnQgLiAiICAgIH1cbiI7CiAgIH0gZWxzaWYgKGV4aXN0cyAkcHJvcGVydGllc1dpdGhT
dHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiVmlzaXRlZExpbmtDb2xvclN1cHBvcnQifSkgewot
ICAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIENvbG9yIGNvbG9yID0gIiAuICRw
YXJlbnRTdHlsZSAuICItPiIgLiAkZ2V0dGVyIC4gIigpO1xuIjsKKyAgICAkc2V0dGVyQ29udGVu
dCAuPSAkaW5kZW50IC4gIiAgICBPcHRpb25hbFJHQkEgY29sb3IgPSAiIC4gJHBhcmVudFN0eWxl
IC4gIi0+IiAuICRnZXR0ZXIgLiAiKCk7XG4iOwogICAgIGlmICghZXhpc3RzKCRwcm9wZXJ0aWVz
V2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJOb0RlZmF1bHRDb2xvciJ9KSkgewogICAg
ICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkp
XG4iOwogICAgICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIGNvbG9yID0g
IiAuICRwYXJlbnRTdHlsZSAuICItPmNvbG9yKCk7XG4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
aW5kZXggZWI0ODRlMTc4Y2I0NGY5OTE4ZWQyYzU0YmFmYmZmY2IxMDMxOGE4ZC4uMTY2YTk2Yjgx
ODRkMjA2NzA3ZWM4MzBiMzQ1NzcyZTkxZDc2MmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC00MzQsNyArNDM0LDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29u
c3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcywgdW5zaWcKICAgICAsIG1fcGFn
aW5hdGVkRm9yU2NyZWVuKGZhbHNlKQogICAgICwgbV9jb21wYXRpYmlsaXR5TW9kZShEb2N1bWVu
dENvbXBhdGliaWxpdHlNb2RlOjpOb1F1aXJrc01vZGUpCiAgICAgLCBtX2NvbXBhdGliaWxpdHlN
b2RlTG9ja2VkKGZhbHNlKQotICAgICwgbV90ZXh0Q29sb3IoQ29sb3I6OmJsYWNrKQorICAgICwg
bV90ZXh0Q29sb3IoT3B0aW9uYWxSR0JBOjpibGFjaykKICAgICAsIG1fZG9tVHJlZVZlcnNpb24o
KytzX2dsb2JhbFRyZWVWZXJzaW9uKQogICAgICwgbV9saXN0ZW5lclR5cGVzKDApCiAgICAgLCBt
X211dGF0aW9uT2JzZXJ2ZXJUeXBlcygwKQpAQCAtODAzLDEyICs4MDMsMTIgQEAgU3RyaW5nIERv
Y3VtZW50Ojpjb21wYXRNb2RlKCkgY29uc3QKIAogdm9pZCBEb2N1bWVudDo6cmVzZXRMaW5rQ29s
b3IoKQogewotICAgIG1fbGlua0NvbG9yID0gQ29sb3IoMCwgMCwgMjM4KTsKKyAgICBtX2xpbmtD
b2xvciA9IE9wdGlvbmFsUkdCQSgwLCAwLCAyMzgpOwogfQogCiB2b2lkIERvY3VtZW50OjpyZXNl
dFZpc2l0ZWRMaW5rQ29sb3IoKQogewotICAgIG1fdmlzaXRlZExpbmtDb2xvciA9IENvbG9yKDg1
LCAyNiwgMTM5KTsgICAgCisgICAgbV92aXNpdGVkTGlua0NvbG9yID0gT3B0aW9uYWxSR0JBKDg1
LCAyNiwgMTM5KTsgICAgCiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnJlc2V0QWN0aXZlTGlua0NvbG9y
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggODBmZTdhNDhlZWYyMWI3NDEwNTQyNDIyOGE2Zjcz
MjZmNmNkNGEyNy4uZjJmNzgxN2M0YzE0ZTcwODg0NmEzYTE0MjNhMjZhNjRjMWVkNmVlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKQEAgLTY4MiwxNSArNjgyLDE1IEBAIHB1YmxpYzoKICAgICBib29s
IGlzTGF5b3V0VGltZXJBY3RpdmUoKTsKICAgICBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIGVs
YXBzZWRUaW1lKCkgY29uc3Q7CiAgICAgCi0gICAgdm9pZCBzZXRUZXh0Q29sb3IoY29uc3QgQ29s
b3ImIGNvbG9yKSB7IG1fdGV4dENvbG9yID0gY29sb3I7IH0KLSAgICBDb2xvciB0ZXh0Q29sb3Io
KSBjb25zdCB7IHJldHVybiBtX3RleHRDb2xvcjsgfQotCi0gICAgY29uc3QgQ29sb3ImIGxpbmtD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fbGlua0NvbG9yOyB9Ci0gICAgY29uc3QgQ29sb3ImIHZp
c2l0ZWRMaW5rQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3Zpc2l0ZWRMaW5rQ29sb3I7IH0KLSAg
ICBjb25zdCBDb2xvciYgYWN0aXZlTGlua0NvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVM
aW5rQ29sb3I7IH0KLSAgICB2b2lkIHNldExpbmtDb2xvcihjb25zdCBDb2xvciYgYykgeyBtX2xp
bmtDb2xvciA9IGM7IH0KLSAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQ29sb3IoY29uc3QgQ29sb3Im
IGMpIHsgbV92aXNpdGVkTGlua0NvbG9yID0gYzsgfQotICAgIHZvaWQgc2V0QWN0aXZlTGlua0Nv
bG9yKGNvbnN0IENvbG9yJiBjKSB7IG1fYWN0aXZlTGlua0NvbG9yID0gYzsgfQorICAgIHZvaWQg
c2V0VGV4dENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IpIHsgbV90ZXh0Q29sb3IgPSBj
b2xvcjsgfQorICAgIE9wdGlvbmFsUkdCQSB0ZXh0Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHRDb2xvcjsgfQorCisgICAgY29uc3QgT3B0aW9uYWxSR0JBJiBsaW5rQ29sb3IoKSBjb25zdCB7
IHJldHVybiBtX2xpbmtDb2xvcjsgfQorICAgIGNvbnN0IE9wdGlvbmFsUkdCQSYgdmlzaXRlZExp
bmtDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaXRlZExpbmtDb2xvcjsgfQorICAgIGNvbnN0
IE9wdGlvbmFsUkdCQSYgYWN0aXZlTGlua0NvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVM
aW5rQ29sb3I7IH0KKyAgICB2b2lkIHNldExpbmtDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIGMp
IHsgbV9saW5rQ29sb3IgPSBjOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua0NvbG9yKGNvbnN0
IE9wdGlvbmFsUkdCQSYgYykgeyBtX3Zpc2l0ZWRMaW5rQ29sb3IgPSBjOyB9CisgICAgdm9pZCBz
ZXRBY3RpdmVMaW5rQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiBjKSB7IG1fYWN0aXZlTGlua0Nv
bG9yID0gYzsgfQogICAgIHZvaWQgcmVzZXRMaW5rQ29sb3IoKTsKICAgICB2b2lkIHJlc2V0Vmlz
aXRlZExpbmtDb2xvcigpOwogICAgIHZvaWQgcmVzZXRBY3RpdmVMaW5rQ29sb3IoKTsKQEAgLTE0
MzAsNyArMTQzMCw3IEBAIHByaXZhdGU6CiAgICAgRG9jdW1lbnRDb21wYXRpYmlsaXR5TW9kZSBt
X2NvbXBhdGliaWxpdHlNb2RlOwogICAgIGJvb2wgbV9jb21wYXRpYmlsaXR5TW9kZUxvY2tlZDsg
Ly8gVGhpcyBpcyBjaGVhcGVyIHRoYW4gbWFraW5nIHNldENvbXBhdGliaWxpdHlNb2RlIHZpcnR1
YWwuCiAKLSAgICBDb2xvciBtX3RleHRDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgbV90ZXh0Q29s
b3I7CiAKICAgICBSZWZQdHI8RWxlbWVudD4gbV9mb2N1c2VkRWxlbWVudDsKICAgICBSZWZQdHI8
RWxlbWVudD4gbV9ob3ZlcmVkRWxlbWVudDsKQEAgLTE0NTMsOSArMTQ1Myw5IEBAIHByaXZhdGU6
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybUNvbnRyb2xsZXI+IG1fZm9ybUNvbnRyb2xsZXI7
CiAKLSAgICBDb2xvciBtX2xpbmtDb2xvcjsKLSAgICBDb2xvciBtX3Zpc2l0ZWRMaW5rQ29sb3I7
Ci0gICAgQ29sb3IgbV9hY3RpdmVMaW5rQ29sb3I7CisgICAgT3B0aW9uYWxSR0JBIG1fbGlua0Nv
bG9yOworICAgIE9wdGlvbmFsUkdCQSBtX3Zpc2l0ZWRMaW5rQ29sb3I7CisgICAgT3B0aW9uYWxS
R0JBIG1fYWN0aXZlTGlua0NvbG9yOwogICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxWaXNpdGVk
TGlua1N0YXRlPiBtX3Zpc2l0ZWRMaW5rU3RhdGU7CiAKICAgICBib29sIG1fdmlzdWFsbHlPcmRl
cmVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4IDE3YWFiMjk1
YmE2YjkyZGFlMmE3MjQ0ZGMxNTY4ZWZmMmY1NTc0N2EuLjA0OWIzMDIyYjllNDgyYzU5YTk3Nzhl
OWJkYjM4NjQxMDAyZDY2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHAKQEAgLTM4NSw3ICszODUsNyBAQCBFZGl0aW5nU3R5bGU6On5FZGl0aW5nU3R5bGUoKQogc3Rh
dGljIFJHQkEzMiBjc3NWYWx1ZVRvUkdCQShDU1NWYWx1ZSogY29sb3JWYWx1ZSkKIHsKICAgICBp
ZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPihjb2xvclZhbHVlKSkKLSAgICAgICAgcmV0dXJuIENv
bG9yOjp0cmFuc3BhcmVudDsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsUkdCQTo6dHJhbnNwYXJl
bnQ7CiAgICAgCiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZUNvbG9yID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpjb2xvclZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlQ29s
b3IuaXNSR0JDb2xvcigpKQpAQCAtMTcwNiw3ICsxNzA2LDcgQEAgdm9pZCBTdHlsZUNoYW5nZTo6
ZXh0cmFjdFRleHRTdHlsZXMoRG9jdW1lbnQqIGRvY3VtZW50LCBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzJgogICAgIH0KIAogICAgIGlmIChzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3Bl
cnR5Q29sb3IpKSB7Ci0gICAgICAgIG1fYXBwbHlGb250Q29sb3IgPSBDb2xvcih0ZXh0Q29sb3JG
cm9tU3R5bGUoc3R5bGUpKS5zZXJpYWxpemVkKCk7CisgICAgICAgIG1fYXBwbHlGb250Q29sb3Ig
PSBPcHRpb25hbFJHQkEodGV4dENvbG9yRnJvbVN0eWxlKHN0eWxlKSkuc2VyaWFsaXplZCgpOwog
ICAgICAgICBzdHlsZS5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDhhODJmM2RmMmEwZmI5YTc3NTM4NmU0MmU2Zjc5
MDI4OGY1ZjlhZDcuLjRmMzc1Yzk4YWY1N2I1ODE1ZTg1MzI4NmUzYzBlMmM2MDY2NDI1YTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtODAsMTEgKzgwLDExIEBAIHN0cnVjdCBUZXh0Q2hl
Y2tpbmdSZXN1bHQ7CiBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmUgewogICAgIENvbXBvc2l0
aW9uVW5kZXJsaW5lKCkgCiAgICAgICAgIDogc3RhcnRPZmZzZXQoMCksIGVuZE9mZnNldCgwKSwg
dGhpY2soZmFsc2UpIHsgfQotICAgIENvbXBvc2l0aW9uVW5kZXJsaW5lKHVuc2lnbmVkIHMsIHVu
c2lnbmVkIGUsIGNvbnN0IENvbG9yJiBjLCBib29sIHQpIAorICAgIENvbXBvc2l0aW9uVW5kZXJs
aW5lKHVuc2lnbmVkIHMsIHVuc2lnbmVkIGUsIGNvbnN0IE9wdGlvbmFsUkdCQSYgYywgYm9vbCB0
KSAKICAgICAgICAgOiBzdGFydE9mZnNldChzKSwgZW5kT2Zmc2V0KGUpLCBjb2xvcihjKSwgdGhp
Y2sodCkgeyB9CiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQ7CiAgICAgdW5zaWduZWQgZW5kT2Zm
c2V0OwotICAgIENvbG9yIGNvbG9yOworICAgIE9wdGlvbmFsUkdCQSBjb2xvcjsKICAgICBib29s
IHRoaWNrOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApp
bmRleCBkZTQwMWM1Y2IyYTcxZWY2NTc0YmFhMTYwOWU5NjgzM2YxNjVjNDkzLi4zNGZjOGU3NDQz
Mjk3ZWI0NjE4N2RiM2U4YTg3NDcyYzRlNjNiZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTU0OSw3ICsxNTQ5LDcgQEAgdm9pZCBGcmFtZVNlbGVj
dGlvbjo6cGFpbnRDYXJldChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFBv
aW50JiBwYWkKIH0KIAogI2lmIEVOQUJMRShURVhUX0NBUkVUKQotc3RhdGljIGlubGluZSBib29s
IGRpc2FwcGVhcnNJbnRvQmFja2dyb3VuZChDb2xvciBmb3JlZ3JvdW5kLCBDb2xvciBiYWNrZ3Jv
dW5kKQorc3RhdGljIGlubGluZSBib29sIGRpc2FwcGVhcnNJbnRvQmFja2dyb3VuZChPcHRpb25h
bFJHQkEgZm9yZWdyb3VuZCwgT3B0aW9uYWxSR0JBIGJhY2tncm91bmQpCiB7CiAgICAgcmV0dXJu
IGJhY2tncm91bmQuYmxlbmQoZm9yZWdyb3VuZCkgPT0gYmFja2dyb3VuZDsKIH0KQEAgLTE1Njks
NyArMTU2OSw3IEBAIHZvaWQgQ2FyZXRCYXNlOjpwYWludENhcmV0KE5vZGUqIG5vZGUsIEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pCiAgICAgaWYgKGNhcmV0LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ29sb3IgY2FyZXRDb2xvciA9IENvbG9yOjpi
bGFjazsKKyAgICBPcHRpb25hbFJHQkEgY2FyZXRDb2xvciA9IE9wdGlvbmFsUkdCQTo6YmxhY2s7
CiAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQjsKICAgICBF
bGVtZW50KiBlbGVtZW50ID0gaXM8RWxlbWVudD4oKm5vZGUpID8gZG93bmNhc3Q8RWxlbWVudD4o
bm9kZSkgOiBub2RlLT5wYXJlbnRFbGVtZW50KCk7CiAgICAgRWxlbWVudCogcm9vdEVkaXRhYmxl
RWxlbWVudCA9IG5vZGUtPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKQEAgLTI2NjAsNyArMjY2MCw3
IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldENhcmV0QmxpbmtzKGJvb2wgY2FyZXRCbGlua3Mp
CiAgICAgdXBkYXRlQXBwZWFyYW5jZSgpOwogfQogCi12b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRD
YXJldENvbG9yKGNvbnN0IENvbG9yJiBjYXJldENvbG9yKQordm9pZCBGcmFtZVNlbGVjdGlvbjo6
c2V0Q2FyZXRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIGNhcmV0Q29sb3IpCiB7CiAgICAgaWYg
KG1fY2FyZXRDb2xvciAhPSBjYXJldENvbG9yKSB7CiAgICAgICAgIG1fY2FyZXRDb2xvciA9IGNh
cmV0Q29sb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKaW5kZXggZGY3
NzdjOWFiMjYyNjFhNDhhMTJjZjc5YTBlZGE3NTliMTQ1ZjQwMy4uMTA1ZjYzOWQ4MGVjNjMwMDAy
YmZhMDM0MTU1YzI0ZTBiNzI5YWI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uaApAQCAtMjMzLDcgKzIzMyw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNlbGVjdFJhbmdlT25FbGVtZW50KHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5n
dGgsIE5vZGUqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyQ3VycmVudFNlbGVjdGlv
bigpOwogICAgIHZvaWQgc2V0Q2FyZXRCbGlua3MoYm9vbCBjYXJldEJsaW5rcyA9IHRydWUpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FyZXRDb2xvcihjb25zdCBDb2xvciYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FyZXRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVmlzaWJsZVNlbGVjdGlvbiB3b3JkU2VsZWN0aW9u
Q29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKICAgICB2
b2lkIHNldFVwZGF0ZUFwcGVhcmFuY2VFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3VwZGF0ZUFw
cGVhcmFuY2VFbmFibGVkID0gZW5hYmxlZDsgfQogICAgIHZvaWQgc3VwcHJlc3NTY3JvbGxpbmco
KSB7ICsrbV9zY3JvbGxpbmdTdXBwcmVzc0NvdW50OyB9CkBAIC0zNDgsNyArMzQ4LDcgQEAgcHJp
dmF0ZToKICNpZiBQTEFURk9STShJT1MpCiAgICAgYm9vbCBtX3VwZGF0ZUFwcGVhcmFuY2VFbmFi
bGVkIDogMTsKICAgICBib29sIG1fY2FyZXRCbGlua3MgOiAxOwotICAgIENvbG9yIG1fY2FyZXRD
b2xvcjsKKyAgICBPcHRpb25hbFJHQkEgbV9jYXJldENvbG9yOwogICAgIGludCBtX3Njcm9sbGlu
Z1N1cHByZXNzQ291bnQ7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggNjBjNDM3YTliYzFjMjI2YzA5NWI1NGUxZDg2MDc4
MjUyOGU1OTg0MS4uMmZjZWY3NjhkMTUxNzc5ZTliYTkxY2QxZDMxNTdjMDc0NTY3ZjkyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMzM1
LDcgKzMzNSw3IEBAIGNsYXNzIEhUTUxDb252ZXJ0ZXJDYWNoZXMgewogcHVibGljOgogICAgIFN0
cmluZyBwcm9wZXJ0eVZhbHVlRm9yTm9kZShOb2RlJiwgQ1NTUHJvcGVydHlJRCApOwogICAgIGJv
b2wgZmxvYXRQcm9wZXJ0eVZhbHVlRm9yTm9kZShOb2RlJiwgQ1NTUHJvcGVydHlJRCwgZmxvYXQm
KTsKLSAgICBDb2xvciBjb2xvclByb3BlcnR5VmFsdWVGb3JOb2RlKE5vZGUmLCBDU1NQcm9wZXJ0
eUlEKTsKKyAgICBPcHRpb25hbFJHQkEgY29sb3JQcm9wZXJ0eVZhbHVlRm9yTm9kZShOb2RlJiwg
Q1NTUHJvcGVydHlJRCk7CiAKICAgICBib29sIGlzQmxvY2tFbGVtZW50KEVsZW1lbnQmKTsKICAg
ICBib29sIGVsZW1lbnRIYXNPd25CYWNrZ3JvdW5kQ29sb3IoRWxlbWVudCYpOwpAQCAtODcxLDEy
ICs4NzEsMTIgQEAgc3RhdGljIE5TQnVuZGxlICpfd2ViS2l0QnVuZGxlKCkKICAgICByZXR1cm4g
YnVuZGxlOwogfQogCi1zdGF0aWMgaW5saW5lIFVJQ29sb3IgKl9wbGF0Zm9ybUNvbG9yKENvbG9y
IGNvbG9yKQorc3RhdGljIGlubGluZSBVSUNvbG9yICpfcGxhdGZvcm1Db2xvcihPcHRpb25hbFJH
QkEgY29sb3IpCiB7CiAgICAgcmV0dXJuIFtnZXRVSUNvbG9yQ2xhc3MoKSBfZGlzYW1iaWd1YXRl
ZF9kdWVfdG9fQ0lJbWFnZV9jb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3IsIFdl
YkNvcmU6OkNvbG9yU3BhY2VEZXZpY2VSR0IpXTsKIH0KICNlbHNlCi1zdGF0aWMgaW5saW5lIE5T
Q29sb3IgKl9wbGF0Zm9ybUNvbG9yKENvbG9yIGNvbG9yKQorc3RhdGljIGlubGluZSBOU0NvbG9y
ICpfcGxhdGZvcm1Db2xvcihPcHRpb25hbFJHQkEgY29sb3IpCiB7CiAgICAgcmV0dXJuIG5zQ29s
b3IoY29sb3IpOwogfQpAQCAtOTY0LDM2ICs5NjQsMzYgQEAgRWxlbWVudCogSFRNTENvbnZlcnRl
cjo6X2Jsb2NrTGV2ZWxFbGVtZW50Rm9yTm9kZShOb2RlKiBub2RlKQogICAgIHJldHVybiBlbGVt
ZW50OwogfQogCi1zdGF0aWMgQ29sb3Igbm9ybWFsaXplZENvbG9yKENvbG9yIGNvbG9yLCBib29s
IGlnbm9yZUJsYWNrKQorc3RhdGljIE9wdGlvbmFsUkdCQSBub3JtYWxpemVkQ29sb3IoT3B0aW9u
YWxSR0JBIGNvbG9yLCBib29sIGlnbm9yZUJsYWNrKQogewogICAgIGNvbnN0IGRvdWJsZSBDb2xv
ckVwc2lsb24gPSAxIC8gKDIgKiAoZG91YmxlKTI1NS4wKTsKICAgICAKICAgICBkb3VibGUgcmVk
LCBncmVlbiwgYmx1ZSwgYWxwaGE7CiAgICAgY29sb3IuZ2V0UkdCQShyZWQsIGdyZWVuLCBibHVl
LCBhbHBoYSk7CiAgICAgaWYgKHJlZCA8IENvbG9yRXBzaWxvbiAmJiBncmVlbiA8IENvbG9yRXBz
aWxvbiAmJiBibHVlIDwgQ29sb3JFcHNpbG9uICYmIChpZ25vcmVCbGFjayB8fCBhbHBoYSA8IENv
bG9yRXBzaWxvbikpCi0gICAgICAgIHJldHVybiBDb2xvcigpOworICAgICAgICByZXR1cm4gT3B0
aW9uYWxSR0JBKCk7CiAgICAgCiAgICAgcmV0dXJuIGNvbG9yOwogfQogCi1Db2xvciBIVE1MQ29u
dmVydGVyQ2FjaGVzOjpjb2xvclByb3BlcnR5VmFsdWVGb3JOb2RlKE5vZGUmIG5vZGUsIENTU1By
b3BlcnR5SUQgcHJvcGVydHlJZCkKK09wdGlvbmFsUkdCQSBIVE1MQ29udmVydGVyQ2FjaGVzOjpj
b2xvclByb3BlcnR5VmFsdWVGb3JOb2RlKE5vZGUmIG5vZGUsIENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJZCkKIHsKICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpKSB7CiAgICAgICAgIGlmIChOb2Rl
KiBwYXJlbnQgPSBub2RlLnBhcmVudE5vZGUoKSkKICAgICAgICAgICAgIHJldHVybiBjb2xvclBy
b3BlcnR5VmFsdWVGb3JOb2RlKCpwYXJlbnQsIHByb3BlcnR5SWQpOwotICAgICAgICByZXR1cm4g
Q29sb3IoKTsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsUkdCQSgpOwogICAgIH0KIAogICAgIEVs
ZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pihub2RlKTsKICAgICBpZiAoUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZSA9IGNvbXB1dGVkU3R5bGVQcm9wZXJ0eUZvckVsZW1lbnQoZWxlbWVu
dCwgcHJvcGVydHlJZCkpIHsKICAgICAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPigqdmFs
dWUpICYmIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmlzUkdCQ29sb3IoKSkK
LSAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVkQ29sb3IoQ29sb3IoZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KCp2YWx1ZSkuZ2V0UkdCQTMyVmFsdWUoKSksIHByb3BlcnR5SWQgPT0gQ1NT
UHJvcGVydHlDb2xvcik7CisgICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplZENvbG9yKE9wdGlv
bmFsUkdCQShkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5nZXRSR0JBMzJWYWx1
ZSgpKSwgcHJvcGVydHlJZCA9PSBDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICB9CiAKICAgICBib29s
IGluaGVyaXQgPSBmYWxzZTsKICAgICBpZiAoUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGlubGlu
ZVN0eWxlUHJvcGVydHlGb3JFbGVtZW50KGVsZW1lbnQsIHByb3BlcnR5SWQpKSB7CiAgICAgICAg
IGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKSAmJiBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4oKnZhbHVlKS5pc1JHQkNvbG9yKCkpCi0gICAgICAgICAgICByZXR1cm4gbm9ybWFs
aXplZENvbG9yKENvbG9yKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmdldFJH
QkEzMlZhbHVlKCkpLCBwcm9wZXJ0eUlkID09IENTU1Byb3BlcnR5Q29sb3IpOworICAgICAgICAg
ICAgcmV0dXJuIG5vcm1hbGl6ZWRDb2xvcihPcHRpb25hbFJHQkEoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KCp2YWx1ZSkuZ2V0UkdCQTMyVmFsdWUoKSksIHByb3BlcnR5SWQgPT0gQ1NTUHJv
cGVydHlDb2xvcik7CiAgICAgICAgIGlmICh2YWx1ZS0+aXNJbmhlcml0ZWRWYWx1ZSgpKQogICAg
ICAgICAgICAgaW5oZXJpdCA9IHRydWU7CiAgICAgfQpAQCAtMTAxOSwxMiArMTAxOSwxMiBAQCBD
b2xvciBIVE1MQ29udmVydGVyQ2FjaGVzOjpjb2xvclByb3BlcnR5VmFsdWVGb3JOb2RlKE5vZGUm
IG5vZGUsIENTU1Byb3BlcnR5SUQgcAogICAgICAgICAgICAgcmV0dXJuIGNvbG9yUHJvcGVydHlW
YWx1ZUZvck5vZGUoKnBhcmVudCwgcHJvcGVydHlJZCk7CiAgICAgfQogCi0gICAgcmV0dXJuIENv
bG9yKCk7CisgICAgcmV0dXJuIE9wdGlvbmFsUkdCQSgpOwogfQogCiBQbGF0Zm9ybUNvbG9yICpI
VE1MQ29udmVydGVyOjpfY29sb3JGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJZCkKIHsKLSAgICBDb2xvciByZXN1bHQgPSBfY2FjaGVzLT5jb2xvclBy
b3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1lbnQsIHByb3BlcnR5SWQpOworICAgIE9wdGlvbmFsUkdC
QSByZXN1bHQgPSBfY2FjaGVzLT5jb2xvclByb3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1lbnQsIHBy
b3BlcnR5SWQpOwogICAgIGlmICghcmVzdWx0LmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG5p
bDsKICAgICBQbGF0Zm9ybUNvbG9yICpwbGF0Zm9ybVJlc3VsdCA9IF9wbGF0Zm9ybUNvbG9yKHJl
c3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggNWMwYmRh
YTM4OTYwNTk0ZTU5OTIyZGYwZTcyZTMxYjM2ZmNmNTZjYS4uMTg1YzIyNGVmYmZmMjY1NjczODNj
MzlhZjRhN2YxYTEyYjY5Y2Y3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbQpAQCAtMTY3LDcgKzE2Nyw3IEBAIE5TRGljdGlvbmFyeSogRWRpdG9yOjpmb250QXR0cmli
dXRlc0ZvclNlbGVjdGlvblN0YXJ0KCkgY29uc3QKICAgICBpZiAoc3R5bGUtPmZvbnRDYXNjYWRl
KCkucHJpbWFyeUZvbnQoKS5nZXROU0ZvbnQoKSkKICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6
c3R5bGUtPmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5nZXROU0ZvbnQoKSBmb3JLZXk6TlNG
b250QXR0cmlidXRlTmFtZV07CiAKLSAgICBpZiAoc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUNvbG9yKS5pc1ZhbGlkKCkgJiYgc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eUNvbG9yKSAhPSBDb2xvcjo6YmxhY2spCisgICAgaWYgKHN0eWxlLT52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikuaXNWYWxpZCgpICYmIHN0eWxl
LT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikgIT0gT3B0aW9uYWxSR0JB
OjpibGFjaykKICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6bnNDb2xvcihzdHlsZS0+dmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKSBmb3JLZXk6TlNGb3JlZ3JvdW5kQ29s
b3JBdHRyaWJ1dGVOYW1lXTsKIAogICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdyA9IHN0eWxl
LT50ZXh0U2hhZG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5w
dXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCmluZGV4
IDhiYmRiOTdjMjUyNGI2MmFiMzlhYTY0ZTY4NDA4NTVjYTQ2OTU1OWMuLjk1ZTczNzk3Y2QyN2Vj
ZjQwYzFlNWM3YzY1YzhiMjFhN2U2YThhNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQ29sb3JJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1
dFR5cGUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBib29sIGlzVmFsaWRDb2xvclN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIC8vIFdlIGRvbid0IGFjY2VwdCAjcmdiIGFuZCAj
YWFycmdnYmIgZm9ybWF0cy4KICAgICBpZiAodmFsdWUubGVuZ3RoKCkgIT0gNykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIENvbG9yIGNvbG9yKHZhbHVlKTsKKyAgICBPcHRpb25hbFJHQkEg
Y29sb3IodmFsdWUpOwogICAgIHJldHVybiBjb2xvci5pc1ZhbGlkKCkgJiYgIWNvbG9yLmhhc0Fs
cGhhKCk7CiB9CiAKQEAgLTk3LDkgKzk3LDkgQEAgU3RyaW5nIENvbG9ySW5wdXRUeXBlOjpzYW5p
dGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSkgY29uc3QKICAgICByZXR1cm4g
cHJvcG9zZWRWYWx1ZS5sb3dlcigpOwogfQogCi1Db2xvciBDb2xvcklucHV0VHlwZTo6dmFsdWVB
c0NvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBDb2xvcklucHV0VHlwZTo6dmFsdWVBc0NvbG9y
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gQ29sb3IoZWxlbWVudCgpLnZhbHVlKCkpOworICAgIHJl
dHVybiBPcHRpb25hbFJHQkEoZWxlbWVudCgpLnZhbHVlKCkpOwogfQogCiB2b2lkIENvbG9ySW5w
dXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKQEAgLTE2Nyw3ICsxNjcsNyBAQCBib29sIENv
bG9ySW5wdXRUeXBlOjpzaG91bGRSZXNldE9uRG9jdW1lbnRBY3RpdmF0aW9uKCkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBDb2xvcklucHV0VHlwZTo6ZGlkQ2hvb3NlQ29sb3IoY29uc3Qg
Q29sb3ImIGNvbG9yKQordm9pZCBDb2xvcklucHV0VHlwZTo6ZGlkQ2hvb3NlQ29sb3IoY29uc3Qg
T3B0aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICBpZiAoZWxlbWVudCgpLmlzRGlzYWJsZWRPclJl
YWRPbmx5KCkgfHwgY29sb3IgPT0gdmFsdWVBc0NvbG9yKCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTIwOSw3ICsyMDksNyBAQCBJbnRSZWN0IENvbG9ySW5wdXRUeXBlOjplbGVtZW50UmVjdFJlbGF0
aXZlVG9Sb290VmlldygpIGNvbnN0CiAgICAgcmV0dXJuIGVsZW1lbnQoKS5kb2N1bWVudCgpLnZp
ZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KGVsZW1lbnQoKS5yZW5kZXJlcigpLT5hYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdCgpKTsKIH0KIAotQ29sb3IgQ29sb3JJbnB1dFR5cGU6OmN1cnJlbnRDb2xv
cigpCitPcHRpb25hbFJHQkEgQ29sb3JJbnB1dFR5cGU6OmN1cnJlbnRDb2xvcigpCiB7CiAgICAg
cmV0dXJuIHZhbHVlQXNDb2xvcigpOwogfQpAQCAtMjIzLDkgKzIyMyw5IEBAIGJvb2wgQ29sb3JJ
bnB1dFR5cGU6OnNob3VsZFNob3dTdWdnZXN0aW9ucygpIGNvbnN0CiAjZW5kaWYKIH0KIAotVmVj
dG9yPENvbG9yPiBDb2xvcklucHV0VHlwZTo6c3VnZ2VzdGlvbnMoKSBjb25zdAorVmVjdG9yPE9w
dGlvbmFsUkdCQT4gQ29sb3JJbnB1dFR5cGU6OnN1Z2dlc3Rpb25zKCkgY29uc3QKIHsKLSAgICBW
ZWN0b3I8Q29sb3I+IHN1Z2dlc3Rpb25zOworICAgIFZlY3RvcjxPcHRpb25hbFJHQkE+IHN1Z2dl
c3Rpb25zOwogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIEhUTUxEYXRhTGlzdEVs
ZW1lbnQqIGRhdGFMaXN0ID0gZWxlbWVudCgpLmRhdGFMaXN0KCk7CiAgICAgaWYgKGRhdGFMaXN0
KSB7CkBAIC0yMzMsNyArMjMzLDcgQEAgVmVjdG9yPENvbG9yPiBDb2xvcklucHV0VHlwZTo6c3Vn
Z2VzdGlvbnMoKSBjb25zdAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBIVE1MT3B0aW9u
RWxlbWVudCogb3B0aW9uID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KG9wdGlvbnMtPml0
ZW0oaSkpOyArK2kpIHsKICAgICAgICAgICAgIGlmICghZWxlbWVudCgpLmlzVmFsaWRWYWx1ZShv
cHRpb24tPnZhbHVlKCkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
Q29sb3IgY29sb3Iob3B0aW9uLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIE9wdGlvbmFsUkdCQSBj
b2xvcihvcHRpb24tPnZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBzdWdnZXN0aW9ucy5hcHBl
bmQoY29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlw
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5oCmluZGV4IDAyZjkwYmEy
Zjc3YmM2ZTExYzQ4Yjc3NDBmNGY4MDk5MmEzYjQ5YmYuLmNmZjJjMDFhODNkNzk3ODVmOWFmYjA0
NmZkMmRhYmYzNGQyOWEzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJ
bnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmgKQEAg
LTQzLDEyICs0MywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q29sb3JJbnB1dFR5cGUoKTsK
IAogICAgIC8vIENvbG9yQ2hvb3NlckNsaWVudCBpbXBsZW1lbnRhdGlvbi4KLSAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hvb3NlQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hvb3NlQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEVuZENob29zZXIoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEludFJl
Y3QgZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIENvbG9yIGN1cnJlbnRDb2xvcigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgT3B0aW9u
YWxSR0JBIGN1cnJlbnRDb2xvcigpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRT
aG93U3VnZ2VzdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFZlY3RvcjxDb2xv
cj4gc3VnZ2VzdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFZlY3RvcjxPcHRp
b25hbFJHQkE+IHN1Z2dlc3Rpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIGlzQ29sb3JDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC02NCw3ICs2
NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHR5cGVNaXNtYXRjaEZvcihjb25zdCBT
dHJpbmcmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVzZXRPbkRv
Y3VtZW50QWN0aXZhdGlvbigpIG92ZXJyaWRlOwogCi0gICAgQ29sb3IgdmFsdWVBc0NvbG9yKCkg
Y29uc3Q7CisgICAgT3B0aW9uYWxSR0JBIHZhbHVlQXNDb2xvcigpIGNvbnN0OwogICAgIHZvaWQg
ZW5kQ29sb3JDaG9vc2VyKCk7CiAgICAgdm9pZCB1cGRhdGVDb2xvclN3YXRjaCgpOwogICAgIEhU
TUxFbGVtZW50KiBzaGFkb3dDb2xvclN3YXRjaCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcAppbmRleCBhYWU0Mjc0NDAwNTc2NDhmYzVlNzA1MzAzYjU4NWRkNGVlZWQ2Mjk4
Li40YzVhZGU0OWZhMDhmZTAxODFiYmNkZThjYjZlYWEwYjZhMmJlY2RmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMTA5OCw3ICsxMDk4LDcgQEAgc3RhdGljIFJHQkEzMiBw
YXJzZUNvbG9yU3RyaW5nV2l0aENyYXp5TGVnYWN5UnVsZXMoY29uc3QgU3RyaW5nJiBjb2xvclN0
cmluZykKICAgICB9CiAKICAgICBpZiAoIWRpZ2l0QnVmZmVyLnNpemUoKSkKLSAgICAgICAgcmV0
dXJuIENvbG9yOjpibGFjazsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsUkdCQTo6YmxhY2s7CiAK
ICAgICAvLyBQYWQgdGhlIGJ1ZmZlciBvdXQgdG8gYXQgbGVhc3QgdGhlIG5leHQgbXVsdGlwbGUg
b2YgdGhyZWUgaW4gc2l6ZS4KICAgICBkaWdpdEJ1ZmZlci5hcHBlbmQoJzAnKTsKQEAgLTExMzIs
NyArMTEzMiw3IEBAIHN0YXRpYyBSR0JBMzIgcGFyc2VDb2xvclN0cmluZ1dpdGhDcmF6eUxlZ2Fj
eVJ1bGVzKGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbmcpCiAgICAgcmV0dXJuIG1ha2VSR0IocmVk
VmFsdWUsIGdyZWVuVmFsdWUsIGJsdWVWYWx1ZSk7CiB9CiAKLS8vIENvbG9yIHBhcnNpbmcgdGhh
dCBtYXRjaGVzIEhUTUwncyAicnVsZXMgZm9yIHBhcnNpbmcgYSBsZWdhY3kgY29sb3IgdmFsdWUi
CisvLyBPcHRpb25hbFJHQkEgcGFyc2luZyB0aGF0IG1hdGNoZXMgSFRNTCdzICJydWxlcyBmb3Ig
cGFyc2luZyBhIGxlZ2FjeSBjb2xvciB2YWx1ZSIKIHZvaWQgSFRNTEVsZW1lbnQ6OmFkZEhUTUxD
b2xvclRvU3R5bGUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUsIENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKIHsKICAgICAvLyBBbiBl
bXB0eSBzdHJpbmcgZG9lc24ndCBhcHBseSBhIGNvbG9yLiAoT25lIGNvbnRhaW5pbmcgb25seSB3
aGl0ZXNwYWNlIGRvZXMsIHdoaWNoIGlzIHdoeSB0aGlzIGNoZWNrIG9jY3VycyBiZWZvcmUgc3Ry
aXBwaW5nLikKQEAgLTExNDYsNyArMTE0Niw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OmFkZEhUTUxD
b2xvclRvU3R5bGUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUsIENTU1Byb3BlcnR5CiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgYSBuYW1lZCBDU1MgY29s
b3Igb3IgYSAzLzYtZGlnaXQgaGV4IGNvbG9yLCB1c2UgdGhhdC4KLSAgICBDb2xvciBwYXJzZWRD
b2xvcihjb2xvclN0cmluZyk7CisgICAgT3B0aW9uYWxSR0JBIHBhcnNlZENvbG9yKGNvbG9yU3Ry
aW5nKTsKICAgICBpZiAoIXBhcnNlZENvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgcGFyc2VkQ29s
b3Iuc2V0UkdCKHBhcnNlQ29sb3JTdHJpbmdXaXRoQ3JhenlMZWdhY3lSdWxlcyhjb2xvclN0cmlu
ZykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmNwcAppbmRleCA0MzgzNzA0ZjI1
MzNjNzZlMTBkNzYzOGM0MzNjMzE2N2VlOGRhNzk4Li5hYjZlZTlmMzMzNDk3MjRiY2E2MDhlZGI5
OTQ3ZjBmZmNkMzdiNzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAKQEAg
LTg0LDcgKzg0LDcgQEAgdm9pZCBIVE1MSFJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50
YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmEKICAgICAgICAgaWYgKCFmYXN0
SGFzQXR0cmlidXRlKGNvbG9yQXR0cikpIHsKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVz
ZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwgQ1NT
VmFsdWVTb2xpZCk7CiAKLSAgICAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZGFy
a0dyYXlWYWx1ZSA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUNvbG9yVmFsdWUoQ29sb3I6OmRhcmtH
cmF5KTsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZGFya0dyYXlWYWx1
ZSA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUNvbG9yVmFsdWUoT3B0aW9uYWxSR0JBOjpkYXJrR3Jh
eSk7CiAgICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckNvbG9y
LCBkYXJrR3JheVZhbHVlKTsKICAgICAgICAgICAgIHN0eWxlLnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yLCBkYXJrR3JheVZhbHVlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggOWE0ZGRlYzVjMWQxMTZmZDE2OGU2
ZDk1NTgxYjFjYmY3MzE3YzA1Yi4uNDk3Y2M4ZWVmYTY4YTc4ZjI1ODJjYjAwMjI1N2NkMWFiYzll
N2M5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xNTQy
LDcgKzE1NDIsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnJlcXVpcmVkQXR0cmlidXRlQ2hh
bmdlZCgpCiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLXZvaWQgSFRNTElucHV0
RWxlbWVudDo6c2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3Nlcihjb25zdCBDb2xvciYgY29sb3IpCit2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdENvbG9ySW5Db2xvckNob29zZXIoY29uc3QgT3B0
aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICBpZiAoIW1faW5wdXRUeXBlLT5pc0NvbG9yQ29udHJv
bCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5o
CmluZGV4IDliMjc1MDQxOWI0ZmM4NzI5Njk5MGYyZmVjODU4ZTUwZTllZDhhZGMuLmJhZTQ1MDcy
YTdkMGZkZjAwMGY4NjRkZmM2ZDI2MjhiYmZiMDFlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5oCkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxF
KElOUFVUX1RZUEVfQ09MT1IpCiAgICAgLy8gRm9yIHRlc3QgcHVycG9zZXMuCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKGNvbnN0IENvbG9yJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKGNvbnN0IE9w
dGlvbmFsUkdCQSYpOwogI2VuZGlmCiAKICAgICBTdHJpbmcgZGVmYXVsdFRvb2xUaXAoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmNwcAppbmRl
eCA0M2FkZjM2MTcwZDVhMTZjOGE3ZjkzMjkxYzM5ODY0ZjQzMTQzZDBkLi45ZDU4M2ZjNTcwNmJj
ODhjMzg3MTg3MzU4ZWNjYTJjM2YzMWM4NGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzR3JhZGllbnQuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgQ2FudmFzR3Jh
ZGllbnQ6OmFkZENvbG9yU3RvcChmbG9hdCB2YWx1ZSwgY29uc3QgU3RyaW5nJiBjb2xvciwgRXhj
ZXB0aW9uQ29kCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2dyYWRpZW50LT5hZGRD
b2xvclN0b3AodmFsdWUsIENvbG9yKHJnYmEpKTsKKyAgICBtX2dyYWRpZW50LT5hZGRDb2xvclN0
b3AodmFsdWUsIE9wdGlvbmFsUkdCQShyZ2JhKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAppbmRleCA3NjdjNjJjM2NjMGZiYTU0YzBlMGNhMDNiYTRiOTFkOWJhNGUyY2IzLi4w
NzJmYWE0YjE4MjUyNDQ5MWVlYmQ1YjM4ZDg2Mjc1ZDZlYzFjZWY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAK
QEAgLTE1OSwxNCArMTU5LDE0IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZXNl
dCgpCiB9CiAKIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6U3RhdGU6OlN0YXRlKCkKLSAgICA6
IG1fc3Ryb2tlU3R5bGUoQ29sb3I6OmJsYWNrKQotICAgICwgbV9maWxsU3R5bGUoQ29sb3I6OmJs
YWNrKQorICAgIDogbV9zdHJva2VTdHlsZShPcHRpb25hbFJHQkE6OmJsYWNrKQorICAgICwgbV9m
aWxsU3R5bGUoT3B0aW9uYWxSR0JBOjpibGFjaykKICAgICAsIG1fbGluZVdpZHRoKDEpCiAgICAg
LCBtX2xpbmVDYXAoQnV0dENhcCkKICAgICAsIG1fbGluZUpvaW4oTWl0ZXJKb2luKQogICAgICwg
bV9taXRlckxpbWl0KDEwKQogICAgICwgbV9zaGFkb3dCbHVyKDApCi0gICAgLCBtX3NoYWRvd0Nv
bG9yKENvbG9yOjp0cmFuc3BhcmVudCkKKyAgICAsIG1fc2hhZG93Q29sb3IoT3B0aW9uYWxSR0JB
Ojp0cmFuc3BhcmVudCkKICAgICAsIG1fZ2xvYmFsQWxwaGEoMSkKICAgICAsIG1fZ2xvYmFsQ29t
cG9zaXRlKENvbXBvc2l0ZVNvdXJjZU92ZXIpCiAgICAgLCBtX2dsb2JhbEJsZW5kKEJsZW5kTW9k
ZU5vcm1hbCkKQEAgLTQ3NCw3ICs0NzQsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6c2V0U2hhZG93Qmx1cihmbG9hdCBibHVyKQogCiBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzaGFkb3dDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIENvbG9yKHN0YXRlKCku
bV9zaGFkb3dDb2xvcikuc2VyaWFsaXplZCgpOworICAgIHJldHVybiBPcHRpb25hbFJHQkEoc3Rh
dGUoKS5tX3NoYWRvd0NvbG9yKS5zZXJpYWxpemVkKCk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpzZXRTaGFkb3dDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yKQpAQCAtMTA5
NSw3ICsxMDk1LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyUmVjdChm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGUKICAgICBpZiAoc2hvdWxkRHJh
d1NoYWRvd3MoKSkgewogICAgICAgICBjb250ZXh0LT5zYXZlKCk7CiAgICAgICAgIHNhdmVkID0g
dHJ1ZTsKLSAgICAgICAgY29udGV4dC0+c2V0TGVnYWN5U2hhZG93KEZsb2F0U2l6ZSgpLCAwLCBD
b2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0
LT5zZXRMZWdhY3lTaGFkb3coRmxvYXRTaXplKCksIDAsIE9wdGlvbmFsUkdCQTo6dHJhbnNwYXJl
bnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIH0KICAgICBpZiAoc3RhdGUoKS5tX2dsb2Jh
bEFscGhhICE9IDEpIHsKICAgICAgICAgaWYgKCFzYXZlZCkgewpAQCAtMTE5Myw3ICsxMTkzLDcg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVJlY3QoZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGgKIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyKQogewot
ICAgIHNldFNoYWRvdyhGbG9hdFNpemUod2lkdGgsIGhlaWdodCksIGJsdXIsIENvbG9yOjp0cmFu
c3BhcmVudCk7CisgICAgc2V0U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgYmx1ciwg
T3B0aW9uYWxSR0JBOjp0cmFuc3BhcmVudCk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwg
Y29uc3QgU3RyaW5nJiBjb2xvcikKQEAgLTEyMzQsNyArMTIzNCw3IEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxv
YXQgYmx1ciwKIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyU2hhZG93KCkK
IHsKLSAgICBzZXRTaGFkb3coRmxvYXRTaXplKCksIDAsIENvbG9yOjp0cmFuc3BhcmVudCk7Cisg
ICAgc2V0U2hhZG93KEZsb2F0U2l6ZSgpLCAwLCBPcHRpb25hbFJHQkE6OnRyYW5zcGFyZW50KTsK
IH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhjb25zdCBGbG9h
dFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgUkdCQTMyIGNvbG9yKQpAQCAtMTI2Miw3ICsxMjYy
LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFwcGx5U2hhZG93KCkKICAgICAg
ICAgZmxvYXQgaGVpZ2h0ID0gc3RhdGUoKS5tX3NoYWRvd09mZnNldC5oZWlnaHQoKTsKICAgICAg
ICAgYy0+c2V0TGVnYWN5U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCku
bV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwogICAgIH0gZWxzZQotICAgICAgICBjLT5zZXRMZWdhY3lTaGFkb3coRmxvYXRTaXplKCksIDAs
IENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGMtPnNl
dExlZ2FjeVNoYWRvdyhGbG9hdFNpemUoKSwgMCwgT3B0aW9uYWxSR0JBOjp0cmFuc3BhcmVudCwg
Q29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzaG91bGREcmF3U2hhZG93cygpIGNvbnN0CkBAIC0yMzcwLDcgKzIzNzAsNyBAQCB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRl
eHQsIGZsb2F0IHgsIGZsbwogCiAgICAgICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0Owog
ICAgICAgICAgICAgZmxvYXQgc2hhZG93UmFkaXVzOwotICAgICAgICAgICAgQ29sb3Igc2hhZG93
Q29sb3I7CisgICAgICAgICAgICBPcHRpb25hbFJHQkEgc2hhZG93Q29sb3I7CiAgICAgICAgICAg
ICBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2U7CiAgICAgICAgICAgICBjLT5nZXRTaGFkb3co
c2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNl
KTsKIApAQCAtMjM4NCw5ICsyMzg0LDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8KICAgICAg
ICAgICAgIGMtPnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hh
ZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogCiAgICAgICAgICAgICBpZiAoZmlsbCkKLSAg
ICAgICAgICAgICAgICBjLT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgICAgICAgICBjLT5zZXRGaWxsQ29sb3IoT3B0aW9uYWxSR0JBOjpi
bGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgYy0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICAgICAgICAgICAgICBjLT5zZXRTdHJva2VDb2xvcihPcHRpb25hbFJHQkE6OmJsYWNr
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgICAgICAgICAgYy0+ZHJhd0JpZGlUZXh0KGZv
bnQsIHRleHRSdW4sIGxvY2F0aW9uICsgb2Zmc2V0LCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJ
ZkZvbnROb3RSZWFkeSk7CiAgICAgICAgIH0KQEAgLTIzOTYsOSArMjM5Niw5IEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4
dCwgZmxvYXQgeCwgZmxvCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogbWFza0ltYWdlQ29udGV4
dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgICAgIGlmIChmaWxsKQotICAgICAgICAg
ICAgbWFza0ltYWdlQ29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFj
ZURldmljZVJHQik7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT5zZXRGaWxsQ29sb3Io
T3B0aW9uYWxSR0JBOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJs
YWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQt
PnNldFN0cm9rZUNvbG9yKE9wdGlvbmFsUkdCQTo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwogICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGMtPnN0
cm9rZVRoaWNrbmVzcygpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNTdHlsZS5jcHAKaW5kZXggZDM1OGEyMTc5NTg4Mzk2YmZiNzBhNWZkN2NlYjUyODAy
NGZlMzkxOS4uMjQ3NDVhZGU1Nzg1OWNjY2U3NGRiNzkzNGZhYWI0NWQ3ZGIwODZkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcApAQCAtNTksOCArNTksOCBA
QCBzdGF0aWMgQ29sb3JQYXJzZVJlc3VsdCBwYXJzZUNvbG9yKFJHQkEzMiYgcGFyc2VkQ29sb3Is
IGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbgogUkdCQTMyIGN1cnJlbnRDb2xvcihIVE1MQ2FudmFz
RWxlbWVudCogY2FudmFzKQogewogICAgIGlmICghY2FudmFzIHx8ICFjYW52YXMtPmluRG9jdW1l
bnQoKSB8fCAhY2FudmFzLT5pbmxpbmVTdHlsZSgpKQotICAgICAgICByZXR1cm4gQ29sb3I6OmJs
YWNrOwotICAgIFJHQkEzMiByZ2JhID0gQ29sb3I6OmJsYWNrOworICAgICAgICByZXR1cm4gT3B0
aW9uYWxSR0JBOjpibGFjazsKKyAgICBSR0JBMzIgcmdiYSA9IE9wdGlvbmFsUkdCQTo6YmxhY2s7
CiAgICAgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIGNhbnZhcy0+aW5saW5lU3R5bGUoKS0+
Z2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUNvbG9yKSk7CiAgICAgcmV0dXJuIHJnYmE7CiB9
CkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlTdHJva2VDb2xvcihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q01ZS0E6IHsKICAgICAgICAgLy8gRklYTUU6IERvIHRoaXMgdGhyb3VnaCBwbGF0Zm9ybS1pbmRl
cGVuZGVudCBHcmFwaGljc0NvbnRleHQgQVBJLgotICAgICAgICAvLyBXZSdsbCBuZWVkIGEgZmFu
Y2llciBDb2xvciBhYnN0cmFjdGlvbiB0byBzdXBwb3J0IENNWUtBIGNvcnJlY3RseQorICAgICAg
ICAvLyBXZSdsbCBuZWVkIGEgZmFuY2llciBPcHRpb25hbFJHQkEgYWJzdHJhY3Rpb24gdG8gc3Vw
cG9ydCBDTVlLQSBjb3JyZWN0bHkKICNpZiBVU0UoQ0cpCiAgICAgICAgIENHQ29udGV4dFNldENN
WUtTdHJva2VDb2xvcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgbV9jbXlrYS0+YywgbV9j
bXlrYS0+bSwgbV9jbXlrYS0+eSwgbV9jbXlrYS0+aywgbV9jbXlrYS0+YSk7CiAjZWxzZQpAQCAt
Mjc3LDcgKzI3Nyw3IEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCkgY29uc3QKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDTVlLQTog
ewogICAgICAgICAvLyBGSVhNRTogRG8gdGhpcyB0aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50
IEdyYXBoaWNzQ29udGV4dCBBUEkuCi0gICAgICAgIC8vIFdlJ2xsIG5lZWQgYSBmYW5jaWVyIENv
bG9yIGFic3RyYWN0aW9uIHRvIHN1cHBvcnQgQ01ZS0EgY29ycmVjdGx5CisgICAgICAgIC8vIFdl
J2xsIG5lZWQgYSBmYW5jaWVyIE9wdGlvbmFsUkdCQSBhYnN0cmFjdGlvbiB0byBzdXBwb3J0IENN
WUtBIGNvcnJlY3RseQogI2lmIFVTRShDRykKICAgICAgICAgQ0dDb250ZXh0U2V0Q01ZS0ZpbGxD
b2xvcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgbV9jbXlrYS0+YywgbV9jbXlrYS0+bSwg
bV9jbXlrYS0+eSwgbV9jbXlrYS0+aywgbV9jbXlrYS0+YSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgKaW5kZXggOWJlYjE2MjY5YTU2NzBjNGI4MzIyMDkx
MzBhOGJiM2FlYjM2ZjQzYi4uY2UyZGY2ZTkxZWQyYTBiMGRiNGUyYTNkNTJmYjAyOGJlYjZlMWVk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCkBAIC0xMzUsOCAr
MTM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBSR0JBIHx8IG1fdHlwZSA9PSBDTVlLQSk7CiAgICAgICAgIGlmIChtX3R5cGUgPT0gUkdC
QSkKLSAgICAgICAgICAgIHJldHVybiBDb2xvcihtX3JnYmEpLnNlcmlhbGl6ZWQoKTsKLSAgICAg
ICAgcmV0dXJuIENvbG9yKG1fY215a2EtPnJnYmEpLnNlcmlhbGl6ZWQoKTsKKyAgICAgICAgICAg
IHJldHVybiBPcHRpb25hbFJHQkEobV9yZ2JhKS5zZXJpYWxpemVkKCk7CisgICAgICAgIHJldHVy
biBPcHRpb25hbFJHQkEobV9jbXlrYS0+cmdiYSkuc2VyaWFsaXplZCgpOwogICAgIH0KIAogICAg
IGlubGluZSBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoQ2FudmFzU3R5bGUmJiBvdGhlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKaW5kZXgg
MzM0YzQ3ZTQ3MzZkZTI2ZTAyNmI4ZDdkZDYyMzlhOTg3MTcwM2MyMi4uNzVlYWE4OGU0ZWUyYjM1
MGJhNzVjZWIwZjdhYTVhNThhZjgzYzdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKQEAgLTYxLDEzICs2MSwxMyBAQCBwdWJsaWM6CiAg
ICAgU3RyaW5nIGZvbnROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mb250TmFtZTsgfQogICAgIHZv
aWQgc2V0Rm9udE5hbWUoU3RyaW5nIG5hbWUpIHsgbV9mb250TmFtZSA9IG5hbWU7IH0KIAotICAg
IENvbG9yIGZvcmVncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9yZWdyb3VuZENvbG9y
OyB9CisgICAgT3B0aW9uYWxSR0JBIGZvcmVncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
Zm9yZWdyb3VuZENvbG9yOyB9CiAgICAgdm9pZCBzZXRGb3JlZ3JvdW5kQ29sb3IoUkdCQTMyIGNv
bG9yKSB7IG1fZm9yZWdyb3VuZENvbG9yLnNldFJHQihjb2xvcik7IH0KICAgICAKLSAgICBDb2xv
ciBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQor
ICAgIE9wdGlvbmFsUkdCQSBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tn
cm91bmRDb2xvcjsgfQogICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKFJHQkEzMiBjb2xvcikg
eyBtX2JhY2tncm91bmRDb2xvci5zZXRSR0IoY29sb3IpOyB9CiAgICAgCi0gICAgQ29sb3IgaGln
aGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX2hpZ2hsaWdodENvbG9yOyB9CisgICAgT3B0
aW9uYWxSR0JBIGhpZ2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9oaWdobGlnaHRDb2xv
cjsgfQogICAgIHZvaWQgc2V0SGlnaGxpZ2h0Q29sb3IoUkdCQTMyIGNvbG9yKSB7IG1faGlnaGxp
Z2h0Q29sb3Iuc2V0UkdCKGNvbG9yKTsgfQogICAgIAogICAgIHZpcnR1YWwgdm9pZCBzZXRGb250
U2l6ZShpbnQsIGNvbnN0IEludFNpemUmLCBib29sIGltcG9ydGFudCkgb3ZlcnJpZGU7CkBAIC04
NCw5ICs4NCw5IEBAIHByaXZhdGU6CiAKICAgICBUZXh0VHJhY2tDdWVHZW5lcmljKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUm
IGVuZCwgY29uc3QgU3RyaW5nJik7CiAgICAgCi0gICAgQ29sb3IgbV9mb3JlZ3JvdW5kQ29sb3I7
Ci0gICAgQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7Ci0gICAgQ29sb3IgbV9oaWdobGlnaHRDb2xv
cjsKKyAgICBPcHRpb25hbFJHQkEgbV9mb3JlZ3JvdW5kQ29sb3I7CisgICAgT3B0aW9uYWxSR0JB
IG1fYmFja2dyb3VuZENvbG9yOworICAgIE9wdGlvbmFsUkdCQSBtX2hpZ2hsaWdodENvbG9yOwog
ICAgIGRvdWJsZSBtX2Jhc2VGb250U2l6ZVJlbGF0aXZlVG9WaWRlb0hlaWdodDsKICAgICBkb3Vi
bGUgbV9mb250U2l6ZU11bHRpcGxpZXI7CiAgICAgU3RyaW5nIG1fZm9udE5hbWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA1NjQ4Mjlm
YzFjZDYwZTM1YzhmZGQwMzk1ZmNhOWE5MTExNGNjMzA3Li5jMWI3OGZhYjJiODgxNjEzODQyZWRi
MjA4MDU4YThjMTIwZjdjMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKQEAgLTEwNCwyMCArMTA0LDIwIEBAIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heFRleHRTaXplID0gMTAwMDA7CiBzdGF0
aWMgY29uc3QgVUNoYXIgZWxsaXBzaXNVQ2hhcltdID0geyAweDIwMjYsIDAgfTsKIAotc3RhdGlj
IENvbG9yIHBhcnNlQ29sb3IoY29uc3QgSW5zcGVjdG9yT2JqZWN0KiBjb2xvck9iamVjdCkKK3N0
YXRpYyBPcHRpb25hbFJHQkEgcGFyc2VDb2xvcihjb25zdCBJbnNwZWN0b3JPYmplY3QqIGNvbG9y
T2JqZWN0KQogewogICAgIGlmICghY29sb3JPYmplY3QpCi0gICAgICAgIHJldHVybiBDb2xvcjo6
dHJhbnNwYXJlbnQ7CisgICAgICAgIHJldHVybiBPcHRpb25hbFJHQkE6OnRyYW5zcGFyZW50Owog
CiAgICAgaW50IHIgPSAwOwogICAgIGludCBnID0gMDsKICAgICBpbnQgYiA9IDA7CiAgICAgaWYg
KCFjb2xvck9iamVjdC0+Z2V0SW50ZWdlcigiciIsIHIpIHx8ICFjb2xvck9iamVjdC0+Z2V0SW50
ZWdlcigiZyIsIGcpIHx8ICFjb2xvck9iamVjdC0+Z2V0SW50ZWdlcigiYiIsIGIpKQotICAgICAg
ICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50OworICAgICAgICByZXR1cm4gT3B0aW9uYWxSR0JB
Ojp0cmFuc3BhcmVudDsKIAogICAgIGRvdWJsZSBhID0gMS4wOwogICAgIGlmICghY29sb3JPYmpl
Y3QtPmdldERvdWJsZSgiYSIsIGEpKQotICAgICAgICByZXR1cm4gQ29sb3IociwgZywgYik7Cisg
ICAgICAgIHJldHVybiBPcHRpb25hbFJHQkEociwgZywgYik7CiAKICAgICAvLyBDbGFtcCBhbHBo
YSB0byB0aGUgWzAuLjFdIHJhbmdlLgogICAgIGlmIChhIDwgMCkKQEAgLTEyNSwxMCArMTI1LDEw
IEBAIHN0YXRpYyBDb2xvciBwYXJzZUNvbG9yKGNvbnN0IEluc3BlY3Rvck9iamVjdCogY29sb3JP
YmplY3QpCiAgICAgZWxzZSBpZiAoYSA+IDEpCiAgICAgICAgIGEgPSAxOwogCi0gICAgcmV0dXJu
IENvbG9yKHIsIGcsIGIsIHN0YXRpY19jYXN0PGludD4oYSAqIDI1NSkpOworICAgIHJldHVybiBP
cHRpb25hbFJHQkEociwgZywgYiwgc3RhdGljX2Nhc3Q8aW50PihhICogMjU1KSk7CiB9CiAKLXN0
YXRpYyBDb2xvciBwYXJzZUNvbmZpZ0NvbG9yKGNvbnN0IFN0cmluZyYgZmllbGROYW1lLCBjb25z
dCBJbnNwZWN0b3JPYmplY3QqIGNvbmZpZ09iamVjdCkKK3N0YXRpYyBPcHRpb25hbFJHQkEgcGFy
c2VDb25maWdDb2xvcihjb25zdCBTdHJpbmcmIGZpZWxkTmFtZSwgY29uc3QgSW5zcGVjdG9yT2Jq
ZWN0KiBjb25maWdPYmplY3QpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY29sb3JP
YmplY3Q7CiAgICAgY29uZmlnT2JqZWN0LT5nZXRPYmplY3QoZmllbGROYW1lLCBjb2xvck9iamVj
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zlcmxh
eS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaAppbmRleCAw
MTE0NjRlY2ExMDFjOGRkYTkwNGU3NDE1MDRjMzVjZmU4NmQ0YTUyLi5hMGE5MjQ4NmI5NGMzNWI1
YWU3ZjM1MzllYTdkNjZiNjg0NmNkYjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JPdmVybGF5LmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgTm9kZUhpZ2hsaWdodERh
dGE7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29sb3I7CitjbGFzcyBPcHRpb25h
bFJHQkE7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBj
bGFzcyBJbnRSZWN0OwpAQCAtNjMsMTEgKzYzLDExIEBAIGNsYXNzIFBhZ2U7CiBzdHJ1Y3QgSGln
aGxpZ2h0Q29uZmlnIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBDb2xvciBjb250ZW50OwotICAgIENvbG9yIGNvbnRlbnRPdXRsaW5lOwotICAgIENvbG9yIHBh
ZGRpbmc7Ci0gICAgQ29sb3IgYm9yZGVyOwotICAgIENvbG9yIG1hcmdpbjsKKyAgICBPcHRpb25h
bFJHQkEgY29udGVudDsKKyAgICBPcHRpb25hbFJHQkEgY29udGVudE91dGxpbmU7CisgICAgT3B0
aW9uYWxSR0JBIHBhZGRpbmc7CisgICAgT3B0aW9uYWxSR0JBIGJvcmRlcjsKKyAgICBPcHRpb25h
bFJHQkEgbWFyZ2luOwogICAgIGJvb2wgc2hvd0luZm87CiAgICAgYm9vbCB1c2VQYWdlQ29vcmRp
bmF0ZXM7CiB9OwpAQCAtOTEsMTEgKzkxLDExIEBAIHN0cnVjdCBIaWdobGlnaHQgewogICAgICAg
ICB1c2VQYWdlQ29vcmRpbmF0ZXMgPSBoaWdobGlnaHRDb25maWcudXNlUGFnZUNvb3JkaW5hdGVz
OwogICAgIH0KIAotICAgIENvbG9yIGNvbnRlbnRDb2xvcjsKLSAgICBDb2xvciBjb250ZW50T3V0
bGluZUNvbG9yOwotICAgIENvbG9yIHBhZGRpbmdDb2xvcjsKLSAgICBDb2xvciBib3JkZXJDb2xv
cjsKLSAgICBDb2xvciBtYXJnaW5Db2xvcjsKKyAgICBPcHRpb25hbFJHQkEgY29udGVudENvbG9y
OworICAgIE9wdGlvbmFsUkdCQSBjb250ZW50T3V0bGluZUNvbG9yOworICAgIE9wdGlvbmFsUkdC
QSBwYWRkaW5nQ29sb3I7CisgICAgT3B0aW9uYWxSR0JBIGJvcmRlckNvbG9yOworICAgIE9wdGlv
bmFsUkdCQSBtYXJnaW5Db2xvcjsKIAogICAgIEhpZ2hsaWdodFR5cGUgdHlwZSB7SGlnaGxpZ2h0
VHlwZTo6Tm9kZX07CiAgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGVhOTI1NWM4MjBmMjNkNGE5NGNkNWRjYzJhYjBl
ZmM5NmMxNTYyZTEuLjljMDg1YzAyMmQxNDQwMGY2ZmEwMzlmNTIwNWY3MjhlZTZlMjhkNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAg
UmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gRW1wdHlDaHJvbWVDbGllbnQ6OmNyZWF0ZVNlYXJjaFBv
cHVwTWVudShQb3B1cE1lbnVDbGllbnQKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQotc3RkOjp1bmlxdWVfcHRyPENvbG9yQ2hvb3Nlcj4gRW1wdHlDaHJvbWVDbGllbnQ6OmNyZWF0
ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqLCBjb25zdCBDb2xvciYpCitzdGQ6OnVu
aXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9v
c2VyKENvbG9yQ2hvb3NlckNsaWVudCosIGNvbnN0IE9wdGlvbmFsUkdCQSYpCiB7CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggOGM1
N2Q2ZTRkYWU2YmU2NDA2MTc5ZmFlYWY0MjRmYzE1ZGI4NDVlZC4uZjIzMmZlODgzYzViMWJjMmEx
ZWFhY2U0YmE5MDZhYjRhZWJmOTJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aApAQCAtMTU4LDcgKzE1OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGludDY0X3QpIG92ZXJy
aWRlIHsgfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgdmlydHVhbCBzdGQ6
OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9vc2Vy
Q2xpZW50KiwgY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVl
X3B0cjxDb2xvckNob29zZXI+IGNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQq
LCBjb25zdCBPcHRpb25hbFJHQkEmKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2
b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYzlkZmYy
MmI5N2Y0ZmJjM2ZhMDY0YTk1M2ViMDU3ZWMwYTgzOWQwZS4uNzA2YjI2MGJiMzE5MmZlNDUxZTcw
YTM5NWQwODM4MjAwOTBkMDAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogICAgIGNsYXNzIENhY2hlZEZyYW1lOwogICAgIGNs
YXNzIENhY2hlZFJlc291cmNlUmVxdWVzdDsKLSAgICBjbGFzcyBDb2xvcjsKKyAgICBjbGFzcyBP
cHRpb25hbFJHQkE7CiAgICAgY2xhc3MgRE9NV2luZG93RXh0ZW5zaW9uOwogICAgIGNsYXNzIERP
TVdyYXBwZXJXb3JsZDsKICAgICBjbGFzcyBEb2N1bWVudExvYWRlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKaW5kZXgg
NmExZTliNzI5NDZkNzhkY2M2YjgwNmQxNzRhNGNkZTE4NDhkZDA5MS4uZmZlNTU0MzViNDYwNmNm
ZDg0ZDM2ODdkZGZmYjdkNDkzMzhkYmNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKQEAgLTIyNiwxNSArMjI2LDE1
IEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNXaW5kb3dD
U1MoKSBjb25zdAogICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKICAg
ICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY29sb3IgPSBhZG9wdENGKE1BQ2FwdGlvbkFwcGVhcmFu
Y2VDb3B5V2luZG93Q29sb3Ioa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZp
b3IpKTsKIAotICAgIENvbG9yIHdpbmRvd0NvbG9yKGNvbG9yLmdldCgpKTsKKyAgICBPcHRpb25h
bFJHQkEgd2luZG93Q29sb3IoY29sb3IuZ2V0KCkpOwogICAgIGlmICghd2luZG93Q29sb3IuaXNW
YWxpZCgpKQotICAgICAgICB3aW5kb3dDb2xvciA9IENvbG9yOjp0cmFuc3BhcmVudDsKKyAgICAg
ICAgd2luZG93Q29sb3IgPSBPcHRpb25hbFJHQkE6OnRyYW5zcGFyZW50OwogCiAgICAgYm9vbCBp
bXBvcnRhbnQgPSBiZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFs
dWU7CiAgICAgQ0dGbG9hdCBvcGFjaXR5ID0gTUFDYXB0aW9uQXBwZWFyYW5jZUdldFdpbmRvd09w
YWNpdHkoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpOwogICAgIGlm
ICghaW1wb3J0YW50KQogICAgICAgICBpbXBvcnRhbnQgPSBiZWhhdmlvciA9PSBrTUFDYXB0aW9u
QXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWU7Ci0gICAgU3RyaW5nIHdpbmRvd1N0eWxlID0gY29s
b3JQcm9wZXJ0eUNTUyhDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ29sb3Iod2luZG93Q29s
b3IucmVkKCksIHdpbmRvd0NvbG9yLmdyZWVuKCksIHdpbmRvd0NvbG9yLmJsdWUoKSwgc3RhdGlj
X2Nhc3Q8aW50PihvcGFjaXR5ICogMjU1KSksIGltcG9ydGFudCk7CisgICAgU3RyaW5nIHdpbmRv
d1N0eWxlID0gY29sb3JQcm9wZXJ0eUNTUyhDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgT3B0
aW9uYWxSR0JBKHdpbmRvd0NvbG9yLnJlZCgpLCB3aW5kb3dDb2xvci5ncmVlbigpLCB3aW5kb3dD
b2xvci5ibHVlKCksIHN0YXRpY19jYXN0PGludD4ob3BhY2l0eSAqIDI1NSkpLCBpbXBvcnRhbnQp
OwogCiAgICAgaWYgKCFvcGFjaXR5KQogICAgICAgICByZXR1cm4gd2luZG93U3R5bGU7CkBAIC0y
NDYsMTIgKzI0NiwxMiBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNh
cHRpb25zQmFja2dyb3VuZENTUygpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBkZWZhdWx0IHZhbHVl
IG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIG9uZSBzcGVjaWZpZWQgaW4gbWVkaWFDb250cm9scy5j
c3MgZm9yIC13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1wYXN0LW5vZGVzCiAgICAgLy8gYW5kIHdl
YmtpdC1tZWRpYS10ZXh0LXRyYWNrLWZ1dHVyZS1ub2Rlcy4KLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoQ29sb3IsIGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IsIChDb2xvcigwLCAw
LCAwLCAwLjggKiAyNTUpKSk7CisgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKE9w
dGlvbmFsUkdCQSwgZGVmYXVsdEJhY2tncm91bmRDb2xvciwgKE9wdGlvbmFsUkdCQSgwLCAwLCAw
LCAwLjggKiAyNTUpKSk7CiAKICAgICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZp
b3I7CiAKICAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY29sb3IgPSBhZG9wdENGKE1BQ2FwdGlv
bkFwcGVhcmFuY2VDb3B5QmFja2dyb3VuZENvbG9yKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWlu
VXNlciwgJmJlaGF2aW9yKSk7Ci0gICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKGNvbG9yLmdldCgp
KTsKKyAgICBPcHRpb25hbFJHQkEgYmFja2dyb3VuZENvbG9yKGNvbG9yLmdldCgpKTsKICAgICBp
ZiAoIWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIGJhY2tncm91bmRDb2xvciA9
IGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3I7CiAKQEAgLTI1OSwyOSArMjU5LDI5IEBAIFN0cmluZyBD
YXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNCYWNrZ3JvdW5kQ1NTKCkgY29u
c3QKICAgICBDR0Zsb2F0IG9wYWNpdHkgPSBNQUNhcHRpb25BcHBlYXJhbmNlR2V0QmFja2dyb3Vu
ZE9wYWNpdHkoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpOwogICAg
IGlmICghaW1wb3J0YW50KQogICAgICAgICBpbXBvcnRhbnQgPSBiZWhhdmlvciA9PSBrTUFDYXB0
aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWU7Ci0gICAgcmV0dXJuIGNvbG9yUHJvcGVydHlD
U1MoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIENvbG9yKGJhY2tncm91bmRDb2xvci5yZWQo
KSwgYmFja2dyb3VuZENvbG9yLmdyZWVuKCksIGJhY2tncm91bmRDb2xvci5ibHVlKCksIHN0YXRp
Y19jYXN0PGludD4ob3BhY2l0eSAqIDI1NSkpLCBpbXBvcnRhbnQpOworICAgIHJldHVybiBjb2xv
clByb3BlcnR5Q1NTKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBPcHRpb25hbFJHQkEoYmFj
a2dyb3VuZENvbG9yLnJlZCgpLCBiYWNrZ3JvdW5kQ29sb3IuZ3JlZW4oKSwgYmFja2dyb3VuZENv
bG9yLmJsdWUoKSwgc3RhdGljX2Nhc3Q8aW50PihvcGFjaXR5ICogMjU1KSksIGltcG9ydGFudCk7
CiB9CiAKLUNvbG9yIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc1RleHRD
b2xvcihib29sJiBpbXBvcnRhbnQpIGNvbnN0CitPcHRpb25hbFJHQkEgQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zVGV4dENvbG9yKGJvb2wmIGltcG9ydGFudCkgY29uc3QK
IHsKICAgICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CiAgICAgUmV0YWlu
UHRyPENHQ29sb3JSZWY+IGNvbG9yID0gYWRvcHRDRihNQUNhcHRpb25BcHBlYXJhbmNlQ29weUZv
cmVncm91bmRDb2xvcihrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcikp
OwotICAgIENvbG9yIHRleHRDb2xvcihjb2xvci5nZXQoKSk7CisgICAgT3B0aW9uYWxSR0JBIHRl
eHRDb2xvcihjb2xvci5nZXQoKSk7CiAgICAgaWYgKCF0ZXh0Q29sb3IuaXNWYWxpZCgpKQogICAg
ICAgICAvLyBUaGlzIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgb25lIHNw
ZWNpZmllZCBpbiBtZWRpYUNvbnRyb2xzLmNzcyBmb3IgLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNr
LWNvbnRhaW5lci4KLSAgICAgICAgdGV4dENvbG9yID0gQ29sb3I6OndoaXRlOworICAgICAgICB0
ZXh0Q29sb3IgPSBPcHRpb25hbFJHQkE6OndoaXRlOwogICAgIAogICAgIGltcG9ydGFudCA9IGJl
aGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1ZTsKICAgICBDR0Zs
b2F0IG9wYWNpdHkgPSBNQUNhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHkoa01B
Q2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpOwogICAgIGlmICghaW1wb3J0
YW50KQogICAgICAgICBpbXBvcnRhbnQgPSBiZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5j
ZUJlaGF2aW9yVXNlVmFsdWU7Ci0gICAgcmV0dXJuIENvbG9yKHRleHRDb2xvci5yZWQoKSwgdGV4
dENvbG9yLmdyZWVuKCksIHRleHRDb2xvci5ibHVlKCksIHN0YXRpY19jYXN0PGludD4ob3BhY2l0
eSAqIDI1NSkpOworICAgIHJldHVybiBPcHRpb25hbFJHQkEodGV4dENvbG9yLnJlZCgpLCB0ZXh0
Q29sb3IuZ3JlZW4oKSwgdGV4dENvbG9yLmJsdWUoKSwgc3RhdGljX2Nhc3Q8aW50PihvcGFjaXR5
ICogMjU1KSk7CiB9CiAgICAgCiBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6
OmNhcHRpb25zVGV4dENvbG9yQ1NTKCkgY29uc3QKIHsKICAgICBib29sIGltcG9ydGFudDsKLSAg
ICBDb2xvciB0ZXh0Q29sb3IgPSBjYXB0aW9uc1RleHRDb2xvcihpbXBvcnRhbnQpOworICAgIE9w
dGlvbmFsUkdCQSB0ZXh0Q29sb3IgPSBjYXB0aW9uc1RleHRDb2xvcihpbXBvcnRhbnQpOwogCiAg
ICAgaWYgKCF0ZXh0Q29sb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKQEAgLTMwNiwxMCArMzA2LDEwIEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRjo6d2luZG93Um91bmRlZENvcm5lclJhZGl1c0NTUygpIGNvbnN0CiAgICAgcmV0dXJuIGJ1
aWxkZXIudG9TdHJpbmcoKTsKIH0KICAgICAKLUNvbG9yIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
ZWRpYUFGOjpjYXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcihjb25zdCBDb2xvciYgdGV4dENv
bG9yKSBjb25zdAorT3B0aW9uYWxSR0JBIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpj
YXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIHRleHRDb2xv
cikgY29uc3QKIHsKLSAgICBpbnQgZGlzdGFuY2VGcm9tV2hpdGUgPSBkaWZmZXJlbmNlU3F1YXJl
ZCh0ZXh0Q29sb3IsIENvbG9yOjp3aGl0ZSk7Ci0gICAgaW50IGRpc3RhbmNlRnJvbUJsYWNrID0g
ZGlmZmVyZW5jZVNxdWFyZWQodGV4dENvbG9yLCBDb2xvcjo6YmxhY2spOworICAgIGludCBkaXN0
YW5jZUZyb21XaGl0ZSA9IGRpZmZlcmVuY2VTcXVhcmVkKHRleHRDb2xvciwgT3B0aW9uYWxSR0JB
Ojp3aGl0ZSk7CisgICAgaW50IGRpc3RhbmNlRnJvbUJsYWNrID0gZGlmZmVyZW5jZVNxdWFyZWQo
dGV4dENvbG9yLCBPcHRpb25hbFJHQkE6OmJsYWNrKTsKICAgICAKICAgICBpZiAoZGlzdGFuY2VG
cm9tV2hpdGUgPCBkaXN0YW5jZUZyb21CbGFjaykKICAgICAgICAgcmV0dXJuIHRleHRDb2xvci5k
YXJrKCk7CkBAIC0zMTcsNyArMzE3LDcgQEAgQ29sb3IgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUY6OmNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKGNvbnN0IENvbG9yJgogICAgIHJl
dHVybiB0ZXh0Q29sb3IubGlnaHQoKTsKIH0KIAotU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGOjpjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5SUQgaWQs
IGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IENvbG9yJiB0ZXh0Q29sb3IsIGJvb2wgaW1wb3J0
YW50KSBjb25zdAorU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjc3NQcm9w
ZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5SUQgaWQsIGNvbnN0IFN0cmluZyYgdmFs
dWUsIGNvbnN0IE9wdGlvbmFsUkdCQSYgdGV4dENvbG9yLCBib29sIGltcG9ydGFudCkgY29uc3QK
IHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgCkBAIC0zMzMsNyArMzMzLDcgQEAg
U3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjc3NQcm9wZXJ0eVdpdGhUZXh0
RWRnZUNvbG9yKENTU1Byb3BlcnR5SUQKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwog
fQogCi1TdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNvbG9yUHJvcGVydHlD
U1MoQ1NTUHJvcGVydHlJRCBpZCwgY29uc3QgQ29sb3ImIGNvbG9yLCBib29sIGltcG9ydGFudCkg
Y29uc3QKK1N0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y29sb3JQcm9wZXJ0
eUNTUyhDU1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yLCBib29sIGlt
cG9ydGFudCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgCkBAIC0z
NTUsNyArMzU1LDcgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0
aW9uc1RleHRFZGdlQ1NTKCkgY29uc3QKICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgU3RyaW5nLCBlZGdlU3R5bGVVbmlmb3JtLCAoIiAuMDNlbSAiLCBTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKICAgICBib29sIHVudXNlZDsKLSAgICBDb2xvciBjb2xv
ciA9IGNhcHRpb25zVGV4dENvbG9yKHVudXNlZCk7CisgICAgT3B0aW9uYWxSR0JBIGNvbG9yID0g
Y2FwdGlvbnNUZXh0Q29sb3IodW51c2VkKTsKICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKICAg
ICAgICAgY29sb3Iuc2V0TmFtZWRDb2xvcigiYmxhY2siKTsKICAgICBjb2xvciA9IGNhcHRpb25z
RWRnZUNvbG9yRm9yVGV4dENvbG9yKGNvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuaAppbmRleCBjMzM0Y2IxMzBiY2NmZjg5
MmY3YzM2M2E4YWUyNjJmMjVlMTJmZjJmLi4zZDM0ZjgwOWFjMDg3MTJkZTM0MTIxZjQ5YTA4Nzlm
Y2I3NGE0MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNZWRpYUFGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWVkaWFBRi5oCkBAIC03OSwxMyArNzksMTMgQEAgcHJpdmF0ZToKICAgICBTdHJp
bmcgY2FwdGlvbnNXaW5kb3dDU1MoKSBjb25zdDsKICAgICBTdHJpbmcgY2FwdGlvbnNCYWNrZ3Jv
dW5kQ1NTKCkgY29uc3Q7CiAgICAgU3RyaW5nIGNhcHRpb25zVGV4dENvbG9yQ1NTKCkgY29uc3Q7
Ci0gICAgQ29sb3IgY2FwdGlvbnNUZXh0Q29sb3IoYm9vbCYpIGNvbnN0OworICAgIE9wdGlvbmFs
UkdCQSBjYXB0aW9uc1RleHRDb2xvcihib29sJikgY29uc3Q7CiAgICAgU3RyaW5nIGNhcHRpb25z
RGVmYXVsdEZvbnRDU1MoKSBjb25zdDsKLSAgICBDb2xvciBjYXB0aW9uc0VkZ2VDb2xvckZvclRl
eHRDb2xvcihjb25zdCBDb2xvciYpIGNvbnN0OworICAgIE9wdGlvbmFsUkdCQSBjYXB0aW9uc0Vk
Z2VDb2xvckZvclRleHRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmKSBjb25zdDsKICAgICBTdHJp
bmcgd2luZG93Um91bmRlZENvcm5lclJhZGl1c0NTUygpIGNvbnN0OwogICAgIFN0cmluZyBjYXB0
aW9uc1RleHRFZGdlQ1NTKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGNzc1Byb3BlcnR5V2l0aFRleHRF
ZGdlQ29sb3IoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgQ29sb3ImLCBib29s
KSBjb25zdDsKLSAgICBTdHJpbmcgY29sb3JQcm9wZXJ0eUNTUyhDU1NQcm9wZXJ0eUlELCBjb25z
dCBDb2xvciYsIGJvb2wpIGNvbnN0OworICAgIFN0cmluZyBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRn
ZUNvbG9yKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IE9wdGlvbmFsUkdCQSYs
IGJvb2wpIGNvbnN0OworICAgIFN0cmluZyBjb2xvclByb3BlcnR5Q1NTKENTU1Byb3BlcnR5SUQs
IGNvbnN0IE9wdGlvbmFsUkdCQSYsIGJvb2wpIGNvbnN0OwogICAgIFRpbWVyIG1fdXBkYXRlU3R5
bGVTaGVldFRpbWVyOwogCiAgICAgYm9vbCBtX2xpc3RlbmluZ0ZvclByZWZlcmVuY2VDaGFuZ2Vz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IGQyYmZjNjUzY2JmZWMxMzAxNTQ2NDIwMDY3ZWFh
NDA4ODA5NWFlYzUuLmMzYWIyZWY3MDkyZjhkYzMwZDE2OGU5MjNkNzBhZDhkY2NlODhkNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTQzMiw3ICs0MzIsNyBAQCB2b2lkIENocm9tZTo6ZGlz
YWJsZVN1ZGRlblRlcm1pbmF0aW9uKCkKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQotc3RkOjp1bmlxdWVfcHRyPENvbG9yQ2hvb3Nlcj4gQ2hyb21lOjpjcmVhdGVDb2xvckNob29z
ZXIoQ29sb3JDaG9vc2VyQ2xpZW50KiBjbGllbnQsIGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3Ip
CitzdGQ6OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBDaHJvbWU6OmNyZWF0ZUNvbG9yQ2hvb3Nl
cihDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCwgY29uc3QgT3B0aW9uYWxSR0JBJiBpbml0aWFs
Q29sb3IpCiB7CiAgICAgbm90aWZ5UG9wdXBPcGVuaW5nT2JzZXJ2ZXJzKCk7CiAgICAgcmV0dXJu
IG1fY2xpZW50LmNyZWF0ZUNvbG9yQ2hvb3NlcihjbGllbnQsIGluaXRpYWxDb2xvcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWUuaAppbmRleCBjMGJkODU4ODA3ODc4OGEwODFmMGVkODVlY2ZiOTQwYzliMDYyNzQ3
Li4xZTViNDFmYjg5MzcwYTU2NDg1NjliOGMxOWJlMDliNjVkZWUxNTc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmgKQEAgLTE1Niw3ICsxNTYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkaXNhYmxlU3VkZGVuVGVybWluYXRpb24oKTsKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxDb2xvckNob29zZXI+IGNyZWF0ZUNvbG9yQ2hvb3Nl
cihDb2xvckNob29zZXJDbGllbnQqLCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9yKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9v
c2VyQ2xpZW50KiwgY29uc3QgT3B0aW9uYWxSR0JBJiBpbml0aWFsQ29sb3IpOwogI2VuZGlmCiAK
ICAgICB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IGVlMGZiNDhhZjhjODM4ZWY5NjBlYmUy
MmU3YzdhZTk3Mzc5Y2ZmMGEuLmM0NWZiOWZhZmRiMGVjMGQzNzg0OGE1YTRiZTY5MDMzOTQwOTRk
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMjAwLDkgKzIwMCw5IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwcmludChGcmFtZSopID0gMDsKIAotICAgIHZpcnR1
YWwgQ29sb3IgdW5kZXJsYXlDb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7IH0KKyAgICB2
aXJ0dWFsIE9wdGlvbmFsUkdCQSB1bmRlcmxheUNvbG9yKCkgY29uc3QgeyByZXR1cm4gT3B0aW9u
YWxSR0JBKCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29s
b3JEaWRDaGFuZ2UoQ29sb3IpIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWdlRXh0ZW5k
ZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoT3B0aW9uYWxSR0JBKSBjb25zdCB7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEoRnJhbWUqLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSwgRGF0YWJhc2VEZXRhaWxzKSA9IDA7CiAKQEAgLTI3Miw3ICsyNzIsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIHZp
cnR1YWwgc3RkOjp1bmlxdWVfcHRyPENvbG9yQ2hvb3Nlcj4gY3JlYXRlQ29sb3JDaG9vc2VyKENv
bG9yQ2hvb3NlckNsaWVudCosIGNvbnN0IENvbG9yJikgPSAwOworICAgIHZpcnR1YWwgc3RkOjp1
bmlxdWVfcHRyPENvbG9yQ2hvb3Nlcj4gY3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNs
aWVudCosIGNvbnN0IE9wdGlvbmFsUkdCQSYpID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2
b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IGNhZTQzZGFkNmE3
NDA4MDQwNzRlZWIzN2JhOGM0OTk3ZjRjMGQ0Y2MuLmIxZWE5MzBmNWQ4N2I2MTIzMzA3MDdjZTQ5
YWYxMGM4NWMwZjZjY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdl
T3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMu
Y3BwCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBQYWdlT3ZlcmxheSYgb3ZlcmxheSgp
IHsgcmV0dXJuICptX292ZXJsYXk7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlZ2lvbk92ZXJsYXko
TWFpbkZyYW1lJiwgQ29sb3IpOworICAgIFJlZ2lvbk92ZXJsYXkoTWFpbkZyYW1lJiwgT3B0aW9u
YWxSR0JBKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFnZU92ZXJsYXlEZXN0cm95
ZWQoUGFnZU92ZXJsYXkmKSBmaW5hbDsKQEAgLTY4LDcgKzY4LDcgQEAgcHJvdGVjdGVkOgogICAg
IE1haW5GcmFtZSYgbV9mcmFtZTsKICAgICBSZWZQdHI8UGFnZU92ZXJsYXk+IG1fb3ZlcmxheTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVnaW9uPiBtX3JlZ2lvbjsKLSAgICBDb2xvciBtX2NvbG9y
OworICAgIE9wdGlvbmFsUkdCQSBtX2NvbG9yOwogfTsKIAogCkBAIC04MSw3ICs4MSw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheShN
YWluRnJhbWUmIGZyYW1lKQotICAgICAgICA6IFJlZ2lvbk92ZXJsYXkoZnJhbWUsIENvbG9yKDAu
NWYsIDAuMGYsIDAuMGYsIDAuNGYpKQorICAgICAgICA6IFJlZ2lvbk92ZXJsYXkoZnJhbWUsIE9w
dGlvbmFsUkdCQSgwLjVmLCAwLjBmLCAwLjBmLCAwLjRmKSkKICAgICB7CiAgICAgfQogCkBAIC0x
MjAsNyArMTIwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE5vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uT3ZlcmxheShNYWluRnJhbWUmIGZyYW1lKQotICAgICAgICA6IFJlZ2lv
bk92ZXJsYXkoZnJhbWUsIENvbG9yKDEuMGYsIDAuNWYsIDAuMGYsIDAuNGYpKQorICAgICAgICA6
IFJlZ2lvbk92ZXJsYXkoZnJhbWUsIE9wdGlvbmFsUkdCQSgxLjBmLCAwLjVmLCAwLjBmLCAwLjRm
KSkKICAgICB7CiAgICAgfQogCkBAIC0xNTMsNyArMTUzLDcgQEAgUGFzc1JlZlB0cjxSZWdpb25P
dmVybGF5PiBSZWdpb25PdmVybGF5OjpjcmVhdGUoTWFpbkZyYW1lJiBmcmFtZSwgRGVidWdQYWdl
T3ZlcmwKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVnaW9uT3ZlcmxheTo6UmVnaW9uT3Zl
cmxheShNYWluRnJhbWUmIGZyYW1lLCBDb2xvciByZWdpb25Db2xvcikKK1JlZ2lvbk92ZXJsYXk6
OlJlZ2lvbk92ZXJsYXkoTWFpbkZyYW1lJiBmcmFtZSwgT3B0aW9uYWxSR0JBIHJlZ2lvbkNvbG9y
KQogICAgIDogbV9mcmFtZShmcmFtZSkKICAgICAsIG1fb3ZlcmxheShQYWdlT3ZlcmxheTo6Y3Jl
YXRlKCp0aGlzLCBQYWdlT3ZlcmxheTo6T3ZlcmxheVR5cGU6OkRvY3VtZW50KSkKICAgICAsIG1f
Y29sb3IocmVnaW9uQ29sb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmlu
ZGV4IDhiOWU3M2FhOGNmY2Q1ODY0YzYzMmU1ZjI0ZGJiMmRmYWQ5MWI5OWUuLjk4NmQyNDJjYzA3
ZTZkNTIzZTNmYWUwYTZlYWQ1NTIxNTE1NzJkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCkBAIC00NjksNyArNDY5LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29u
Y2x1ZGVFZGl0RHJhZyhEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5zQ29sb3IoKSkgewotICAgICAgICBDb2xvciBjb2xv
ciA9IGRyYWdEYXRhLmFzQ29sb3IoKTsKKyAgICAgICAgT3B0aW9uYWxSR0JBIGNvbG9yID0gZHJh
Z0RhdGEuYXNDb2xvcigpOwogICAgICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgUmVmUHRyPFJhbmdlPiBpbm5lclJhbmdlID0gaW5u
ZXJGcmFtZS0+c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKaW5kZXggZGI2NzAxMTBiYmI4NjFlM2ExYmQzZDFkZTdiMzM0MWMwOTg5NDNhMS4uMTk1NTY4
MjZhMDc5YjFmMmMxOTU4N2YwN2E5MjExYjJlZWMwZWM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
QEAgLTg3Myw3ICs4NzMsNyBAQCBSZWZQdHI8UmFuZ2U+IEZyYW1lOjpyYW5nZUZvclBvaW50KGNv
bnN0IEludFBvaW50JiBmcmFtZVBvaW50KQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lk
IEZyYW1lOjpjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgQ29s
b3ImIGJhY2tncm91bmRDb2xvciwgYm9vbCB0cmFuc3BhcmVudCwKK3ZvaWQgRnJhbWU6OmNyZWF0
ZVZpZXcoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBPcHRpb25hbFJHQkEmIGJh
Y2tncm91bmRDb2xvciwgYm9vbCB0cmFuc3BhcmVudCwKICAgICBjb25zdCBJbnRTaXplJiBmaXhl
ZExheW91dFNpemUsIGNvbnN0IEludFJlY3QmIGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LAogICAg
IGJvb2wgdXNlRml4ZWRMYXlvdXQsIFNjcm9sbGJhck1vZGUgaG9yaXpvbnRhbFNjcm9sbGJhck1v
ZGUsIGJvb2wgaG9yaXpvbnRhbExvY2ssCiAgICAgU2Nyb2xsYmFyTW9kZSB2ZXJ0aWNhbFNjcm9s
bGJhck1vZGUsIGJvb2wgdmVydGljYWxMb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDY3MTIzNmZi
YzU2NzE0Njk1ZjQ4NmYzOWE5ZWZjMjZhYjkyOWE2ZGEuLjM2ZDUwZjUwZGM4MDVlOWU5NzE3MjE4
OTQ5ZWMxYTU1ODhlMzRiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTY1LDcgKzY1LDcgQEAgY2xh
c3MgUmVndWxhckV4cHJlc3Npb247CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBB
bmltYXRpb25Db250cm9sbGVyOwotICAgIGNsYXNzIENvbG9yOworICAgIGNsYXNzIE9wdGlvbmFs
UkdCQTsKICAgICBjbGFzcyBEb2N1bWVudDsKICAgICBjbGFzcyBFZGl0b3I7CiAgICAgY2xhc3Mg
RWxlbWVudDsKQEAgLTEyMyw3ICsxMjMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdFdpdGhTaW1wbGVIVE1MRG9jdW1lbnQoY29uc3QgU3Ry
aW5nJiBzdHlsZSwgY29uc3QgVVJMJik7CiAjZW5kaWYKICAgICAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRWaWV3KFJlZlB0cjxGcmFtZVZpZXc+JiYpOwotICAgICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNyZWF0ZVZpZXcoY29uc3QgSW50U2l6ZSYsIGNvbnN0IENvbG9yJiwgYm9vbCwKKyAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmLCBjb25z
dCBPcHRpb25hbFJHQkEmLCBib29sLAogICAgICAgICAgICAgY29uc3QgSW50U2l6ZSYgZml4ZWRM
YXlvdXRTaXplID0gSW50U2l6ZSgpLCBjb25zdCBJbnRSZWN0JiBmaXhlZFZpc2libGVDb250ZW50
UmVjdCA9IEludFJlY3QoKSwKICAgICAgICAgICAgIGJvb2wgdXNlRml4ZWRMYXlvdXQgPSBmYWxz
ZSwgU2Nyb2xsYmFyTW9kZSA9IFNjcm9sbGJhckF1dG8sIGJvb2wgaG9yaXpvbnRhbExvY2sgPSBm
YWxzZSwKICAgICAgICAgICAgIFNjcm9sbGJhck1vZGUgPSBTY3JvbGxiYXJBdXRvLCBib29sIHZl
cnRpY2FsTG9jayA9IGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGlu
Zy5jcHAKaW5kZXggNmJmY2UxMmI4YzcyNGRjMGVlNzc1YjdkZmJhMDkwNTg2YzIxZjQ5Yi4uNjgw
MzllMDVlMWE0NTNhMTg5NTc0MWNkOGVlYTI3NDU4M2Q4ZDIyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgc3RydWN0IFNjb3Bl
ZEZyYW1lUGFpbnRpbmdTdGF0ZSB7CiAgICAgY29uc3QgRnJhbWUmIGZyYW1lOwogICAgIGNvbnN0
IE5vZGUqIG5vZGU7CiAgICAgY29uc3QgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yOwotICAg
IGNvbnN0IENvbG9yIGJhY2tncm91bmRDb2xvcjsKKyAgICBjb25zdCBPcHRpb25hbFJHQkEgYmFj
a2dyb3VuZENvbG9yOwogfTsKIAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hv
dEZyYW1lUmVjdChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgU25hcHNo
b3RPcHRpb25zIG9wdGlvbnMpCkBAIC0xMzIsNyArMTMyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBzbmFwc2hvdE5vZGUoRnJhbWUmIGZyYW1lLCBOb2RlJiBub2RlKQogCiAgICAg
U2NvcGVkRnJhbWVQYWludGluZ1N0YXRlIHN0YXRlKGZyYW1lLCAmbm9kZSk7CiAKLSAgICBmcmFt
ZS52aWV3KCktPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAg
ICBmcmFtZS52aWV3KCktPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoT3B0aW9uYWxSR0JBOjp0cmFu
c3BhcmVudCk7CiAgICAgZnJhbWUudmlldygpLT5zZXROb2RlVG9EcmF3KCZub2RlKTsKIAogICAg
IExheW91dFJlY3QgdG9wTGV2ZWxSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4
IGFjZjEzODA5YTU5OTYzNjczYjUzZjI2MDA4MDZlZTQwMzdjMzk1NjAuLjhlZjg3MmYzN2FmODk0
ZGNlYTQ3YzZjMTM5ZDY3NGQ3YzAzZTdhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
QEAgLTE2OSw3ICsxNjksNyBAQCBGcmFtZVZpZXc6OkZyYW1lVmlldyhGcmFtZSYgZnJhbWUpCiAg
ICAgLCBtX3Bvc3RMYXlvdXRUYXNrc1RpbWVyKCp0aGlzLCAmRnJhbWVWaWV3OjpwZXJmb3JtUG9z
dExheW91dFRhc2tzKQogICAgICwgbV91cGRhdGVFbWJlZGRlZE9iamVjdHNUaW1lcigqdGhpcywg
JkZyYW1lVmlldzo6dXBkYXRlRW1iZWRkZWRPYmplY3RzVGltZXJGaXJlZCkKICAgICAsIG1faXNU
cmFuc3BhcmVudChmYWxzZSkKLSAgICAsIG1fYmFzZUJhY2tncm91bmRDb2xvcihDb2xvcjo6d2hp
dGUpCisgICAgLCBtX2Jhc2VCYWNrZ3JvdW5kQ29sb3IoT3B0aW9uYWxSR0JBOjp3aGl0ZSkKICAg
ICAsIG1fbWVkaWFUeXBlKCJzY3JlZW4iKQogICAgICwgbV9vdmVyZmxvd1N0YXR1c0RpcnR5KHRy
dWUpCiAgICAgLCBtX3ZpZXdwb3J0UmVuZGVyZXIobnVsbHB0cikKQEAgLTM4Myw3ICszODMsNyBA
QCB2b2lkIEZyYW1lVmlldzo6cmVjYWxjdWxhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoKQogCiAg
ICAgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIGNvbXB1dGVkT3ZlcmxheVN0eWxlID0gU2Nyb2xsYmFy
T3ZlcmxheVN0eWxlRGVmYXVsdDsKIAotICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IGRvY3Vt
ZW50QmFja2dyb3VuZENvbG9yKCk7CisgICAgT3B0aW9uYWxSR0JBIGJhY2tncm91bmRDb2xvciA9
IGRvY3VtZW50QmFja2dyb3VuZENvbG9yKCk7CiAgICAgaWYgKGJhY2tncm91bmRDb2xvci5pc1Zh
bGlkKCkpIHsKICAgICAgICAgLy8gUmVkdWNlIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZyb20gUkdC
IHRvIGEgbGlnaHRuZXNzIHZhbHVlCiAgICAgICAgIC8vIGFuZCBkZXRlcm1pbmUgd2hpY2ggc2Ny
b2xsYmFyIHN0eWxlIHRvIHVzZSBiYXNlZCBvbiBhIGxpZ2h0bmVzcwpAQCAtMjc0MywxNyArMjc0
MywxNyBAQCBib29sIEZyYW1lVmlldzo6aGFzT3BhcXVlQmFja2dyb3VuZCgpIGNvbnN0CiAgICAg
cmV0dXJuICFtX2lzVHJhbnNwYXJlbnQgJiYgIW1fYmFzZUJhY2tncm91bmRDb2xvci5oYXNBbHBo
YSgpOwogfQogCi1Db2xvciBGcmFtZVZpZXc6OmJhc2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAor
T3B0aW9uYWxSR0JBIEZyYW1lVmlldzo6YmFzZUJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fYmFzZUJhY2tncm91bmRDb2xvcjsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnNl
dEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikKK3ZvaWQg
RnJhbWVWaWV3OjpzZXRCYXNlQmFja2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgYmFj
a2dyb3VuZENvbG9yKQogewogICAgIGJvb2wgaGFkQWxwaGEgPSBtX2Jhc2VCYWNrZ3JvdW5kQ29s
b3IuaGFzQWxwaGEoKTsKICAgICAKICAgICBpZiAoIWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkp
Ci0gICAgICAgIG1fYmFzZUJhY2tncm91bmRDb2xvciA9IENvbG9yOjp3aGl0ZTsKKyAgICAgICAg
bV9iYXNlQmFja2dyb3VuZENvbG9yID0gT3B0aW9uYWxSR0JBOjp3aGl0ZTsKICAgICBlbHNlCiAg
ICAgICAgIG1fYmFzZUJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvcjsKIApAQCAtMjc2
Niw3ICsyNzY2LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29u
c3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikKICAgICAgICAgcmVuZGVyVmlldygpLT5jb21wb3Np
dG9yKCkucm9vdEJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgRnJh
bWVWaWV3Ojp1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoY29uc3QgQ29sb3ImIGJhY2tncm91
bmRDb2xvciwgYm9vbCB0cmFuc3BhcmVudCkKK3ZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVCYWNrZ3Jv
dW5kUmVjdXJzaXZlbHkoY29uc3QgT3B0aW9uYWxSR0JBJiBiYWNrZ3JvdW5kQ29sb3IsIGJvb2wg
dHJhbnNwYXJlbnQpCiB7CiAgICAgZm9yIChhdXRvKiBmcmFtZSA9IG1fZnJhbWUucHRyKCk7IGZy
YW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KG1fZnJhbWUucHRyKCkpKSB7
CiAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpKSB7CkBAIC0yODY1
LDcgKzI4NjUsNyBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlVGlsZXNGb3JFeHRlbmRlZEJhY2tn
cm91bmRNb2RlKEV4dGVuZGVkQmFja2dyb3VuZE1vZGUgbW9kZQogICAgIGlmIChleGlzdGluZ01v
ZGUgPT0gbW9kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVuZGVyVmlldy0+Y29tcG9zaXRv
cigpLnNldFJvb3RFeHRlbmRlZEJhY2tncm91bmRDb2xvcihtb2RlID09IEV4dGVuZGVkQmFja2dy
b3VuZE1vZGVBbGwgPyBDb2xvcigpIDogZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSk7CisgICAg
cmVuZGVyVmlldy0+Y29tcG9zaXRvcigpLnNldFJvb3RFeHRlbmRlZEJhY2tncm91bmRDb2xvciht
b2RlID09IEV4dGVuZGVkQmFja2dyb3VuZE1vZGVBbGwgPyBPcHRpb25hbFJHQkEoKSA6IGRvY3Vt
ZW50QmFja2dyb3VuZENvbG9yKCkpOwogICAgIGJhY2tpbmctPnNldFRpbGVkQmFja2luZ0hhc01h
cmdpbnMobW9kZSAmIEV4dGVuZGVkQmFja2dyb3VuZE1vZGVIb3Jpem9udGFsLCBtb2RlICYgRXh0
ZW5kZWRCYWNrZ3JvdW5kTW9kZVZlcnRpY2FsKTsKIH0KIApAQCAtMzY3OCwyMiArMzY3OCwyMiBA
QCB2b2lkIEZyYW1lVmlldzo6cGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBTY3JvbGxiYXIqIGJhciwgY29uc3QgSQogICAgIFNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsYmFy
KGNvbnRleHQsIGJhciwgcmVjdCk7CiB9CiAKLUNvbG9yIEZyYW1lVmlldzo6ZG9jdW1lbnRCYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIEZyYW1lVmlldzo6ZG9jdW1lbnRCYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdAogewogICAgIC8vIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTk1NDA+IFdlIGJsZW5kIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mCiAg
ICAgLy8gdGhlIGRvY3VtZW50IGFuZCB0aGUgYm9keSBhZ2FpbnN0IHRoZSBiYXNlIGJhY2tncm91
bmQgY29sb3Igb2YgdGhlIGZyYW1lIHZpZXcuCiAgICAgLy8gQmFja2dyb3VuZCBpbWFnZXMgYXJl
IHVuZm9ydHVuYXRlbHkgaW1wcmFjdGljYWwgdG8gaW5jbHVkZS4KIAotICAgIC8vIFJldHVybiBp
bnZhbGlkIENvbG9yIG9iamVjdHMgd2hlbmV2ZXIgdGhlcmUgaXMgaW5zdWZmaWNpZW50IGluZm9y
bWF0aW9uLgorICAgIC8vIFJldHVybiBpbnZhbGlkIE9wdGlvbmFsUkdCQSBvYmplY3RzIHdoZW5l
dmVyIHRoZXJlIGlzIGluc3VmZmljaWVudCBpbmZvcm1hdGlvbi4KICAgICBpZiAoIWZyYW1lKCku
ZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7CisgICAgICAgIHJldHVybiBPcHRp
b25hbFJHQkEoKTsKIAogICAgIGF1dG8qIGh0bWxFbGVtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgp
LT5kb2N1bWVudEVsZW1lbnQoKTsKICAgICBhdXRvKiBib2R5RWxlbWVudCA9IGZyYW1lKCkuZG9j
dW1lbnQoKS0+Ym9keU9yRnJhbWVzZXQoKTsKIAogICAgIC8vIFN0YXJ0IHdpdGggaW52YWxpZCBj
b2xvcnMuCi0gICAgQ29sb3IgaHRtbEJhY2tncm91bmRDb2xvcjsKLSAgICBDb2xvciBib2R5QmFj
a2dyb3VuZENvbG9yOworICAgIE9wdGlvbmFsUkdCQSBodG1sQmFja2dyb3VuZENvbG9yOworICAg
IE9wdGlvbmFsUkdCQSBib2R5QmFja2dyb3VuZENvbG9yOwogICAgIGlmIChodG1sRWxlbWVudCAm
JiBodG1sRWxlbWVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgaHRtbEJhY2tncm91bmRDb2xvciA9
IGh0bWxFbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgaWYgKGJvZHlFbGVtZW50ICYmIGJvZHlF
bGVtZW50LT5yZW5kZXJlcigpKQpAQCAtMzcwMSw3ICszNzAxLDcgQEAgQ29sb3IgRnJhbWVWaWV3
Ojpkb2N1bWVudEJhY2tncm91bmRDb2xvcigpIGNvbnN0CiAKICAgICBpZiAoIWJvZHlCYWNrZ3Jv
dW5kQ29sb3IuaXNWYWxpZCgpKSB7CiAgICAgICAgIGlmICghaHRtbEJhY2tncm91bmRDb2xvci5p
c1ZhbGlkKCkpCi0gICAgICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAgICAgICAgIHJldHVy
biBPcHRpb25hbFJHQkEoKTsKICAgICAgICAgcmV0dXJuIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKS5i
bGVuZChodG1sQmFja2dyb3VuZENvbG9yKTsKICAgICB9CiAKQEAgLTM5NDMsNyArMzk0Myw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgZGlydHlSZWN0CiAgICAgICAgIGZpbGxXaXRoUmVkID0gdHJ1ZTsKICAg
ICAKICAgICBpZiAoZmlsbFdpdGhSZWQpCi0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRpcnR5
UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBj
b250ZXh0LT5maWxsUmVjdChkaXJ0eVJlY3QsIE9wdGlvbmFsUkdCQSgweEZGLCAwLCAwKSwgQ29s
b3JTcGFjZURldmljZVJHQik7CiAjZW5kaWYKIAogICAgIGlmIChtX2xheW91dFBoYXNlID09IElu
Vmlld1NpemVBZGp1c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBiYzRlYjY5NGM0ODEx
YWU3YTI0MTRiNWZhOWQzMDcxZjA1MjA4ZTA5Li41MzNlNzg5NzE5OTEzNjlhYWZmZTZkN2ZkMmE2
MjViYmViYmMzY2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTIwMiw5ICsyMDIsOSBA
QCBwdWJsaWM6CiAgICAgLy8gVHJ1ZSBpZiB0aGUgRnJhbWVWaWV3IGlzIG5vdCB0cmFuc3BhcmVu
dCwgYW5kIHRoZSBiYXNlIGJhY2tncm91bmQgY29sb3IgaXMgb3BhcXVlLgogICAgIGJvb2wgaGFz
T3BhcXVlQmFja2dyb3VuZCgpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IgYmFz
ZUJhY2tncm91bmRDb2xvcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QmFz
ZUJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOwotICAgIHZvaWQgdXBkYXRlQmFja2dyb3Vu
ZFJlY3Vyc2l2ZWx5KGNvbnN0IENvbG9yJiwgYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgT3B0
aW9uYWxSR0JBIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJik7CisgICAg
dm9pZCB1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoY29uc3QgT3B0aW9uYWxSR0JBJiwgYm9v
bCk7CiAKICAgICBlbnVtIEV4dGVuZGVkQmFja2dyb3VuZE1vZGVGbGFncyB7CiAgICAgICAgIEV4
dGVuZGVkQmFja2dyb3VuZE1vZGVOb25lICAgICAgICAgID0gMCwKQEAgLTM2MCw3ICszNjAsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJ
bnRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBkb2N1bWVudEJh
Y2tncm91bmRDb2xvcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsUkdCQSBk
b2N1bWVudEJhY2tncm91bmRDb2xvcigpIGNvbnN0OwogCiAgICAgYm9vbCBpc0luQ2hpbGRGcmFt
ZVdpdGhGcmFtZUZsYXR0ZW5pbmcoKSBjb25zdDsKIApAQCAtNzA5LDcgKzcwOSw3IEBAIHByaXZh
dGU6CiAKICAgICBib29sIG1fZmlyc3RMYXlvdXQ7CiAgICAgYm9vbCBtX2lzVHJhbnNwYXJlbnQ7
Ci0gICAgQ29sb3IgbV9iYXNlQmFja2dyb3VuZENvbG9yOworICAgIE9wdGlvbmFsUkdCQSBtX2Jh
c2VCYWNrZ3JvdW5kQ29sb3I7CiAgICAgSW50U2l6ZSBtX2xhc3RWaWV3cG9ydFNpemU7CiAgICAg
ZmxvYXQgbV9sYXN0Wm9vbUZhY3RvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOWQyZDI2NjJm
ZTgyODAwOGI1ODIzYzcwZGI5ZGNjYjUxOTM2ZjFjZC4uMDYxNGNiYzA3MTEwZGZmZWEzMGQxNWFh
YWM4NTYwOTNhNGEwNGUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMzk1LDE1ICsxMzk1LDE1
IEBAIHZvaWQgUGFnZTo6cmVtb3ZlTGF5b3V0TWlsZXN0b25lcyhMYXlvdXRNaWxlc3RvbmVzIG1p
bGVzdG9uZXMpCiAgICAgbV9yZXF1ZXN0ZWRMYXlvdXRNaWxlc3RvbmVzICY9IH5taWxlc3RvbmVz
OwogfQogCi1Db2xvciBQYWdlOjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAor
T3B0aW9uYWxSR0JBIFBhZ2U6OnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7
CiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtYWluRnJhbWUoKS52aWV3KCk7CiAgICAgaWYg
KCFmcmFtZVZpZXcpCi0gICAgICAgIHJldHVybiBDb2xvcigpOworICAgICAgICByZXR1cm4gT3B0
aW9uYWxSR0JBKCk7CiAKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LT5y
ZW5kZXJWaWV3KCk7CiAgICAgaWYgKCFyZW5kZXJWaWV3KQotICAgICAgICByZXR1cm4gQ29sb3Io
KTsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsUkdCQSgpOwogCiAgICAgcmV0dXJuIHJlbmRlclZp
ZXctPmNvbXBvc2l0b3IoKS5yb290RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKaW5kZXggMjMyZDQ2YzdmYmU5ZWQ4N2M3YjE5NWMxZDRjNmYxYmU5OWQ3NjZjNC4uN2E4
NWM2Yjg1N2E3ZWQxOTBmOTA3N2QzYTNlYWM5ZDc2YTAwNDZhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAg
LTcxLDcgKzcxLDcgQEAgY2xhc3MgQmFja0ZvcndhcmRDbGllbnQ7CiBjbGFzcyBDaHJvbWU7CiBj
bGFzcyBDaHJvbWVDbGllbnQ7CiBjbGFzcyBDbGllbnRSZWN0TGlzdDsKLWNsYXNzIENvbG9yOwor
Y2xhc3MgT3B0aW9uYWxSR0JBOwogY2xhc3MgQ29udGV4dE1lbnVDbGllbnQ7CiBjbGFzcyBDb250
ZXh0TWVudUNvbnRyb2xsZXI7CiBjbGFzcyBEYXRhYmFzZVByb3ZpZGVyOwpAQCAtMzY3LDcgKzM2
Nyw3IEBAIHB1YmxpYzoKICAgICBpbnQgaGVhZGVySGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9o
ZWFkZXJIZWlnaHQ7IH0KICAgICBpbnQgZm9vdGVySGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9m
b290ZXJIZWlnaHQ7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yIHBhZ2VFeHRlbmRlZEJh
Y2tncm91bmRDb2xvcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsUkdCQSBw
YWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKIAogICAgIGJvb2wgaXNDb3VudGlu
Z1JlbGV2YW50UmVwYWludGVkT2JqZWN0cygpIGNvbnN0OwogICAgIHZvaWQgc2V0SXNDb3VudGlu
Z1JlbGV2YW50UmVwYWludGVkT2JqZWN0cyhib29sIGlzQ291bnRpbmcpIHsgbV9pc0NvdW50aW5n
UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzID0gaXNDb3VudGluZzsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VPdmVybGF5LmNwcAppbmRleCBhOWI5MWNkMTQxOTVkYzYwYWQ4NjI5YjY2ZjMzYzE1ZWE1Nzg2
M2I1Li4zNWE3NWNmYTZlYzg3NmQ2NDdlMDczYzBhZTg1NjE0NjE4NDdlNWEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VPdmVybGF5LmNwcApAQCAtNjAsNyArNjAsNyBAQCBQYWdlT3ZlcmxheTo6UGFn
ZU92ZXJsYXkoQ2xpZW50JiBjbGllbnQsIE92ZXJsYXlUeXBlIG92ZXJsYXlUeXBlKQogICAgICwg
bV9mYWRlQW5pbWF0aW9uVHlwZShOb0FuaW1hdGlvbikKICAgICAsIG1fZnJhY3Rpb25GYWRlZElu
KDEpCiAgICAgLCBtX292ZXJsYXlUeXBlKG92ZXJsYXlUeXBlKQotICAgICwgbV9iYWNrZ3JvdW5k
Q29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KQorICAgICwgbV9iYWNrZ3JvdW5kQ29sb3IoT3B0aW9u
YWxSR0JBOjp0cmFuc3BhcmVudCkKICAgICAsIG1fcGFnZU92ZXJsYXlJRChnZW5lcmF0ZVBhZ2VP
dmVybGF5SUQoKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAppbmRleCBi
MjQxZmU1MmJkNWExOGNkOWU4YzdkOGIyMTkyM2I1MDE1NjUzYWM2Li5iZTk5NzVkMzJjZDZhMjY5
MDhlODNjZWZmODBjMDkwMDJiNWQwOTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1ByaW50Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQu
Y3BwCkBAIC0zMzMsNyArMzMzLDcgQEAgdm9pZCBQcmludENvbnRleHQ6OnNwb29sQWxsUGFnZXNX
aXRoQm91bmRhcmllcyhGcmFtZSogZnJhbWUsIEdyYXBoaWNzQ29udGV4dCYgZ3IKICAgICBpbnQg
dG90YWxIZWlnaHQgPSBwYWdlUmVjdHMuc2l6ZSgpICogKHBhZ2VTaXplSW5QaXhlbHMuaGVpZ2h0
KCkgKyAxKSAtIDE7CiAKICAgICAvLyBGaWxsIHRoZSB3aG9sZSBiYWNrZ3JvdW5kIGJ5IHdoaXRl
LgotICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3IoMjU1LCAyNTUsIDI1NSks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3Io
T3B0aW9uYWxSR0JBKDI1NSwgMjU1LCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBn
cmFwaGljc0NvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDAsIDAsIHBhZ2VXaWR0aCwgdG90YWxI
ZWlnaHQpKTsKIAogICAgIGdyYXBoaWNzQ29udGV4dC5zYXZlKCk7CkBAIC0zNDUsOCArMzQ1LDgg
QEAgdm9pZCBQcmludENvbnRleHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmllcyhGcmFtZSog
ZnJhbWUsIEdyYXBoaWNzQ29udGV4dCYgZ3IKICAgICAgICAgLy8gRHJhdyBhIGxpbmUgZm9yIGEg
cGFnZSBib3VuZGFyeSBpZiB0aGlzIGlzbid0IHRoZSBmaXJzdCBwYWdlLgogICAgICAgICBpZiAo
cGFnZUluZGV4ID4gMCkgewogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNhdmUoKTsKLSAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAwLCAyNTUp
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRG
aWxsQ29sb3IoQ29sb3IoMCwgMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
ICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlQ29sb3IoT3B0aW9uYWxSR0JBKDAsIDAsIDI1
NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNl
dEZpbGxDb2xvcihPcHRpb25hbFJHQkEoMCwgMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7
CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd0xpbmUoSW50UG9pbnQoMCwgY3VycmVu
dEhlaWdodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9pbnQo
cGFnZVdpZHRoLCBjdXJyZW50SGVpZ2h0KSk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQu
cmVzdG9yZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NT
UHJvcGVydHlBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NT
UHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDkxODU2MWJiYTBkNWQxYzBjZmQ2ZGQyOGRiMjgy
NmEyZTRlNGNlOTMuLjNjZDNlNjY0Y2I4NDY0YTQ2NWFhMmNlNjU5ZDgyNzE2Y2EyMmZlODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFu
aW1hdGlvbi5jcHAKQEAgLTczLDcgKzczLDcgQEAgc3RhdGljIGlubGluZSBmbG9hdCBibGVuZEZ1
bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGZsb2F0IGZyb20sIGZsb2F0IHRvLCBkb3VibGUKICAg
ICByZXR1cm4gbmFycm93UHJlY2lzaW9uVG9GbG9hdChmcm9tICsgKHRvIC0gZnJvbSkgKiBwcm9n
cmVzcyk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgQ29sb3IgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlv
bkJhc2UqLCBjb25zdCBDb2xvciYgZnJvbSwgY29uc3QgQ29sb3ImIHRvLCBkb3VibGUgcHJvZ3Jl
c3MpCitzdGF0aWMgaW5saW5lIE9wdGlvbmFsUkdCQSBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9u
QmFzZSosIGNvbnN0IE9wdGlvbmFsUkdCQSYgZnJvbSwgY29uc3QgT3B0aW9uYWxSR0JBJiB0bywg
ZG91YmxlIHByb2dyZXNzKQogewogICAgIHJldHVybiBibGVuZChmcm9tLCB0bywgcHJvZ3Jlc3Mp
OwogfQpAQCAtNTEzLDIyICs1MTMsMjIgQEAgcHVibGljOgogICAgIH0KIH07CiAKLWNsYXNzIFBy
b3BlcnR5V3JhcHBlckNvbG9yIDogcHVibGljIFByb3BlcnR5V3JhcHBlckdldHRlcjxDb2xvcj4g
eworY2xhc3MgUHJvcGVydHlXcmFwcGVyQ29sb3IgOiBwdWJsaWMgUHJvcGVydHlXcmFwcGVyR2V0
dGVyPE9wdGlvbmFsUkdCQT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIFByb3BlcnR5V3JhcHBlckNvbG9yKENTU1Byb3BlcnR5SUQgcHJvcCwgQ29sb3IgKFJl
bmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlciko
Y29uc3QgQ29sb3ImKSkKLSAgICAgICAgOiBQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8Q29sb3I+KHBy
b3AsIGdldHRlcikKKyAgICBQcm9wZXJ0eVdyYXBwZXJDb2xvcihDU1NQcm9wZXJ0eUlEIHByb3As
IE9wdGlvbmFsUkdCQSAoUmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRl
clN0eWxlOjoqc2V0dGVyKShjb25zdCBPcHRpb25hbFJHQkEmKSkKKyAgICAgICAgOiBQcm9wZXJ0
eVdyYXBwZXJHZXR0ZXI8T3B0aW9uYWxSR0JBPihwcm9wLCBnZXR0ZXIpCiAgICAgICAgICwgbV9z
ZXR0ZXIoc2V0dGVyKQogICAgIHsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYmxlbmQoY29u
c3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgUmVuZGVyU3R5bGUqIGRzdCwgY29uc3QgUmVuZGVyU3R5
bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CiAgICAg
ewotICAgICAgICAoZHN0LT4qbV9zZXR0ZXIpKGJsZW5kRnVuYyhhbmltLCAoYS0+KlByb3BlcnR5
V3JhcHBlckdldHRlcjxDb2xvcj46Om1fZ2V0dGVyKSgpLCAoYi0+KlByb3BlcnR5V3JhcHBlckdl
dHRlcjxDb2xvcj46Om1fZ2V0dGVyKSgpLCBwcm9ncmVzcykpOworICAgICAgICAoZHN0LT4qbV9z
ZXR0ZXIpKGJsZW5kRnVuYyhhbmltLCAoYS0+KlByb3BlcnR5V3JhcHBlckdldHRlcjxPcHRpb25h
bFJHQkE+OjptX2dldHRlcikoKSwgKGItPipQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8T3B0aW9uYWxS
R0JBPjo6bV9nZXR0ZXIpKCksIHByb2dyZXNzKSk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAg
dm9pZCAoUmVuZGVyU3R5bGU6OiptX3NldHRlcikoY29uc3QgQ29sb3ImKTsKKyAgICB2b2lkIChS
ZW5kZXJTdHlsZTo6Km1fc2V0dGVyKShjb25zdCBPcHRpb25hbFJHQkEmKTsKIH07CiAKIApAQCAt
NjExLDExICs2MTEsMTEgQEAgc3RhdGljIGlubGluZSBzaXplX3Qgc2hhZG93TGlzdExlbmd0aChj
b25zdCBTaGFkb3dEYXRhKiBzaGFkb3cpCiAKIHN0YXRpYyBpbmxpbmUgY29uc3QgU2hhZG93RGF0
YSogc2hhZG93Rm9yQmxlbmRpbmcoY29uc3QgU2hhZG93RGF0YSogc3JjU2hhZG93LCBjb25zdCBT
aGFkb3dEYXRhKiBvdGhlclNoYWRvdykKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoU2hhZG93RGF0YSwgZGVmYXVsdFNoYWRvd0RhdGEsIChJbnRQb2ludCgpLCAwLCAwLCBO
b3JtYWwsIGZhbHNlLCBDb2xvcjo6dHJhbnNwYXJlbnQpKTsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoU2hhZG93RGF0YSwgZGVmYXVsdEluc2V0U2hhZG93RGF0YSwgKEludFBv
aW50KCksIDAsIDAsIEluc2V0LCBmYWxzZSwgQ29sb3I6OnRyYW5zcGFyZW50KSk7CisgICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFNoYWRvd0RhdGEsIGRlZmF1bHRTaGFkb3dEYXRh
LCAoSW50UG9pbnQoKSwgMCwgMCwgTm9ybWFsLCBmYWxzZSwgT3B0aW9uYWxSR0JBOjp0cmFuc3Bh
cmVudCkpOworICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTaGFkb3dEYXRhLCBk
ZWZhdWx0SW5zZXRTaGFkb3dEYXRhLCAoSW50UG9pbnQoKSwgMCwgMCwgSW5zZXQsIGZhbHNlLCBP
cHRpb25hbFJHQkE6OnRyYW5zcGFyZW50KSk7CiAKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoU2hhZG93RGF0YSwgZGVmYXVsdFdlYktpdEJveFNoYWRvd0RhdGEsIChJbnRQb2lu
dCgpLCAwLCAwLCBOb3JtYWwsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudCkpOwotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTaGFkb3dEYXRhLCBkZWZhdWx0SW5zZXRXZWJLaXRC
b3hTaGFkb3dEYXRhLCAoSW50UG9pbnQoKSwgMCwgMCwgSW5zZXQsIHRydWUsIENvbG9yOjp0cmFu
c3BhcmVudCkpOworICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTaGFkb3dEYXRh
LCBkZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YSwgKEludFBvaW50KCksIDAsIDAsIE5vcm1hbCwg
dHJ1ZSwgT3B0aW9uYWxSR0JBOjp0cmFuc3BhcmVudCkpOworICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChTaGFkb3dEYXRhLCBkZWZhdWx0SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRh
LCAoSW50UG9pbnQoKSwgMCwgMCwgSW5zZXQsIHRydWUsIE9wdGlvbmFsUkdCQTo6dHJhbnNwYXJl
bnQpKTsKIAogICAgIGlmIChzcmNTaGFkb3cpCiAgICAgICAgIHJldHVybiBzcmNTaGFkb3c7CkBA
IC03NDUsNyArNzQ1LDcgQEAgcHJpdmF0ZToKIGNsYXNzIFByb3BlcnR5V3JhcHBlck1heWJlSW52
YWxpZENvbG9yIDogcHVibGljIEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFByb3BlcnR5V3JhcHBlck1heWJl
SW52YWxpZENvbG9yKENTU1Byb3BlcnR5SUQgcHJvcCwgQ29sb3IgKFJlbmRlclN0eWxlOjoqZ2V0
dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoY29uc3QgQ29sb3ImKSkK
KyAgICBQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcihDU1NQcm9wZXJ0eUlEIHByb3As
IE9wdGlvbmFsUkdCQSAoUmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRl
clN0eWxlOjoqc2V0dGVyKShjb25zdCBPcHRpb25hbFJHQkEmKSkKICAgICAgICAgOiBBbmltYXRp
b25Qcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3ApCiAgICAgICAgICwgbV9nZXR0ZXIoZ2V0dGVyKQog
ICAgICAgICAsIG1fc2V0dGVyKHNldHRlcikKQEAgLTc1NCw4ICs3NTQsOCBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5k
ZXJTdHlsZSogYikgY29uc3QKICAgICB7Ci0gICAgICAgIENvbG9yIGZyb21Db2xvciA9IChhLT4q
bV9nZXR0ZXIpKCk7Ci0gICAgICAgIENvbG9yIHRvQ29sb3IgPSAoYi0+Km1fZ2V0dGVyKSgpOwor
ICAgICAgICBPcHRpb25hbFJHQkEgZnJvbUNvbG9yID0gKGEtPiptX2dldHRlcikoKTsKKyAgICAg
ICAgT3B0aW9uYWxSR0JBIHRvQ29sb3IgPSAoYi0+Km1fZ2V0dGVyKSgpOwogCiAgICAgICAgIGlm
ICghZnJvbUNvbG9yLmlzVmFsaWQoKSAmJiAhdG9Db2xvci5pc1ZhbGlkKCkpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTc3MCw4ICs3NzAsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgUmVuZGVyU3R5bGUqIGRzdCwg
Y29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiLCBkb3VibGUgcHJvZ3Jl
c3MpIGNvbnN0CiAgICAgewotICAgICAgICBDb2xvciBmcm9tQ29sb3IgPSAoYS0+Km1fZ2V0dGVy
KSgpOwotICAgICAgICBDb2xvciB0b0NvbG9yID0gKGItPiptX2dldHRlcikoKTsKKyAgICAgICAg
T3B0aW9uYWxSR0JBIGZyb21Db2xvciA9IChhLT4qbV9nZXR0ZXIpKCk7CisgICAgICAgIE9wdGlv
bmFsUkdCQSB0b0NvbG9yID0gKGItPiptX2dldHRlcikoKTsKIAogICAgICAgICBpZiAoIWZyb21D
b2xvci5pc1ZhbGlkKCkgJiYgIXRvQ29sb3IuaXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNzg0LDggKzc4NCw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgQ29s
b3IgKFJlbmRlclN0eWxlOjoqbV9nZXR0ZXIpKCkgY29uc3Q7Ci0gICAgdm9pZCAoUmVuZGVyU3R5
bGU6OiptX3NldHRlcikoY29uc3QgQ29sb3ImKTsKKyAgICBPcHRpb25hbFJHQkEgKFJlbmRlclN0
eWxlOjoqbV9nZXR0ZXIpKCkgY29uc3Q7CisgICAgdm9pZCAoUmVuZGVyU3R5bGU6OiptX3NldHRl
cikoY29uc3QgT3B0aW9uYWxSR0JBJik7CiB9OwogCiAKQEAgLTc5MywxNSArNzkzLDE1IEBAIGVu
dW0gTWF5YmVJbnZhbGlkQ29sb3JUYWcgeyBNYXliZUludmFsaWRDb2xvciB9OwogY2xhc3MgUHJv
cGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IgOiBwdWJsaWMgQW5pbWF0aW9uUHJvcGVy
dHlXcmFwcGVyQmFzZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgUHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IoQ1NTUHJvcGVydHlJRCBwcm9w
LCBDb2xvciAoUmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxl
Ojoqc2V0dGVyKShjb25zdCBDb2xvciYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENvbG9yIChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRHZXR0ZXIpKCkgY29uc3QsIHZv
aWQgKFJlbmRlclN0eWxlOjoqdmlzaXRlZFNldHRlcikoY29uc3QgQ29sb3ImKSkKKyAgICBQcm9w
ZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvcihDU1NQcm9wZXJ0eUlEIHByb3AsIE9wdGlv
bmFsUkdCQSAoUmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxl
Ojoqc2V0dGVyKShjb25zdCBPcHRpb25hbFJHQkEmKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBPcHRpb25hbFJHQkEgKFJlbmRlclN0eWxlOjoqdmlzaXRlZEdldHRl
cikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkU2V0dGVyKShjb25zdCBPcHRp
b25hbFJHQkEmKSkKICAgICAgICAgOiBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3Ap
CiAgICAgICAgICwgbV93cmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyQ29s
b3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkKICAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKHN0
ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIs
IHZpc2l0ZWRTZXR0ZXIpKQogICAgIHsKICAgICB9Ci0gICAgUHJvcGVydHlXcmFwcGVyVmlzaXRl
ZEFmZmVjdGVkQ29sb3IoQ1NTUHJvcGVydHlJRCBwcm9wLCBNYXliZUludmFsaWRDb2xvclRhZywg
Q29sb3IgKFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6
KnNldHRlcikoY29uc3QgQ29sb3ImKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb2xvciAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkR2V0dGVyKSgpIGNvbnN0LCB2b2lk
IChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRTZXR0ZXIpKGNvbnN0IENvbG9yJikpCisgICAgUHJvcGVy
dHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IoQ1NTUHJvcGVydHlJRCBwcm9wLCBNYXliZUlu
dmFsaWRDb2xvclRhZywgT3B0aW9uYWxSR0JBIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25z
dCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKGNvbnN0IE9wdGlvbmFsUkdCQSYpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsUkdCQSAoUmVuZGVy
U3R5bGU6Oip2aXNpdGVkR2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnZpc2l0
ZWRTZXR0ZXIpKGNvbnN0IE9wdGlvbmFsUkdCQSYpKQogICAgICAgICA6IEFuaW1hdGlvblByb3Bl
cnR5V3JhcHBlckJhc2UocHJvcCkKICAgICAgICAgLCBtX3dyYXBwZXIoc3RkOjptYWtlX3VuaXF1
ZTxQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcj4ocHJvcCwgZ2V0dGVyLCBzZXR0ZXIp
KQogICAgICAgICAsIG1fdmlzaXRlZFdyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdy
YXBwZXJNYXliZUludmFsaWRDb2xvcj4ocHJvcCwgdmlzaXRlZEdldHRlciwgdmlzaXRlZFNldHRl
cikpCkBAIC0xMDU1LDcgKzEwNTUsNyBAQCBwdWJsaWM6CiBjbGFzcyBQcm9wZXJ0eVdyYXBwZXJT
VkdQYWludCA6IHB1YmxpYyBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQcm9wZXJ0eVdyYXBwZXJTVkdQYWlu
dChDU1NQcm9wZXJ0eUlEIHByb3AsIGNvbnN0IFNWR1BhaW50OjpTVkdQYWludFR5cGUmIChSZW5k
ZXJTdHlsZTo6KnBhaW50VHlwZUdldHRlcikoKSBjb25zdCwgQ29sb3IgKFJlbmRlclN0eWxlOjoq
Z2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoY29uc3QgQ29sb3Im
KSkKKyAgICBQcm9wZXJ0eVdyYXBwZXJTVkdQYWludChDU1NQcm9wZXJ0eUlEIHByb3AsIGNvbnN0
IFNWR1BhaW50OjpTVkdQYWludFR5cGUmIChSZW5kZXJTdHlsZTo6KnBhaW50VHlwZUdldHRlciko
KSBjb25zdCwgT3B0aW9uYWxSR0JBIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9p
ZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKGNvbnN0IE9wdGlvbmFsUkdCQSYpKQogICAgICAgICA6
IEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UocHJvcCkKICAgICAgICAgLCBtX3BhaW50VHlw
ZUdldHRlcihwYWludFR5cGVHZXR0ZXIpCiAgICAgICAgICwgbV9nZXR0ZXIoZ2V0dGVyKQpAQCAt
MTA2OCwyMCArMTA2OCwyMCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICgoYS0+Km1fcGFpbnRUeXBl
R2V0dGVyKSgpICE9IChiLT4qbV9wYWludFR5cGVHZXR0ZXIpKCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgLy8gV2Ugb25seSBzdXBwb3J0IGFuaW1hdGlvbnMgYmV0d2Vl
biBTVkdQYWludHMgdGhhdCBhcmUgcHVyZSBDb2xvciB2YWx1ZXMuCisgICAgICAgIC8vIFdlIG9u
bHkgc3VwcG9ydCBhbmltYXRpb25zIGJldHdlZW4gU1ZHUGFpbnRzIHRoYXQgYXJlIHB1cmUgT3B0
aW9uYWxSR0JBIHZhbHVlcy4KICAgICAgICAgLy8gRm9yIGV2ZXJ5dGhpbmcgZWxzZSB3ZSBtdXN0
IHJldHVybiB0cnVlIGZvciB0aGlzIG1ldGhvZCwgb3RoZXJ3aXNlCiAgICAgICAgIC8vIHdlIHdp
bGwgdHJ5IHRvIGFuaW1hdGUgYmV0d2VlbiB2YWx1ZXMgZm9yZXZlci4KICAgICAgICAgaWYgKChh
LT4qbV9wYWludFR5cGVHZXR0ZXIpKCkgPT0gU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfUkdCQ09M
T1IpIHsKLSAgICAgICAgICAgIENvbG9yIGZyb21Db2xvciA9IChhLT4qbV9nZXR0ZXIpKCk7Ci0g
ICAgICAgICAgICBDb2xvciB0b0NvbG9yID0gKGItPiptX2dldHRlcikoKTsKKyAgICAgICAgICAg
IE9wdGlvbmFsUkdCQSBmcm9tQ29sb3IgPSAoYS0+Km1fZ2V0dGVyKSgpOworICAgICAgICAgICAg
T3B0aW9uYWxSR0JBIHRvQ29sb3IgPSAoYi0+Km1fZ2V0dGVyKSgpOwogCiAgICAgICAgICAgICBp
ZiAoIWZyb21Db2xvci5pc1ZhbGlkKCkgJiYgIXRvQ29sb3IuaXNWYWxpZCgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgICAgICBpZiAoIWZyb21Db2xvci5pc1ZhbGlk
KCkpCi0gICAgICAgICAgICAgICAgZnJvbUNvbG9yID0gQ29sb3IoKTsKKyAgICAgICAgICAgICAg
ICBmcm9tQ29sb3IgPSBPcHRpb25hbFJHQkEoKTsKICAgICAgICAgICAgIGlmICghdG9Db2xvci5p
c1ZhbGlkKCkpCi0gICAgICAgICAgICAgICAgdG9Db2xvciA9IENvbG9yKCk7CisgICAgICAgICAg
ICAgICAgdG9Db2xvciA9IE9wdGlvbmFsUkdCQSgpOwogCiAgICAgICAgICAgICByZXR1cm4gZnJv
bUNvbG9yID09IHRvQ29sb3I7CiAgICAgICAgIH0KQEAgLTEwOTQsMjMgKzEwOTQsMjMgQEAgcHVi
bGljOgogICAgICAgICAgICAgfHwgKGItPiptX3BhaW50VHlwZUdldHRlcikoKSAhPSBTVkdQYWlu
dDo6U1ZHX1BBSU5UVFlQRV9SR0JDT0xPUikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBDb2xvciBmcm9tQ29sb3IgPSAoYS0+Km1fZ2V0dGVyKSgpOwotICAgICAgICBDb2xvciB0b0Nv
bG9yID0gKGItPiptX2dldHRlcikoKTsKKyAgICAgICAgT3B0aW9uYWxSR0JBIGZyb21Db2xvciA9
IChhLT4qbV9nZXR0ZXIpKCk7CisgICAgICAgIE9wdGlvbmFsUkdCQSB0b0NvbG9yID0gKGItPipt
X2dldHRlcikoKTsKIAogICAgICAgICBpZiAoIWZyb21Db2xvci5pc1ZhbGlkKCkgJiYgIXRvQ29s
b3IuaXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghZnJvbUNv
bG9yLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIGZyb21Db2xvciA9IENvbG9yKCk7CisgICAgICAg
ICAgICBmcm9tQ29sb3IgPSBPcHRpb25hbFJHQkEoKTsKICAgICAgICAgaWYgKCF0b0NvbG9yLmlz
VmFsaWQoKSkKLSAgICAgICAgICAgIHRvQ29sb3IgPSBDb2xvcigpOworICAgICAgICAgICAgdG9D
b2xvciA9IE9wdGlvbmFsUkdCQSgpOwogICAgICAgICAoZHN0LT4qbV9zZXR0ZXIpKGJsZW5kRnVu
YyhhbmltLCBmcm9tQ29sb3IsIHRvQ29sb3IsIHByb2dyZXNzKSk7CiAgICAgfQogCiBwcml2YXRl
OgogICAgIGNvbnN0IFNWR1BhaW50OjpTVkdQYWludFR5cGUmIChSZW5kZXJTdHlsZTo6Km1fcGFp
bnRUeXBlR2V0dGVyKSgpIGNvbnN0OwotICAgIENvbG9yIChSZW5kZXJTdHlsZTo6Km1fZ2V0dGVy
KSgpIGNvbnN0OwotICAgIHZvaWQgKFJlbmRlclN0eWxlOjoqbV9zZXR0ZXIpKGNvbnN0IENvbG9y
Jik7CisgICAgT3B0aW9uYWxSR0JBIChSZW5kZXJTdHlsZTo6Km1fZ2V0dGVyKSgpIGNvbnN0Owor
ICAgIHZvaWQgKFJlbmRlclN0eWxlOjoqbV9zZXR0ZXIpKGNvbnN0IE9wdGlvbmFsUkdCQSYpOwog
fTsKIAogY2xhc3MgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbG9yQ2hvb3Nlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ29sb3JDaG9vc2VyLmgKaW5kZXggYjdjZjVkZWUzMWQwMTE5ZTNiNzQ4MzYxZGFh
ZTJhNWU2NzY0YzhlNy4uOTU3MzU3N2JhYjljOTI4Y2JjMzBiN2FlMmE4NzVlOWViNThhN2RlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29sb3JDaG9vc2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29sb3JDaG9vc2VyLmgKQEAgLTM0LDE0ICszNCwxNCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbG9yOworY2xhc3MgT3B0aW9uYWxS
R0JBOwogCiBjbGFzcyBDb2xvckNob29zZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNvbG9y
Q2hvb3NlcigpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlYXR0YWNoQ29sb3JDaG9vc2VyKGNv
bnN0IENvbG9yJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkQ29sb3IoY29uc3Qg
Q29sb3ImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVhdHRhY2hDb2xvckNob29zZXIoY29uc3Qg
T3B0aW9uYWxSR0JBJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkQ29sb3IoY29u
c3QgT3B0aW9uYWxSR0JBJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZENob29zZXIoKSB7IH0K
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbG9yQ2hvb3NlckNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29sb3JDaG9vc2VyQ2xpZW50LmgKaW5k
ZXggYmRlNWU3ODIzMTdiODk5ZTNiOTA3NmI3M2RhMjNmNjViMjU2YWIwYy4uYzE0NjVhY2QyN2Qx
MTdlYjFjMDI2YmMyYzZhZDY1NGJkYmIxYTc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ29sb3JDaG9vc2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ29sb3JDaG9vc2VyQ2xpZW50LmgKQEAgLTM4LDE4ICszOCwxOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIENvbG9yOworY2xhc3MgT3B0aW9uYWxSR0JBOwogCiBjbGFzcyBD
b2xvckNob29zZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNvbG9yQ2hvb3NlckNs
aWVudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENob29zZUNvbG9yKGNvbnN0IENvbG9y
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VDb2xvcihjb25zdCBPcHRpb25hbFJH
QkEmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZENob29zZXIoKSA9IDA7CiAgICAgdmly
dHVhbCBJbnRSZWN0IGVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCkgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgQ29sb3IgY3VycmVudENvbG9yKCkgPSAwOworICAgIHZpcnR1YWwgT3B0aW9u
YWxSR0JBIGN1cnJlbnRDb2xvcigpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd1N1
Z2dlc3Rpb25zKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgVmVjdG9yPENvbG9yPiBzdWdnZXN0
aW9ucygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxPcHRpb25hbFJHQkE+IHN1Z2dl
c3Rpb25zKCkgY29uc3QgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmgKaW5kZXggNTZiMTE5N2ZhMzMwM2U4NjEyOWM4ZTIwMWJlYWFi
NmFhZTNiNDZkNy4uNTk2YmE1MGRjYzg3ZWM1YTAzOTMzYzEyMjU0NDMxYTk0ODA1YmQ4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAg
ICBTdHJpbmcgYXNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5ID0gQ29udmVydEZpbGVuYW1l
cywgU3RyaW5nKiB0aXRsZSA9IG51bGxwdHIpIGNvbnN0OwogICAgIFN0cmluZyBhc1BsYWluVGV4
dCgpIGNvbnN0OwogICAgIHZvaWQgYXNGaWxlbmFtZXMoVmVjdG9yPFN0cmluZz4mKSBjb25zdDsK
LSAgICBDb2xvciBhc0NvbG9yKCkgY29uc3Q7CisgICAgT3B0aW9uYWxSR0JBIGFzQ29sb3IoKSBj
b25zdDsKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSgpIGNvbnN0OwogICAgIGJvb2wgY29udGFp
bnNDb2xvcigpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNGaWxlcygpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCBmNWU5NTUyMWVl
ZDhlNmIwNTVhZDEyODU3M2UzM2MxNTExNDZhNDRmLi5jMzZmNDEyNjBlNTliOGZkMjJjNjQyZDdj
MjZiNjA0MDk3NWUxMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
U3RyYXRlZ3kuaApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIENvbG9yOworY2xhc3MgT3B0aW9uYWxSR0JBOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xh
c3MgVVJMOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwg
bG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAg
dmlydHVhbCBTdHJpbmcgdW5pcXVlTmFtZSgpID0gMDsKLSAgICB2aXJ0dWFsIENvbG9yIGNvbG9y
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIE9wdGlvbmFs
UkdCQSBjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVh
bCBVUkwgdXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICAKICAgICB2
aXJ0dWFsIGxvbmcgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA0ODU2ZDEzNGU2ZmQxZjU5NThhOGE2
NjZiNTFiYmRjYTUwNjAyMGZhLi5hN2U5NmZiYjg0MmY2YmY0OWYzNjk4ZThkZTc2N2I2OThlMmEy
NTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApA
QCAtNDEsNyArNDEsNyBAQCBPQkpDX0NMQVNTIFVJUGFzdGVib2FyZDsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBDb2xvcjsKK2NsYXNzIE9wdGlvbmFsUkdCQTsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CkBAIC02MSw3ICs2
MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5
cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgbG9uZyBjaGFuZ2VDb3VudCgp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yIGNvbG9yKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgT3B0aW9uYWxSR0JBIGNvbG9yKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHVybCgp
OwogCiAgICAgLy8gVGFrZSBvd25lcnNoaXAgb2YgdGhlIHBhc3RlYm9hcmQsIGFuZCByZXR1cm4g
bmV3IGNoYW5nZSBjb3VudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bv
cHVwTWVudUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUG9wdXBNZW51Q2xpZW50
LmgKaW5kZXggMWViNDhmZjBiYzUxMmU5Nzk4YTZhMjlmM2E0OTBkYTViMTNlZmE4OC4uYWE1ZWMy
YTE5NThhYjcxYzFlYjFlNDc2YTJkYjAwZjFiY2IzZDdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUG9wdXBNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUG9wdXBNZW51Q2xpZW50LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBDb2xvcjsKK2NsYXNzIE9wdGlvbmFsUkdCQTsKIGNsYXNzIEZvbnRT
ZWxlY3RvcjsKIGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBTY3JvbGxiYXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qb3B1cE1lbnVTdHlsZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUG9wdXBNZW51U3R5bGUuaAppbmRleCAzNzlhYTIxOWEzNzUyZDlkMDBmNmVj
N2NhZjFkNGFiNjhmODMzOWU3Li4yY2ZhZmE2MmVjNjNhMjVlMDI1YWFlYmMzYTUwMjMwYTVhOWJm
ZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qb3B1cE1lbnVTdHlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudVN0eWxlLmgKQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogICAgICAgICBQb3B1cE1lbnVTaXplTWluaQogICAgIH07CiAKLSAg
ICBQb3B1cE1lbnVTdHlsZShjb25zdCBDb2xvciYgZm9yZWdyb3VuZCwgY29uc3QgQ29sb3ImIGJh
Y2tncm91bmQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBib29sIHZpc2libGUsIGJvb2wgaXNE
aXNwbGF5Tm9uZSwgYm9vbCBoYXNEZWZhdWx0QXBwZWFyYW5jZSwgTGVuZ3RoIHRleHRJbmRlbnQs
IFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgYm9vbCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJp
ZGUsIEJhY2tncm91bmRDb2xvclR5cGUgYmFja2dyb3VuZENvbG9yVHlwZSA9IERlZmF1bHRCYWNr
Z3JvdW5kQ29sb3IsIFBvcHVwTWVudVR5cGUgbWVudVR5cGUgPSBTZWxlY3RQb3B1cCwgUG9wdXBN
ZW51U2l6ZSBtZW51U2l6ZSA9IFBvcHVwTWVudVNpemVOb3JtYWwpCisgICAgUG9wdXBNZW51U3R5
bGUoY29uc3QgT3B0aW9uYWxSR0JBJiBmb3JlZ3JvdW5kLCBjb25zdCBPcHRpb25hbFJHQkEmIGJh
Y2tncm91bmQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBib29sIHZpc2libGUsIGJvb2wgaXNE
aXNwbGF5Tm9uZSwgYm9vbCBoYXNEZWZhdWx0QXBwZWFyYW5jZSwgTGVuZ3RoIHRleHRJbmRlbnQs
IFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgYm9vbCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJp
ZGUsIEJhY2tncm91bmRDb2xvclR5cGUgYmFja2dyb3VuZENvbG9yVHlwZSA9IERlZmF1bHRCYWNr
Z3JvdW5kQ29sb3IsIFBvcHVwTWVudVR5cGUgbWVudVR5cGUgPSBTZWxlY3RQb3B1cCwgUG9wdXBN
ZW51U2l6ZSBtZW51U2l6ZSA9IFBvcHVwTWVudVNpemVOb3JtYWwpCiAgICAgICAgIDogbV9mb3Jl
Z3JvdW5kQ29sb3IoZm9yZWdyb3VuZCkKICAgICAgICAgLCBtX2JhY2tncm91bmRDb2xvcihiYWNr
Z3JvdW5kKQogICAgICAgICAsIG1fZm9udChmb250KQpAQCAtNTksOCArNTksOCBAQCBwdWJsaWM6
CiAgICAgewogICAgIH0KIAotICAgIGNvbnN0IENvbG9yJiBmb3JlZ3JvdW5kQ29sb3IoKSBjb25z
dCB7IHJldHVybiBtX2ZvcmVncm91bmRDb2xvcjsgfQotICAgIGNvbnN0IENvbG9yJiBiYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQorICAgIGNvbnN0
IE9wdGlvbmFsUkdCQSYgZm9yZWdyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9mb3JlZ3Jv
dW5kQ29sb3I7IH0KKyAgICBjb25zdCBPcHRpb25hbFJHQkEmIGJhY2tncm91bmRDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CiAgICAgY29uc3QgRm9udENhc2NhZGUm
IGZvbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQ7IH0KICAgICBib29sIGlzVmlzaWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmlzaWJsZTsgfQogICAgIGJvb2wgaXNEaXNwbGF5Tm9uZSgpIGNvbnN0
IHsgcmV0dXJuIG1faXNEaXNwbGF5Tm9uZTsgfQpAQCAtNzMsOCArNzMsOCBAQCBwdWJsaWM6CiAg
ICAgUG9wdXBNZW51U2l6ZSBtZW51U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVudVNpemU7IH0K
IAogcHJpdmF0ZToKLSAgICBDb2xvciBtX2ZvcmVncm91bmRDb2xvcjsKLSAgICBDb2xvciBtX2Jh
Y2tncm91bmRDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgbV9mb3JlZ3JvdW5kQ29sb3I7CisgICAg
T3B0aW9uYWxSR0JBIG1fYmFja2dyb3VuZENvbG9yOwogICAgIEZvbnRDYXNjYWRlIG1fZm9udDsK
ICAgICBib29sIG1fdmlzaWJsZTsKICAgICBib29sIG1faXNEaXNwbGF5Tm9uZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCmluZGV4IGZhOGFmMGVlYWVkYjU4ZjlmOGMz
YThjNzY4MjdkNDMyMDhhNmM0MzIuLjhjMzg0ZDdiZWM3MjQ0ODkyZjFhMzA2NDIzZWNmY2E0Nzc3
NWUzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaApAQCAtODUs
MTMgKzg1LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Ny
b2xsYmFyJiwgU2Nyb2xsYmFyUGFydCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3Jv
bGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50
UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29y
bmVyUmVjdCk7IH0KLSAgICBzdGF0aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRl
eHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJH
Qik7IH0KKyAgICBzdGF0aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRleHQtPmZp
bGxSZWN0KGNvcm5lclJlY3QsIE9wdGlvbmFsUkdCQTo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0
JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQogCiAjaWYgRU5BQkxFKFJV
QkJFUl9CQU5ESU5HKQotICAgIHZpcnR1YWwgdm9pZCBzZXRVcE92ZXJoYW5nQXJlYXNMYXllckNv
bnRlbnRzKEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBDb2xvciYpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzZXRVcE92ZXJoYW5nQXJlYXNMYXllckNvbnRlbnRzKEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBP
cHRpb25hbFJHQkEmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VXBDb250ZW50U2hhZG93TGF5
ZXIoR3JhcGhpY3NMYXllciopIHsgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAppbmRleCA4ZTJmODM1YzY3MzJk
ZTY0ZTA1OWFhNjhlY2M4MzQ5YWU1YjAyMDQ3Li4wZGVlNGNiZWE1NDJmNTdkNzYxMDVlMjk3NTdi
M2Y2OGQ2ZDlmZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGUuY3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgaW50IFNjcm9sbGJhclRo
ZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aChTY3JvbGxiYXImIHNjcm9sbGJhcikKIAogdm9pZCBT
Y3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKLSAg
ICBjb250ZXh0LT5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIE9wdGlvbmFsUkdC
QTo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogfQogCiBJbnRSZWN0IFNjcm9sbGJhclRo
ZW1lQ29tcG9zaXRlOjp0aHVtYlJlY3QoU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCkBAIC0yODEsMTEg
KzI4MSwxMSBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYlJlY3QoU2Ny
b2xsYmFyJiBzY3JvbGxiYXIpCiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50
T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNh
bE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogeyAgICAKLSAgICBjb250
ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoT3B0aW9uYWxSR0JBOjp3aGl0ZSwgQ29sb3JTcGFjZURl
dmljZVJHQik7CiAgICAgaWYgKCFob3Jpem9udGFsT3ZlcmhhbmdSZWN0LmlzRW1wdHkoKSkKICAg
ICAgICAgY29udGV4dC0+ZmlsbFJlY3QoaW50ZXJzZWN0aW9uKGhvcml6b250YWxPdmVyaGFuZ1Jl
Y3QsIGRpcnR5UmVjdCkpOwogCi0gICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjp3aGl0
ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKE9wdGlv
bmFsUkdCQTo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGlmICghdmVydGljYWxP
dmVyaGFuZ1JlY3QuaXNFbXB0eSgpKQogICAgICAgICBjb250ZXh0LT5maWxsUmVjdChpbnRlcnNl
Y3Rpb24odmVydGljYWxPdmVyaGFuZ1JlY3QsIGRpcnR5UmVjdCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGhlbWUuY3BwCmluZGV4IGVhYzczNTI1NDFjYTYwMDJkZjdiMDg0YTY3N2MyMmZlMGU5YTEx
ODMuLjIzOWZlMGI5YzcxZGQ4N2UwOTg3ZDBkMGUyMGJiZjBiODZhMjA2NDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UaGVtZS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBUaGVtZTo6ZHJhd05hbWVk
SW1hZ2UoY29uc3QgU3RyaW5nJiBuYW1lLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEYKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNr
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoT3B0aW9u
YWxSR0JBOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICAvLyBEcmF3IGEgZ2Vu
ZXJpYyBXaXJlbGVzcyBQbGF5YmFjayBpY29uLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaAppbmRl
eCBlZWZiOTI4ZmM3NjU5MjRmNTM0ODFlM2NiZTQ0ZTgwNGM5Y2JlNDhmLi40M2ExZTE3NWE2ZTVj
NzQ3NGQ2NTBhOTljMWUxYmQ5NmQyZmI4YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgKQEAg
LTY4LDExICs2OCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNvbnRyb2xEcmF3c0Zv
Y3VzT3V0bGluZShDb250cm9sUGFydCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgLy8g
TWV0aG9kcyBmb3Igb2J0YWluaW5nIHBsYXRmb3JtLXNwZWNpZmljIGNvbG9ycy4KLSAgICB2aXJ0
dWFsIENvbG9yIHNlbGVjdGlvbkNvbG9yKENvbnRyb2xQYXJ0LCBjb25zdCBDb250cm9sU3RhdGVz
JiwgU2VsZWN0aW9uUGFydCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQotICAgIHZpcnR1YWwg
Q29sb3IgdGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsg
fQorICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHNlbGVjdGlvbkNvbG9yKENvbnRyb2xQYXJ0LCBj
b25zdCBDb250cm9sU3RhdGVzJiwgU2VsZWN0aW9uUGFydCkgY29uc3QgeyByZXR1cm4gT3B0aW9u
YWxSR0JBKCk7IH0KKyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSB0ZXh0U2VhcmNoSGlnaGxpZ2h0
Q29sb3IoKSBjb25zdCB7IHJldHVybiBPcHRpb25hbFJHQkEoKTsgfQogICAgIAogICAgIC8vIENT
UyBzeXN0ZW0gY29sb3JzIGFuZCBmb250cwotICAgIHZpcnR1YWwgQ29sb3Igc3lzdGVtQ29sb3Io
VGhlbWVDb2xvcikgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQorICAgIHZpcnR1YWwgT3B0aW9u
YWxSR0JBIHN5c3RlbUNvbG9yKFRoZW1lQ29sb3IpIGNvbnN0IHsgcmV0dXJuIE9wdGlvbmFsUkdC
QSgpOyB9CiAgICAgdmlydHVhbCBGb250Q2FzY2FkZSBzeXN0ZW1Gb250KFRoZW1lRm9udCwgRm9u
dERlc2NyaXB0aW9uJikgY29uc3QgeyByZXR1cm4gRm9udENhc2NhZGUoKTsgfQogICAgIAogICAg
IC8vIEhvdyBmYXN0IHRoZSBjYXJldCBibGlua3MgaW4gdGV4dCBmaWVsZHMuCkBAIC0xMTUsOCAr
MTE1LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdFN0eWxlU2hlZXQoKTsK
IAogcHJpdmF0ZToKLSAgICBtdXRhYmxlIENvbG9yIG1fYWN0aXZlU2VsZWN0aW9uQ29sb3I7Ci0g
ICAgbXV0YWJsZSBDb2xvciBtX2luYWN0aXZlU2VsZWN0aW9uQ29sb3I7CisgICAgbXV0YWJsZSBP
cHRpb25hbFJHQkEgbV9hY3RpdmVTZWxlY3Rpb25Db2xvcjsKKyAgICBtdXRhYmxlIE9wdGlvbmFs
UkdCQSBtX2luYWN0aXZlU2VsZWN0aW9uQ29sb3I7CiB9OwogCiAvLyBGdW5jdGlvbiB0byBvYnRh
aW4gdGhlIHRoZW1lLiAgVGhpcyBpcyBpbXBsZW1lbnRlZCBpbiB0aGUgcGxhdGZvcm0tc3BlY2lm
aWMgc3ViY2xhc3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1RoZW1lQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2Nv
YS5jcHAKaW5kZXggZGE4NzkyOGMwZjg3MzQwNTljNDJiNzkwZDllMzE3MjI5NWY4Y2NmMi4uZDNi
ZjZiNTU4ZGUxOGJmMmZiN2Q5MjM5OWQwM2IxNTI2ZWZmZjMyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBU
aGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY28KICAgICB9CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6
YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihP
cHRpb25hbFJHQkE6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgIEZsb2F0U2l6
ZSB3aXJlbGVzc1BsYXliYWNrU3JjU2l6ZSgzMiwgMjQuMDE2KTsKICAgICBmaXRDb250ZXh0VG9C
b3goY29udGV4dCwgd2lyZWxlc3NQbGF5YmFja1NyY1NpemUsIHJlY3Quc2l6ZSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwCmluZGV4IDAwMmE3OTBhNjJj
OTQ4YzBmYzIzM2I2NzEyNzUwNjdkOTg4M2FlMDguLjlhMzQwYmEwNjEwN2I3YjU3Mjg4MjU5MDUw
MWM1MzIyY2Q5YTNmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9E
cmFnRGF0YUVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdEYXRh
RWZsLmNwcApAQCAtNTksOSArNTksOSBAQCBTdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KCkg
Y29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLUNvbG9yIERyYWdEYXRhOjphc0NvbG9y
KCkgY29uc3QKK09wdGlvbmFsUkdCQSBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIENvbG9yKCk7CisgICAgcmV0dXJuIE9wdGlvbmFsUkdCQSgpOwogfQogCiBib29sIERy
YWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCmluZGV4IDIyZmE3NjEzZmZjZGZl
MGFlMzE5MzhhZDNhMWUzN2Q5Y2NmNGQzMTYuLjQwZWRmMWI2ZjYwYzYzYTdlYzA2NDI3YTZiNmY4
NDIzMThjMGNjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5k
ZXJUaGVtZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRo
ZW1lRWZsLmNwcApAQCAtMzQwLDcgKzM0MCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFwcGx5
RWRqZVJUTFN0YXRlKEV2YXNfT2JqZWN0KiBlZGplLCBjb25zdCBSZW5kZXJPYmplY3QmIG9iCiAg
ICAgfQogfQogCi1ib29sIFJlbmRlclRoZW1lRWZsOjppc0NvbnRyb2xTdHlsZWQoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCb3JkZXJEYXRhJiBib3JkZXIsIGNvbnN0IEZpbGxMYXll
ciYgYmFja2dyb3VuZCwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikgY29uc3QKK2Jvb2wg
UmVuZGVyVGhlbWVFZmw6OmlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IGNvbnN0IEJvcmRlckRhdGEmIGJvcmRlciwgY29uc3QgRmlsbExheWVyJiBiYWNrZ3JvdW5kLCBj
b25zdCBPcHRpb25hbFJHQkEmIGJhY2tncm91bmRDb2xvcikgY29uc3QKIHsKICAgICByZXR1cm4g
UmVuZGVyVGhlbWU6OmlzQ29udHJvbFN0eWxlZChzdHlsZSwgYm9yZGVyLCBiYWNrZ3JvdW5kLCBi
YWNrZ3JvdW5kQ29sb3IpIHx8IHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBNZW51bGlzdEJ1dHRvblBh
cnQ7CiB9CkBAIC0zNTQsNyArMzU0LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRUaGVt
ZVBhcnQoY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QsIEZvcm1UeXBlIHR5cGUsIGMKICAgICBp
ZiAoIWVudHJ5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBib29sIGhhdmVCYWNrZ3Jv
dW5kQ29sb3IgPSBpc0NvbnRyb2xTdHlsZWQob2JqZWN0LnN0eWxlKCksIG9iamVjdC5zdHlsZSgp
LmJvcmRlcigpLCAqb2JqZWN0LnN0eWxlKCkuYmFja2dyb3VuZExheWVycygpLCBDb2xvcjo6d2hp
dGUpOworICAgIGJvb2wgaGF2ZUJhY2tncm91bmRDb2xvciA9IGlzQ29udHJvbFN0eWxlZChvYmpl
Y3Quc3R5bGUoKSwgb2JqZWN0LnN0eWxlKCkuYm9yZGVyKCksICpvYmplY3Quc3R5bGUoKS5iYWNr
Z3JvdW5kTGF5ZXJzKCksIE9wdGlvbmFsUkdCQTo6d2hpdGUpOwogICAgIENvbnRyb2xTdGF0ZXMg
c3RhdGVzKGV4dHJhY3RDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIob2JqZWN0KSk7CiAgICAgYXBw
bHlFZGplU3RhdGVGcm9tRm9ybShlbnRyeS0+ZWRqZSgpLCAmc3RhdGVzLCBoYXZlQmFja2dyb3Vu
ZENvbG9yKTsKIApAQCAtNDE5LDcgKzQxOSw3IEBAIHN0YXRpYyB2b2lkIGFwcGx5Q29sb3JDYWxs
YmFjayh2b2lkKiBkYXRhLCBFdmFzX09iamVjdCosIGNvbnN0IGNoYXIqIC8qIHNpZ25hbCAqCiAg
ICAgdGhhdC0+cGxhdGZvcm1Db2xvcnNEaWRDaGFuZ2UoKTsgLy8gVHJpZ2dlcnMgcmVsYXlvdXQu
CiB9CiAKLXN0YXRpYyBib29sIGZpbGxDb2xvcnNGcm9tRWRqZUNsYXNzKEV2YXNfT2JqZWN0KiBv
LCBjb25zdCBjaGFyKiBjb2xvckNsYXNzLCBDb2xvciogY29sb3IxLCBDb2xvciogY29sb3IyID0g
MCwgQ29sb3IqIGNvbG9yMyA9IDApCitzdGF0aWMgYm9vbCBmaWxsQ29sb3JzRnJvbUVkamVDbGFz
cyhFdmFzX09iamVjdCogbywgY29uc3QgY2hhciogY29sb3JDbGFzcywgT3B0aW9uYWxSR0JBKiBj
b2xvcjEsIE9wdGlvbmFsUkdCQSogY29sb3IyID0gMCwgT3B0aW9uYWxSR0JBKiBjb2xvcjMgPSAw
KQogewogICAgIGludCByMSwgZzEsIGIxLCBhMTsKICAgICBpbnQgcjIsIGcyLCBiMiwgYTI7CkBA
IC02MTAsMTEgKzYxMCwxMSBAQCBSZW5kZXJUaGVtZUVmbDo6UmVuZGVyVGhlbWVFZmwoUGFnZSog
cGFnZSkKICAgICA6IFJlbmRlclRoZW1lKCkKICAgICAsIG1fcGFnZShwYWdlKQogICAgICwgbV9h
Y3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoMCwgMCwgMjU1KQotICAgICwgbV9hY3RpdmVT
ZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoQ29sb3I6OndoaXRlKQorICAgICwgbV9hY3RpdmVTZWxl
Y3Rpb25Gb3JlZ3JvdW5kQ29sb3IoT3B0aW9uYWxSR0JBOjp3aGl0ZSkKICAgICAsIG1faW5hY3Rp
dmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoMCwgMCwgMTI4KQogICAgICwgbV9pbmFjdGl2ZVNl
bGVjdGlvbkZvcmVncm91bmRDb2xvcigyMDAsIDIwMCwgMjAwKQogICAgICwgbV9mb2N1c1JpbmdD
b2xvcigzMiwgMzIsIDIyNCwgMjI0KQotICAgICwgbV9zbGlkZXJUaHVtYkNvbG9yKENvbG9yOjpk
YXJrR3JheSkKKyAgICAsIG1fc2xpZGVyVGh1bWJDb2xvcihPcHRpb25hbFJHQkE6OmRhcmtHcmF5
KQogICAgICwgbV9zdXBwb3J0c1NlbGVjdGlvbkZvcmVncm91bmRDb2xvcihmYWxzZSkKIHsKIH0K
QEAgLTY2MCwzMSArNjYwLDMxIEBAIGludCBSZW5kZXJUaGVtZUVmbDo6YmFzZWxpbmVQb3NpdGlv
bihjb25zdCBSZW5kZXJCb3gmIGJveCkgY29uc3QKICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OmJh
c2VsaW5lUG9zaXRpb24oYm94KTsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVFZmw6OnBsYXRmb3Jt
QWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5k
ZXJUaGVtZUVmbDo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25z
dAogewogICAgIGxvYWRUaGVtZUlmTmVlZGVkKCk7CiAgICAgcmV0dXJuIG1fYWN0aXZlU2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yOwogfQogCi1Db2xvciBSZW5kZXJUaGVtZUVmbDo6cGxhdGZvcm1J
bmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVu
ZGVyVGhlbWVFZmw6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBj
b25zdAogewogICAgIGxvYWRUaGVtZUlmTmVlZGVkKCk7CiAgICAgcmV0dXJuIG1faW5hY3RpdmVT
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3I7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lRWZsOjpwbGF0
Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEg
UmVuZGVyVGhlbWVFZmw6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkg
Y29uc3QKIHsKICAgICBsb2FkVGhlbWVJZk5lZWRlZCgpOwogICAgIHJldHVybiBtX2FjdGl2ZVNl
bGVjdGlvbkZvcmVncm91bmRDb2xvcjsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVFZmw6OnBsYXRm
b3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JB
IFJlbmRlclRoZW1lRWZsOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9y
KCkgY29uc3QKIHsKICAgICBsb2FkVGhlbWVJZk5lZWRlZCgpOwogICAgIHJldHVybiBtX2luYWN0
aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwogfQogCi1Db2xvciBSZW5kZXJUaGVtZUVmbDo6
cGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWVF
Zmw6OnBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdAogewogICAgIGxvYWRUaGVtZUlmTmVl
ZGVkKCk7CiAgICAgcmV0dXJuIG1fZm9jdXNSaW5nQ29sb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5oCmluZGV4IGM5MzdlNzc1MjM1YmY0NmQxNWI0YTQ4
Y2IyYWM2MTYyM2UyNzU1OWMuLjc2NmMwNGI3Yzc5ZGI4Njc4MWViYmRkMTZkMGM4MmQyYTBlNDgw
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVm
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5oCkBA
IC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNIb3Zlcihj
b25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAg
IC8vIEEgbWV0aG9kIFJldHVybmluZyB3aGV0aGVyIHRoZSBjb250cm9sIGlzIHN0eWxlZCBieSBj
c3Mgb3Igbm90IGUuZyBzcGVjaWZ5aW5nIGJhY2tncm91bmQtY29sb3IuCi0gICAgdmlydHVhbCBi
b29sIGlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEJvcmRlckRhdGEm
LCBjb25zdCBGaWxsTGF5ZXImLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb250cm9sU3R5bGVkKGNvbnN0IFJlbmRlclN0
eWxlJiwgY29uc3QgQm9yZGVyRGF0YSYsIGNvbnN0IEZpbGxMYXllciYsIGNvbnN0IE9wdGlvbmFs
UkdCQSYgYmFja2dyb3VuZENvbG9yKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIEEgbWV0aG9k
IGFza2luZyBpZiB0aGUgdGhlbWUgaXMgYWJsZSB0byBkcmF3IHRoZSBmb2N1cyByaW5nLgogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzUmluZyhjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtOTIsMTEgKzkyLDExIEBAIHB1YmxpYzoKICAgICAvLyBjb250cm9scyB0
aGF0IG5lZWQgdG8gZG8gdGhpcy4KICAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKGNv
bnN0IFJlbmRlckJveCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBDb2xvciBwbGF0
Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVTZWxlY3Rp
b25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIENvbG9yIHBs
YXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHBs
YXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91
bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHBsYXRm
b3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICAvLyBTZXQgcGxhdGZvcm0gY29sb3JzOyByZW1lbWJlciB0byBjYWxsIHBs
YXRmb3JtQ29sb3JEaWRDaGFuZ2UgYWZ0ZXIuCiAgICAgdm9pZCBzZXRDb2xvckZyb21UaGVtZUNs
YXNzKGNvbnN0IGNoYXIqIGNvbG9yQ2xhc3MpOwpAQCAtMjA0LDEyICsyMDQsMTIgQEAgcHJpdmF0
ZToKICAgICBib29sIHBhaW50VGhlbWVQYXJ0KGNvbnN0IFJlbmRlck9iamVjdCYsIEZvcm1UeXBl
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICBQYWdlKiBtX3BhZ2U7
Ci0gICAgQ29sb3IgbV9hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3I7Ci0gICAgQ29sb3Ig
bV9hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7Ci0gICAgQ29sb3IgbV9pbmFjdGl2ZVNl
bGVjdGlvbkJhY2tncm91bmRDb2xvcjsKLSAgICBDb2xvciBtX2luYWN0aXZlU2VsZWN0aW9uRm9y
ZWdyb3VuZENvbG9yOwotICAgIENvbG9yIG1fZm9jdXNSaW5nQ29sb3I7Ci0gICAgQ29sb3IgbV9z
bGlkZXJUaHVtYkNvbG9yOworICAgIE9wdGlvbmFsUkdCQSBtX2FjdGl2ZVNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgbV9hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5k
Q29sb3I7CisgICAgT3B0aW9uYWxSR0JBIG1faW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3I7CisgICAgT3B0aW9uYWxSR0JBIG1faW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7
CisgICAgT3B0aW9uYWxSR0JBIG1fZm9jdXNSaW5nQ29sb3I7CisgICAgT3B0aW9uYWxSR0JBIG1f
c2xpZGVyVGh1bWJDb2xvcjsKIAogICAgIFN0cmluZyBtX3RoZW1lUGF0aDsKICAgICAvLyBPcmRl
ciBzbyB0aGF0IHRoZSBjYW52YXMgZ2V0cyBkZXN0cm95ZWQgYXQgbGFzdC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBkODg5NGZi
ZDYxNzBiMjI1Njk5OWU3NThjMjU1NDQzOGU1ZGQzNzE3Li4yZDRkOTVkMTRmM2JmOGFmYjQxMGU2
NTdlYTU1ZTU5Y2ZjYzU1ZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC03MDEsNyArNzAxLDcgQEAgYm9vbCBCaXRtYXBJbWFn
ZTo6bWF5RmlsbFdpdGhTb2xpZENvbG9yKCkKICAgICByZXR1cm4gbV9pc1NvbGlkQ29sb3IgJiYg
IW1fY3VycmVudEZyYW1lOwogfQogCi1Db2xvciBCaXRtYXBJbWFnZTo6c29saWRDb2xvcigpIGNv
bnN0CitPcHRpb25hbFJHQkEgQml0bWFwSW1hZ2U6OnNvbGlkQ29sb3IoKSBjb25zdAogewogICAg
IHJldHVybiBtX3NvbGlkQ29sb3I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuaAppbmRleCAyYzcxY2ZjYjBlYWY1YWViMzc3ZGI1YWVmMDU3M2Y0
YmUzYzA2YmE0Li4zZDk2YzI4MjBiZGZmYWU0ZjI5ZmY4MTFjODZlOGI0ZWNkNWJmOGI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTI4
MCw3ICsyODAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjaGVja0ZvclNvbGlkQ29sb3IoKTsK
IAogICAgIHZpcnR1YWwgYm9vbCBtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIENvbG9yIHNvbGlkQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IE9wdGlvbmFsUkdCQSBzb2xpZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICNpZiAhQVNTRVJU
X0RJU0FCTEVECiAgICAgdmlydHVhbCBib29sIG5vdFNvbGlkQ29sb3IoKSBvdmVycmlkZTsKQEAg
LTMxNiw3ICszMTYsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgUmV0YWluUHRyPENGRGF0YVJl
Zj4gbV90aWZmUmVwOyAvLyBDYWNoZWQgVElGRiByZXAgZm9yIGZyYW1lIDAuIE9ubHkgYnVpbHQg
bGF6aWx5IGlmIHNvbWVvbmUgcXVlcmllcyBmb3Igb25lLgogI2VuZGlmCiAKLSAgICBDb2xvciBt
X3NvbGlkQ29sb3I7ICAvLyBJZiB3ZSdyZSBhIDF4MSBzb2xpZCBjb2xvciwgdGhpcyBpcyB0aGUg
Y29sb3IgdG8gdXNlIHRvIGZpbGwuCisgICAgT3B0aW9uYWxSR0JBIG1fc29saWRDb2xvcjsgIC8v
IElmIHdlJ3JlIGEgMXgxIHNvbGlkIGNvbG9yLCB0aGlzIGlzIHRoZSBjb2xvciB0byB1c2UgdG8g
ZmlsbC4KIAogICAgIHVuc2lnbmVkIG1fZGVjb2RlZFNpemU7IC8vIFRoZSBjdXJyZW50IHNpemUg
b2YgYWxsIGRlY29kZWQgZnJhbWVzLgogICAgIG11dGFibGUgdW5zaWduZWQgbV9kZWNvZGVkUHJv
cGVydGllc1NpemU7IC8vIFRoZSBzaXplIG9mIGRhdGEgZGVjb2RlZCBieSB0aGUgc291cmNlIHRv
IGRldGVybWluZSBpbWFnZSBwcm9wZXJ0aWVzIChlLmcuIHNpemUsIGZyYW1lIGNvdW50LCBldGMp
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCmluZGV4IDQyMzJh
MDc5MTMyNGJkODI1ZWY2MDlmY2VlODQwZWM4NDBjZjRjNTYuLjJmZjE0ODQwZjc5YzM3OTMxNjhj
ZDFhODEwODM4ZWZkODRiMjQ0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvci5jcHAKQEAgLTM3LDEyICszNywxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAj
aWYgIUNPTVBJTEVSKE1TVkMpCi1jb25zdCBSR0JBMzIgQ29sb3I6OmJsYWNrOwotY29uc3QgUkdC
QTMyIENvbG9yOjp3aGl0ZTsKLWNvbnN0IFJHQkEzMiBDb2xvcjo6ZGFya0dyYXk7Ci1jb25zdCBS
R0JBMzIgQ29sb3I6OmdyYXk7Ci1jb25zdCBSR0JBMzIgQ29sb3I6OmxpZ2h0R3JheTsKLWNvbnN0
IFJHQkEzMiBDb2xvcjo6dHJhbnNwYXJlbnQ7Citjb25zdCBSR0JBMzIgT3B0aW9uYWxSR0JBOjpi
bGFjazsKK2NvbnN0IFJHQkEzMiBPcHRpb25hbFJHQkE6OndoaXRlOworY29uc3QgUkdCQTMyIE9w
dGlvbmFsUkdCQTo6ZGFya0dyYXk7Citjb25zdCBSR0JBMzIgT3B0aW9uYWxSR0JBOjpncmF5Owor
Y29uc3QgUkdCQTMyIE9wdGlvbmFsUkdCQTo6bGlnaHRHcmF5OworY29uc3QgUkdCQTMyIE9wdGlv
bmFsUkdCQTo6dHJhbnNwYXJlbnQ7CiAjZW5kaWYKIAogc3RhdGljIGNvbnN0IFJHQkEzMiBsaWdo
dGVuZWRCbGFjayA9IDB4RkY1NDU0NTQ7CkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBkb3VibGUg
Y2FsY0h1ZShkb3VibGUgdGVtcDEsIGRvdWJsZSB0ZW1wMiwgZG91YmxlIGh1ZVZhbCkKICAgICBy
ZXR1cm4gdGVtcDE7CiB9CiAKLS8vIEV4cGxhbmF0aW9uIG9mIHRoaXMgYWxnb3JpdGhtIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgQ1NTMyBDb2xvciBNb2R1bGUKKy8vIEV4cGxhbmF0aW9uIG9mIHRoaXMg
YWxnb3JpdGhtIGNhbiBiZSBmb3VuZCBpbiB0aGUgQ1NTMyBPcHRpb25hbFJHQkEgTW9kdWxlCiAv
LyBzcGVjaWZpY2F0aW9uIGF0IGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtY29sb3IvI2hzbC1j
b2xvciB3aXRoIGZ1cnRoZXIKIC8vIGV4cGxhbmF0aW9uIGF2YWlsYWJsZSBhdCBodHRwOi8vZW4u
d2lraXBlZGlhLm9yZy93aWtpL0hTTF9jb2xvcl9zcGFjZSAKIApAQCAtMTQ4LDE3ICsxNDgsMTcg
QEAgc3RhdGljIGlubGluZSBib29sIHBhcnNlSGV4Q29sb3JJbnRlcm5hbChjb25zdCBDaGFyYWN0
ZXJUeXBlKiBuYW1lLCB1bnNpZ25lZCBsZW4KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBD
b2xvcjo6cGFyc2VIZXhDb2xvcihjb25zdCBMQ2hhciogbmFtZSwgdW5zaWduZWQgbGVuZ3RoLCBS
R0JBMzImIHJnYikKK2Jvb2wgT3B0aW9uYWxSR0JBOjpwYXJzZUhleENvbG9yKGNvbnN0IExDaGFy
KiBuYW1lLCB1bnNpZ25lZCBsZW5ndGgsIFJHQkEzMiYgcmdiKQogewogICAgIHJldHVybiBwYXJz
ZUhleENvbG9ySW50ZXJuYWwobmFtZSwgbGVuZ3RoLCByZ2IpOwogfQogCi1ib29sIENvbG9yOjpw
YXJzZUhleENvbG9yKGNvbnN0IFVDaGFyKiBuYW1lLCB1bnNpZ25lZCBsZW5ndGgsIFJHQkEzMiYg
cmdiKQorYm9vbCBPcHRpb25hbFJHQkE6OnBhcnNlSGV4Q29sb3IoY29uc3QgVUNoYXIqIG5hbWUs
IHVuc2lnbmVkIGxlbmd0aCwgUkdCQTMyJiByZ2IpCiB7CiAgICAgcmV0dXJuIHBhcnNlSGV4Q29s
b3JJbnRlcm5hbChuYW1lLCBsZW5ndGgsIHJnYik7CiB9CiAKLWJvb2wgQ29sb3I6OnBhcnNlSGV4
Q29sb3IoY29uc3QgU3RyaW5nJiBuYW1lLCBSR0JBMzImIHJnYikKK2Jvb2wgT3B0aW9uYWxSR0JB
OjpwYXJzZUhleENvbG9yKGNvbnN0IFN0cmluZyYgbmFtZSwgUkdCQTMyJiByZ2IpCiB7CiAgICAg
dW5zaWduZWQgbGVuZ3RoID0gbmFtZS5sZW5ndGgoKTsKICAgICAKQEAgLTE2OSw3ICsxNjksNyBA
QCBib29sIENvbG9yOjpwYXJzZUhleENvbG9yKGNvbnN0IFN0cmluZyYgbmFtZSwgUkdCQTMyJiBy
Z2IpCiAgICAgcmV0dXJuIHBhcnNlSGV4Q29sb3IobmFtZS5jaGFyYWN0ZXJzMTYoKSwgbmFtZS5s
ZW5ndGgoKSwgcmdiKTsKIH0KIAotaW50IGRpZmZlcmVuY2VTcXVhcmVkKGNvbnN0IENvbG9yJiBj
MSwgY29uc3QgQ29sb3ImIGMyKQoraW50IGRpZmZlcmVuY2VTcXVhcmVkKGNvbnN0IE9wdGlvbmFs
UkdCQSYgYzEsIGNvbnN0IE9wdGlvbmFsUkdCQSYgYzIpCiB7CiAgICAgaW50IGRSID0gYzEucmVk
KCkgLSBjMi5yZWQoKTsKICAgICBpbnQgZEcgPSBjMS5ncmVlbigpIC0gYzIuZ3JlZW4oKTsKQEAg
LTE3Nyw3ICsxNzcsNyBAQCBpbnQgZGlmZmVyZW5jZVNxdWFyZWQoY29uc3QgQ29sb3ImIGMxLCBj
b25zdCBDb2xvciYgYzIpCiAgICAgcmV0dXJuIGRSICogZFIgKyBkRyAqIGRHICsgZEIgKiBkQjsK
IH0KIAotQ29sb3I6OkNvbG9yKGNvbnN0IFN0cmluZyYgbmFtZSkKK09wdGlvbmFsUkdCQTo6T3B0
aW9uYWxSR0JBKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAobmFtZVswXSA9PSAnIycp
IHsKICAgICAgICAgaWYgKG5hbWUuaXM4Qml0KCkpCkBAIC0xODgsNyArMTg4LDcgQEAgQ29sb3I6
OkNvbG9yKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgc2V0TmFtZWRDb2xvcihuYW1lKTsK
IH0KIAotQ29sb3I6OkNvbG9yKGNvbnN0IGNoYXIqIG5hbWUpCitPcHRpb25hbFJHQkE6Ok9wdGlv
bmFsUkdCQShjb25zdCBjaGFyKiBuYW1lKQogewogICAgIGlmIChuYW1lWzBdID09ICcjJykKICAg
ICAgICAgbV92YWxpZCA9IHBhcnNlSGV4Q29sb3IoJm5hbWVbMV0sIG1fY29sb3IpOwpAQCAtMTk5
LDcgKzE5OSw3IEBAIENvbG9yOjpDb2xvcihjb25zdCBjaGFyKiBuYW1lKQogICAgIH0KIH0KIAot
U3RyaW5nIENvbG9yOjpzZXJpYWxpemVkKCkgY29uc3QKK1N0cmluZyBPcHRpb25hbFJHQkE6OnNl
cmlhbGl6ZWQoKSBjb25zdAogewogICAgIGlmICghaGFzQWxwaGEoKSkgewogICAgICAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CkBAIC0yMzYsNyArMjM2LDcgQEAgU3RyaW5nIENvbG9yOjpzZXJp
YWxpemVkKCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChyZXN1bHQpOwogfQogCi1T
dHJpbmcgQ29sb3I6Om5hbWVGb3JSZW5kZXJUcmVlQXNUZXh0KCkgY29uc3QKK1N0cmluZyBPcHRp
b25hbFJHQkE6Om5hbWVGb3JSZW5kZXJUcmVlQXNUZXh0KCkgY29uc3QKIHsKICAgICBpZiAoYWxw
aGEoKSA8IDB4RkYpCiAgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiIyUwMlglMDJYJTAy
WCUwMlgiLCByZWQoKSwgZ3JlZW4oKSwgYmx1ZSgpLCBhbHBoYSgpKTsKQEAgLTI1OSwxNCArMjU5
LDE0IEBAIHN0YXRpYyBpbmxpbmUgY29uc3QgTmFtZWRDb2xvciogZmluZE5hbWVkQ29sb3IoY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBmaW5kQ29sb3IoYnVmZmVyLCBsZW5ndGgpOwog
fQogCi12b2lkIENvbG9yOjpzZXROYW1lZENvbG9yKGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQg
T3B0aW9uYWxSR0JBOjpzZXROYW1lZENvbG9yKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBj
b25zdCBOYW1lZENvbG9yKiBmb3VuZENvbG9yID0gZmluZE5hbWVkQ29sb3IobmFtZSk7CiAgICAg
bV9jb2xvciA9IGZvdW5kQ29sb3IgPyBmb3VuZENvbG9yLT5BUkdCVmFsdWUgOiAwOwogICAgIG1f
dmFsaWQgPSBmb3VuZENvbG9yOwogfQogCi1Db2xvciBDb2xvcjo6bGlnaHQoKSBjb25zdAorT3B0
aW9uYWxSR0JBIE9wdGlvbmFsUkdCQTo6bGlnaHQoKSBjb25zdAogewogICAgIC8vIEhhcmRjb2Rl
IHRoaXMgY29tbW9uIGNhc2UgZm9yIHNwZWVkLgogICAgIGlmIChtX2NvbG9yID09IGJsYWNrKQpA
QCAtMjgxLDE3ICsyODEsMTcgQEAgQ29sb3IgQ29sb3I6OmxpZ2h0KCkgY29uc3QKIAogICAgIGlm
ICh2ID09IDAuMGYpCiAgICAgICAgIC8vIExpZ2h0ZW5lZCBibGFjayB3aXRoIGFscGhhLgotICAg
ICAgICByZXR1cm4gQ29sb3IoMHg1NCwgMHg1NCwgMHg1NCwgYWxwaGEoKSk7CisgICAgICAgIHJl
dHVybiBPcHRpb25hbFJHQkEoMHg1NCwgMHg1NCwgMHg1NCwgYWxwaGEoKSk7CiAKICAgICBmbG9h
dCBtdWx0aXBsaWVyID0gc3RkOjptaW4oMS4wZiwgdiArIDAuMzNmKSAvIHY7CiAKLSAgICByZXR1
cm4gQ29sb3Ioc3RhdGljX2Nhc3Q8aW50PihtdWx0aXBsaWVyICogciAqIHNjYWxlRmFjdG9yKSwK
KyAgICByZXR1cm4gT3B0aW9uYWxSR0JBKHN0YXRpY19jYXN0PGludD4obXVsdGlwbGllciAqIHIg
KiBzY2FsZUZhY3RvciksCiAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4obXVsdGlw
bGllciAqIGcgKiBzY2FsZUZhY3RvciksCiAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGlu
dD4obXVsdGlwbGllciAqIGIgKiBzY2FsZUZhY3RvciksCiAgICAgICAgICAgICAgICAgIGFscGhh
KCkpOwogfQogCi1Db2xvciBDb2xvcjo6ZGFyaygpIGNvbnN0CitPcHRpb25hbFJHQkEgT3B0aW9u
YWxSR0JBOjpkYXJrKCkgY29uc3QKIHsKICAgICAvLyBIYXJkY29kZSB0aGlzIGNvbW1vbiBjYXNl
IGZvciBzcGVlZC4KICAgICBpZiAobV9jb2xvciA9PSB3aGl0ZSkKQEAgLTMwNSwxMyArMzA1LDEz
IEBAIENvbG9yIENvbG9yOjpkYXJrKCkgY29uc3QKICAgICBmbG9hdCB2ID0gc3RkOjptYXgociwg
c3RkOjptYXgoZywgYikpOwogICAgIGZsb2F0IG11bHRpcGxpZXIgPSBzdGQ6Om1heCgwLjBmLCAo
diAtIDAuMzNmKSAvIHYpOwogCi0gICAgcmV0dXJuIENvbG9yKHN0YXRpY19jYXN0PGludD4obXVs
dGlwbGllciAqIHIgKiBzY2FsZUZhY3RvciksCisgICAgcmV0dXJuIE9wdGlvbmFsUkdCQShzdGF0
aWNfY2FzdDxpbnQ+KG11bHRpcGxpZXIgKiByICogc2NhbGVGYWN0b3IpLAogICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxpbnQ+KG11bHRpcGxpZXIgKiBnICogc2NhbGVGYWN0b3IpLAogICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KG11bHRpcGxpZXIgKiBiICogc2NhbGVGYWN0
b3IpLAogICAgICAgICAgICAgICAgICBhbHBoYSgpKTsKIH0KIAotYm9vbCBDb2xvcjo6aXNEYXJr
KCkgY29uc3QKK2Jvb2wgT3B0aW9uYWxSR0JBOjppc0RhcmsoKSBjb25zdAogewogICAgIGZsb2F0
IHJlZDsKICAgICBmbG9hdCBncmVlbjsKQEAgLTMzNSw3ICszMzUsNyBAQCBjb25zdCBpbnQgY1N0
YXJ0QWxwaGEgPSAxNTM7IC8vIDYwJQogY29uc3QgaW50IGNFbmRBbHBoYSA9IDIwNDsgLy8gODAl
OwogY29uc3QgaW50IGNBbHBoYUluY3JlbWVudCA9IDE3OyAvLyBJbmNyZW1lbnRzIGluIGJldHdl
ZW4uCiAKLUNvbG9yIENvbG9yOjpibGVuZChjb25zdCBDb2xvciYgc291cmNlKSBjb25zdAorT3B0
aW9uYWxSR0JBIE9wdGlvbmFsUkdCQTo6YmxlbmQoY29uc3QgT3B0aW9uYWxSR0JBJiBzb3VyY2Up
IGNvbnN0CiB7CiAgICAgaWYgKCFhbHBoYSgpIHx8ICFzb3VyY2UuaGFzQWxwaGEoKSkKICAgICAg
ICAgcmV0dXJuIHNvdXJjZTsKQEAgLTM0OCwxNiArMzQ4LDE2IEBAIENvbG9yIENvbG9yOjpibGVu
ZChjb25zdCBDb2xvciYgc291cmNlKSBjb25zdAogICAgIGludCByID0gKHJlZCgpICogYWxwaGEo
KSAqICgyNTUgLSBzb3VyY2UuYWxwaGEoKSkgKyAyNTUgKiBzb3VyY2UuYWxwaGEoKSAqIHNvdXJj
ZS5yZWQoKSkgLyBkOwogICAgIGludCBnID0gKGdyZWVuKCkgKiBhbHBoYSgpICogKDI1NSAtIHNv
dXJjZS5hbHBoYSgpKSArIDI1NSAqIHNvdXJjZS5hbHBoYSgpICogc291cmNlLmdyZWVuKCkpIC8g
ZDsKICAgICBpbnQgYiA9IChibHVlKCkgKiBhbHBoYSgpICogKDI1NSAtIHNvdXJjZS5hbHBoYSgp
KSArIDI1NSAqIHNvdXJjZS5hbHBoYSgpICogc291cmNlLmJsdWUoKSkgLyBkOwotICAgIHJldHVy
biBDb2xvcihyLCBnLCBiLCBhKTsKKyAgICByZXR1cm4gT3B0aW9uYWxSR0JBKHIsIGcsIGIsIGEp
OwogfQogCi1Db2xvciBDb2xvcjo6YmxlbmRXaXRoV2hpdGUoKSBjb25zdAorT3B0aW9uYWxSR0JB
IE9wdGlvbmFsUkdCQTo6YmxlbmRXaXRoV2hpdGUoKSBjb25zdAogewogICAgIC8vIElmIHRoZSBj
b2xvciBjb250YWlucyBhbHBoYSBhbHJlYWR5LCB3ZSBsZWF2ZSBpdCBhbG9uZS4KICAgICBpZiAo
aGFzQWxwaGEoKSkKICAgICAgICAgcmV0dXJuICp0aGlzOwogCi0gICAgQ29sb3IgbmV3Q29sb3I7
CisgICAgT3B0aW9uYWxSR0JBIG5ld0NvbG9yOwogICAgIGZvciAoaW50IGFscGhhID0gY1N0YXJ0
QWxwaGE7IGFscGhhIDw9IGNFbmRBbHBoYTsgYWxwaGEgKz0gY0FscGhhSW5jcmVtZW50KSB7CiAg
ICAgICAgIC8vIFdlIGhhdmUgYSBzb2xpZCBjb2xvci4gIENvbnZlcnQgdG8gYW4gZXF1aXZhbGVu
dCBjb2xvciB0aGF0IGxvb2tzIHRoZSBzYW1lIHdoZW4gYmxlbmRlZCB3aXRoIHdoaXRlCiAgICAg
ICAgIC8vIGF0IHRoZSBjdXJyZW50IGFscGhhLiAgVHJ5IHVzaW5nIGxlc3MgdHJhbnNwYXJlbmN5
IGlmIHRoZSBudW1iZXJzIGVuZCB1cCBiZWluZyBuZWdhdGl2ZS4KQEAgLTM2NSw3ICszNjUsNyBA
QCBDb2xvciBDb2xvcjo6YmxlbmRXaXRoV2hpdGUoKSBjb25zdAogICAgICAgICBpbnQgZyA9IGJs
ZW5kQ29tcG9uZW50KGdyZWVuKCksIGFscGhhKTsKICAgICAgICAgaW50IGIgPSBibGVuZENvbXBv
bmVudChibHVlKCksIGFscGhhKTsKICAgICAgICAgCi0gICAgICAgIG5ld0NvbG9yID0gQ29sb3Io
ciwgZywgYiwgYWxwaGEpOworICAgICAgICBuZXdDb2xvciA9IE9wdGlvbmFsUkdCQShyLCBnLCBi
LCBhbHBoYSk7CiAKICAgICAgICAgaWYgKHIgPj0gMCAmJiBnID49IDAgJiYgYiA+PSAwKQogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0zNzMsNyArMzczLDcgQEAgQ29sb3IgQ29sb3I6OmJsZW5kV2l0
aFdoaXRlKCkgY29uc3QKICAgICByZXR1cm4gbmV3Q29sb3I7CiB9CiAKLXZvaWQgQ29sb3I6Omdl
dFJHQkEoZmxvYXQmIHIsIGZsb2F0JiBnLCBmbG9hdCYgYiwgZmxvYXQmIGEpIGNvbnN0Cit2b2lk
IE9wdGlvbmFsUkdCQTo6Z2V0UkdCQShmbG9hdCYgciwgZmxvYXQmIGcsIGZsb2F0JiBiLCBmbG9h
dCYgYSkgY29uc3QKIHsKICAgICByID0gcmVkKCkgLyAyNTUuMGY7CiAgICAgZyA9IGdyZWVuKCkg
LyAyNTUuMGY7CkBAIC0zODEsNyArMzgxLDcgQEAgdm9pZCBDb2xvcjo6Z2V0UkdCQShmbG9hdCYg
ciwgZmxvYXQmIGcsIGZsb2F0JiBiLCBmbG9hdCYgYSkgY29uc3QKICAgICBhID0gYWxwaGEoKSAv
IDI1NS4wZjsKIH0KIAotdm9pZCBDb2xvcjo6Z2V0UkdCQShkb3VibGUmIHIsIGRvdWJsZSYgZywg
ZG91YmxlJiBiLCBkb3VibGUmIGEpIGNvbnN0Cit2b2lkIE9wdGlvbmFsUkdCQTo6Z2V0UkdCQShk
b3VibGUmIHIsIGRvdWJsZSYgZywgZG91YmxlJiBiLCBkb3VibGUmIGEpIGNvbnN0CiB7CiAgICAg
ciA9IHJlZCgpIC8gMjU1LjA7CiAgICAgZyA9IGdyZWVuKCkgLyAyNTUuMDsKQEAgLTM4OSw3ICsz
ODksNyBAQCB2b2lkIENvbG9yOjpnZXRSR0JBKGRvdWJsZSYgciwgZG91YmxlJiBnLCBkb3VibGUm
IGIsIGRvdWJsZSYgYSkgY29uc3QKICAgICBhID0gYWxwaGEoKSAvIDI1NS4wOwogfQogCi12b2lk
IENvbG9yOjpnZXRIU0woZG91YmxlJiBodWUsIGRvdWJsZSYgc2F0dXJhdGlvbiwgZG91YmxlJiBs
aWdodG5lc3MpIGNvbnN0Cit2b2lkIE9wdGlvbmFsUkdCQTo6Z2V0SFNMKGRvdWJsZSYgaHVlLCBk
b3VibGUmIHNhdHVyYXRpb24sIGRvdWJsZSYgbGlnaHRuZXNzKSBjb25zdAogewogICAgIC8vIGh0
dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSFNMX2NvbG9yX3NwYWNlLiBUaGlzIGlzIGEgZGly
ZWN0IGNvcHkgb2YKICAgICAvLyB0aGUgYWxnb3JpdGhtIHRoZXJlaW4sIGFsdGhvdWdoIGl0J3Mg
MzYwXm8gYmFzZWQgYW5kIHdlIGVuZCB1cCB3YW50aW5nCkBAIC00MjQsMjYgKzQyNCwyNiBAQCB2
b2lkIENvbG9yOjpnZXRIU0woZG91YmxlJiBodWUsIGRvdWJsZSYgc2F0dXJhdGlvbiwgZG91Ymxl
JiBsaWdodG5lc3MpIGNvbnN0CiAgICAgICAgIHNhdHVyYXRpb24gPSAoKG1heCAtIG1pbikgLyAo
Mi4wIC0gKG1heCArIG1pbikpKTsKIH0KIAotQ29sb3IgY29sb3JGcm9tUHJlbXVsdGlwbGllZEFS
R0IoUkdCQTMyIHBpeGVsQ29sb3IpCitPcHRpb25hbFJHQkEgY29sb3JGcm9tUHJlbXVsdGlwbGll
ZEFSR0IoUkdCQTMyIHBpeGVsQ29sb3IpCiB7CiAgICAgaW50IGFscGhhID0gYWxwaGFDaGFubmVs
KHBpeGVsQ29sb3IpOwogICAgIGlmIChhbHBoYSAmJiBhbHBoYSA8IDI1NSkgewotICAgICAgICBy
ZXR1cm4gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsUkdC
QTo6Y3JlYXRlVW5jaGVja2VkKAogICAgICAgICAgICAgcmVkQ2hhbm5lbChwaXhlbENvbG9yKSAq
IDI1NSAvIGFscGhhLAogICAgICAgICAgICAgZ3JlZW5DaGFubmVsKHBpeGVsQ29sb3IpICogMjU1
IC8gYWxwaGEsCiAgICAgICAgICAgICBibHVlQ2hhbm5lbChwaXhlbENvbG9yKSAqIDI1NSAvIGFs
cGhhLAogICAgICAgICAgICAgYWxwaGEpOwogICAgIH0gZWxzZQotICAgICAgICByZXR1cm4gQ29s
b3IocGl4ZWxDb2xvcik7CisgICAgICAgIHJldHVybiBPcHRpb25hbFJHQkEocGl4ZWxDb2xvcik7
CiB9CiAKLVJHQkEzMiBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcihjb25zdCBDb2xvciYgY29s
b3IpCitSR0JBMzIgcHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JB
JiBjb2xvcikKIHsKICAgICB1bnNpZ25lZCBwaXhlbENvbG9yOwogCiAgICAgdW5zaWduZWQgYWxw
aGEgPSBjb2xvci5hbHBoYSgpOwogICAgIGlmIChhbHBoYSA8IDI1NSkgewotICAgICAgICBwaXhl
bENvbG9yID0gQ29sb3I6OmNyZWF0ZVVuY2hlY2tlZCgKKyAgICAgICAgcGl4ZWxDb2xvciA9IE9w
dGlvbmFsUkdCQTo6Y3JlYXRlVW5jaGVja2VkKAogICAgICAgICAgICAgZmFzdERpdmlkZUJ5MjU1
KGNvbG9yLnJlZCgpICogYWxwaGEgKyAyNTQpLAogICAgICAgICAgICAgZmFzdERpdmlkZUJ5MjU1
KGNvbG9yLmdyZWVuKCkgKiBhbHBoYSArIDI1NCksCiAgICAgICAgICAgICBmYXN0RGl2aWRlQnky
NTUoY29sb3IuYmx1ZSgpICogYWxwaGEgKyAyNTQpLApAQCAtNDU0LDI3ICs0NTQsMjcgQEAgUkdC
QTMyIHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBy
ZXR1cm4gcGl4ZWxDb2xvcjsKIH0KIAotQ29sb3IgYmxlbmQoY29uc3QgQ29sb3ImIGZyb20sIGNv
bnN0IENvbG9yJiB0bywgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kUHJlbXVsdGlwbGllZCkK
K09wdGlvbmFsUkdCQSBibGVuZChjb25zdCBPcHRpb25hbFJHQkEmIGZyb20sIGNvbnN0IE9wdGlv
bmFsUkdCQSYgdG8sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFByZW11bHRpcGxpZWQpCiB7
CiAgICAgLy8gV2UgbmVlZCB0byBwcmVzZXJ2ZSB0aGUgc3RhdGUgb2YgdGhlIHZhbGlkIGZsYWcg
YXQgdGhlIGVuZCBvZiB0aGUgYW5pbWF0aW9uCiAgICAgaWYgKHByb2dyZXNzID09IDEgJiYgIXRv
LmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7CisgICAgICAgIHJldHVybiBPcHRp
b25hbFJHQkEoKTsKIAogICAgIGlmIChibGVuZFByZW11bHRpcGxpZWQpIHsKLSAgICAgICAgLy8g
Q29udHJhcnkgdG8gdGhlIG5hbWUsIFJHQkEzMiBhY3R1YWxseSBzdG9yZXMgQVJHQiwgc28gd2Ug
Y2FuIGluaXRpYWxpemUgQ29sb3IgZGlyZWN0bHkgZnJvbSBwcmVtdWx0aXBsaWVkQVJHQkZyb21D
b2xvcigpLgorICAgICAgICAvLyBDb250cmFyeSB0byB0aGUgbmFtZSwgUkdCQTMyIGFjdHVhbGx5
IHN0b3JlcyBBUkdCLCBzbyB3ZSBjYW4gaW5pdGlhbGl6ZSBPcHRpb25hbFJHQkEgZGlyZWN0bHkg
ZnJvbSBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcigpLgogICAgICAgICAvLyBBbHNvLCBwcmVt
dWx0aXBsaWVkQVJHQkZyb21Db2xvcigpIGJhaWxzIG9uIHplcm8gYWxwaGEsIHNvIHNwZWNpYWwt
Y2FzZSB0aGF0LgotICAgICAgICBDb2xvciBwcmVtdWx0RnJvbSA9IGZyb20uYWxwaGEoKSA/IHBy
ZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yKGZyb20pIDogMDsKLSAgICAgICAgQ29sb3IgcHJlbXVs
dFRvID0gdG8uYWxwaGEoKSA/IHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yKHRvKSA6IDA7Cisg
ICAgICAgIE9wdGlvbmFsUkdCQSBwcmVtdWx0RnJvbSA9IGZyb20uYWxwaGEoKSA/IHByZW11bHRp
cGxpZWRBUkdCRnJvbUNvbG9yKGZyb20pIDogMDsKKyAgICAgICAgT3B0aW9uYWxSR0JBIHByZW11
bHRUbyA9IHRvLmFscGhhKCkgPyBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcih0bykgOiAwOwog
Ci0gICAgICAgIENvbG9yIHByZW11bHRCbGVuZGVkKGJsZW5kKHByZW11bHRGcm9tLnJlZCgpLCBw
cmVtdWx0VG8ucmVkKCksIHByb2dyZXNzKSwKKyAgICAgICAgT3B0aW9uYWxSR0JBIHByZW11bHRC
bGVuZGVkKGJsZW5kKHByZW11bHRGcm9tLnJlZCgpLCBwcmVtdWx0VG8ucmVkKCksIHByb2dyZXNz
KSwKICAgICAgICAgICAgIGJsZW5kKHByZW11bHRGcm9tLmdyZWVuKCksIHByZW11bHRUby5ncmVl
bigpLCBwcm9ncmVzcyksCiAgICAgICAgICAgICBibGVuZChwcmVtdWx0RnJvbS5ibHVlKCksIHBy
ZW11bHRUby5ibHVlKCksIHByb2dyZXNzKSwKICAgICAgICAgICAgIGJsZW5kKHByZW11bHRGcm9t
LmFscGhhKCksIHByZW11bHRUby5hbHBoYSgpLCBwcm9ncmVzcykpOwogCi0gICAgICAgIHJldHVy
biBDb2xvcihjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQihwcmVtdWx0QmxlbmRlZC5yZ2IoKSkp
OworICAgICAgICByZXR1cm4gT3B0aW9uYWxSR0JBKGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdC
KHByZW11bHRCbGVuZGVkLnJnYigpKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIENvbG9yKGJsZW5k
KGZyb20ucmVkKCksIHRvLnJlZCgpLCBwcm9ncmVzcyksCisgICAgcmV0dXJuIE9wdGlvbmFsUkdC
QShibGVuZChmcm9tLnJlZCgpLCB0by5yZWQoKSwgcHJvZ3Jlc3MpLAogICAgICAgICBibGVuZChm
cm9tLmdyZWVuKCksIHRvLmdyZWVuKCksIHByb2dyZXNzKSwKICAgICAgICAgYmxlbmQoZnJvbS5i
bHVlKCksIHRvLmJsdWUoKSwgcHJvZ3Jlc3MpLAogICAgICAgICBibGVuZChmcm9tLmFscGhhKCks
IHRvLmFscGhhKCksIHByb2dyZXNzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuaAppbmRleCA2YTRmMzI2OTQ0ZmM0ZDAwZGFmODIxYTYxNzQ1OWIyZjUyYzEyMDdiLi41
MmExZmEwNDNjMmU5OWY4M2M5NjhlNjE3YWJkNjQyMTYxOTg4ZTYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgdHlwZWRlZiBzdHJ1
Y3QgX0dka1JHQkEgR2RrUkdCQTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb2xv
cjsKK2NsYXNzIE9wdGlvbmFsUkdCQTsKIAogdHlwZWRlZiB1bnNpZ25lZCBSR0JBMzI7ICAgICAg
ICAvLyBSR0JBIHF1YWRydXBsZXQKIApAQCAtNjAsMzYgKzYwLDM2IEBAIFdFQkNPUkVfRVhQT1JU
IFJHQkEzMiBtYWtlUkdCQTMyRnJvbUZsb2F0cyhmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBm
bG9hdCBhKTsKIFJHQkEzMiBtYWtlUkdCQUZyb21IU0xBKGRvdWJsZSBoLCBkb3VibGUgcywgZG91
YmxlIGwsIGRvdWJsZSBhKTsKIFJHQkEzMiBtYWtlUkdCQUZyb21DTVlLQShmbG9hdCBjLCBmbG9h
dCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKTsKIAotaW50IGRpZmZlcmVuY2VTcXVhcmVk
KGNvbnN0IENvbG9yJiwgY29uc3QgQ29sb3ImKTsKK2ludCBkaWZmZXJlbmNlU3F1YXJlZChjb25z
dCBPcHRpb25hbFJHQkEmLCBjb25zdCBPcHRpb25hbFJHQkEmKTsKIAogaW5saW5lIGludCByZWRD
aGFubmVsKFJHQkEzMiBjb2xvcikgeyByZXR1cm4gKGNvbG9yID4+IDE2KSAmIDB4RkY7IH0KIGlu
bGluZSBpbnQgZ3JlZW5DaGFubmVsKFJHQkEzMiBjb2xvcikgeyByZXR1cm4gKGNvbG9yID4+IDgp
ICYgMHhGRjsgfQogaW5saW5lIGludCBibHVlQ2hhbm5lbChSR0JBMzIgY29sb3IpIHsgcmV0dXJu
IGNvbG9yICYgMHhGRjsgfQogaW5saW5lIGludCBhbHBoYUNoYW5uZWwoUkdCQTMyIGNvbG9yKSB7
IHJldHVybiAoY29sb3IgPj4gMjQpICYgMHhGRjsgfQogCi1jbGFzcyBDb2xvciB7CitjbGFzcyBP
cHRpb25hbFJHQkEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IENvbG9yKCkgOiBtX2NvbG9yKDApLCBtX3ZhbGlkKGZhbHNlKSB7IH0KLSAgICBDb2xvcihSR0JB
MzIgY29sb3IsIGJvb2wgdmFsaWQgPSB0cnVlKSA6IG1fY29sb3IoY29sb3IpLCBtX3ZhbGlkKHZh
bGlkKSB7IEFTU0VSVCghbV9jb2xvciB8fCBtX3ZhbGlkKTsgfQotICAgIENvbG9yKGludCByLCBp
bnQgZywgaW50IGIpIDogbV9jb2xvcihtYWtlUkdCKHIsIGcsIGIpKSwgbV92YWxpZCh0cnVlKSB7
IH0KLSAgICBDb2xvcihpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkgOiBtX2NvbG9yKG1ha2VS
R0JBKHIsIGcsIGIsIGEpKSwgbV92YWxpZCh0cnVlKSB7IH0KLSAgICAvLyBDb2xvciBpcyBjdXJy
ZW50bHkgbGltaXRlZCB0byAzMmJpdCBSR0JBLCBwZXJoYXBzIHNvbWUgZGF5IHdlJ2xsIHN1cHBv
cnQgYmV0dGVyIGNvbG9ycwotICAgIENvbG9yKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZs
b2F0IGEpIDogbV9jb2xvcihtYWtlUkdCQTMyRnJvbUZsb2F0cyhyLCBnLCBiLCBhKSksIG1fdmFs
aWQodHJ1ZSkgeyB9CisgICAgT3B0aW9uYWxSR0JBKCkgOiBtX2NvbG9yKDApLCBtX3ZhbGlkKGZh
bHNlKSB7IH0KKyAgICBPcHRpb25hbFJHQkEoUkdCQTMyIGNvbG9yLCBib29sIHZhbGlkID0gdHJ1
ZSkgOiBtX2NvbG9yKGNvbG9yKSwgbV92YWxpZCh2YWxpZCkgeyBBU1NFUlQoIW1fY29sb3IgfHwg
bV92YWxpZCk7IH0KKyAgICBPcHRpb25hbFJHQkEoaW50IHIsIGludCBnLCBpbnQgYikgOiBtX2Nv
bG9yKG1ha2VSR0IociwgZywgYikpLCBtX3ZhbGlkKHRydWUpIHsgfQorICAgIE9wdGlvbmFsUkdC
QShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkgOiBtX2NvbG9yKG1ha2VSR0JBKHIsIGcsIGIs
IGEpKSwgbV92YWxpZCh0cnVlKSB7IH0KKyAgICAvLyBPcHRpb25hbFJHQkEgaXMgY3VycmVudGx5
IGxpbWl0ZWQgdG8gMzJiaXQgUkdCQSwgcGVyaGFwcyBzb21lIGRheSB3ZSdsbCBzdXBwb3J0IGJl
dHRlciBjb2xvcnMKKyAgICBPcHRpb25hbFJHQkEoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwg
ZmxvYXQgYSkgOiBtX2NvbG9yKG1ha2VSR0JBMzJGcm9tRmxvYXRzKHIsIGcsIGIsIGEpKSwgbV92
YWxpZCh0cnVlKSB7IH0KICAgICAvLyBDcmVhdGVzIGEgbmV3IGNvbG9yIGZyb20gdGhlIHNwZWNp
ZmljIENNWUsgYW5kIGFscGhhIHZhbHVlcy4KLSAgICBDb2xvcihmbG9hdCBjLCBmbG9hdCBtLCBm
bG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKSA6IG1fY29sb3IobWFrZVJHQkFGcm9tQ01ZS0EoYywg
bSwgeSwgaywgYSkpLCBtX3ZhbGlkKHRydWUpIHsgfQotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IENvbG9yKGNvbnN0IFN0cmluZyYpOwotICAgIGV4cGxpY2l0IENvbG9yKGNvbnN0IGNoYXIq
KTsKKyAgICBPcHRpb25hbFJHQkEoZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywg
ZmxvYXQgYSkgOiBtX2NvbG9yKG1ha2VSR0JBRnJvbUNNWUtBKGMsIG0sIHksIGssIGEpKSwgbV92
YWxpZCh0cnVlKSB7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBPcHRpb25hbFJHQkEo
Y29uc3QgU3RyaW5nJik7CisgICAgZXhwbGljaXQgT3B0aW9uYWxSR0JBKGNvbnN0IGNoYXIqKTsK
IAotICAgIHN0YXRpYyBDb2xvciBjcmVhdGVVbmNoZWNrZWQoaW50IHIsIGludCBnLCBpbnQgYikK
KyAgICBzdGF0aWMgT3B0aW9uYWxSR0JBIGNyZWF0ZVVuY2hlY2tlZChpbnQgciwgaW50IGcsIGlu
dCBiKQogICAgIHsKICAgICAgICAgUkdCQTMyIGNvbG9yID0gMHhGRjAwMDAwMCB8IHIgPDwgMTYg
fCBnIDw8IDggfCBiOwotICAgICAgICByZXR1cm4gQ29sb3IoY29sb3IpOworICAgICAgICByZXR1
cm4gT3B0aW9uYWxSR0JBKGNvbG9yKTsKICAgICB9Ci0gICAgc3RhdGljIENvbG9yIGNyZWF0ZVVu
Y2hlY2tlZChpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKKyAgICBzdGF0aWMgT3B0aW9uYWxS
R0JBIGNyZWF0ZVVuY2hlY2tlZChpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKICAgICB7CiAg
ICAgICAgIFJHQkEzMiBjb2xvciA9IGEgPDwgMjQgfCByIDw8IDE2IHwgZyA8PCA4IHwgYjsKLSAg
ICAgICAgcmV0dXJuIENvbG9yKGNvbG9yKTsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsUkdCQShj
b2xvcik7CiAgICAgfQogCiAgICAgLy8gUmV0dXJucyB0aGUgY29sb3Igc2VyaWFsaXplZCBhY2Nv
cmRpbmcgdG8gSFRNTDUKQEAgLTExOCwyNiArMTE4LDI2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldFJHQkEoZG91YmxlJiByLCBkb3VibGUmIGcsIGRvdWJsZSYgYiwgZG91
YmxlJiBhKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEhTTChkb3VibGUmIGgs
IGRvdWJsZSYgcywgZG91YmxlJiBsKSBjb25zdDsKIAotICAgIENvbG9yIGxpZ2h0KCkgY29uc3Q7
Ci0gICAgQ29sb3IgZGFyaygpIGNvbnN0OworICAgIE9wdGlvbmFsUkdCQSBsaWdodCgpIGNvbnN0
OworICAgIE9wdGlvbmFsUkdCQSBkYXJrKCkgY29uc3Q7CiAKICAgICBib29sIGlzRGFyaygpIGNv
bnN0OwogCiAgICAgLy8gVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBQb3J0ZXItRHVmZidz
ICJzb3VyY2Utb3ZlciIgZXF1YXRpb24KLSAgICBDb2xvciBibGVuZChjb25zdCBDb2xvciYpIGNv
bnN0OwotICAgIENvbG9yIGJsZW5kV2l0aFdoaXRlKCkgY29uc3Q7CisgICAgT3B0aW9uYWxSR0JB
IGJsZW5kKGNvbnN0IE9wdGlvbmFsUkdCQSYpIGNvbnN0OworICAgIE9wdGlvbmFsUkdCQSBibGVu
ZFdpdGhXaGl0ZSgpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIENvbG9yKGNvbnN0
IEdka0NvbG9yJik7CisgICAgT3B0aW9uYWxSR0JBKGNvbnN0IEdka0NvbG9yJik7CiAgICAgLy8g
V2UgY2FuJ3Qgc2Vuc2libHkgZ28gYmFjayB0byBHZGtDb2xvciB3aXRob3V0IGxvc2luZyB0aGUg
YWxwaGEgdmFsdWUKICNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKLSAgICBDb2xvcihjb25zdCBH
ZGtSR0JBJik7CisgICAgT3B0aW9uYWxSR0JBKGNvbnN0IEdka1JHQkEmKTsKICAgICBvcGVyYXRv
ciBHZGtSR0JBKCkgY29uc3Q7CiAjZW5kaWYKICNlbmRpZgogCiAjaWYgVVNFKENHKQotICAgIFdF
QkNPUkVfRVhQT1JUIENvbG9yKENHQ29sb3JSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlv
bmFsUkdCQShDR0NvbG9yUmVmKTsKICNlbmRpZgogCiAgICAgc3RhdGljIGJvb2wgcGFyc2VIZXhD
b2xvcihjb25zdCBTdHJpbmcmLCBSR0JBMzImKTsKQEAgLTE2MywxOSArMTYzLDE5IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX3ZhbGlkOwogfTsKIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDb2xvciYgYSwgY29uc3QgQ29sb3ImIGIpCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IE9wdGlvbmFsUkdCQSYgYSwgY29uc3QgT3B0aW9uYWxSR0JBJiBiKQogewogICAgIHJldHVybiBh
LnJnYigpID09IGIucmdiKCkgJiYgYS5pc1ZhbGlkKCkgPT0gYi5pc1ZhbGlkKCk7CiB9CiAKLWlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29sb3ImIGEsIGNvbnN0IENvbG9yJiBiKQoraW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPcHRpb25hbFJHQkEmIGEsIGNvbnN0IE9wdGlvbmFs
UkdCQSYgYikKIHsKICAgICByZXR1cm4gIShhID09IGIpOwogfQogCi1Db2xvciBjb2xvckZyb21Q
cmVtdWx0aXBsaWVkQVJHQihSR0JBMzIpOwotUkdCQTMyIHByZW11bHRpcGxpZWRBUkdCRnJvbUNv
bG9yKGNvbnN0IENvbG9yJik7Ci1Db2xvciBibGVuZChjb25zdCBDb2xvciYgZnJvbSwgY29uc3Qg
Q29sb3ImIHRvLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRQcmVtdWx0aXBsaWVkID0gdHJ1
ZSk7CitPcHRpb25hbFJHQkEgY29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoUkdCQTMyKTsKK1JH
QkEzMiBwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcihjb25zdCBPcHRpb25hbFJHQkEmKTsKK09w
dGlvbmFsUkdCQSBibGVuZChjb25zdCBPcHRpb25hbFJHQkEmIGZyb20sIGNvbnN0IE9wdGlvbmFs
UkdCQSYgdG8sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFByZW11bHRpcGxpZWQgPSB0cnVl
KTsKIAogaW5saW5lIHVpbnQxNl90IGZhc3REaXZpZGVCeTI1NSh1aW50MTZfdCB2YWx1ZSkKIHsK
QEAgLTE4Niw3ICsxODYsNyBAQCBpbmxpbmUgdWludDE2X3QgZmFzdERpdmlkZUJ5MjU1KHVpbnQx
Nl90IHZhbHVlKQogfQogCiAjaWYgVVNFKENHKQotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclJlZiBj
YWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CitXRUJDT1JFX0VYUE9SVCBD
R0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiwgQ29sb3JTcGFjZSk7
CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuY3BwCmluZGV4IDIzZDliMzIzMjQ0NDI5NzI0NWEwNmNh
N2ZkZmRiYmNiMmJmNWNlYzIuLjlmM2JiZmQ3OTc3NmQ1ZDYzOWM5ZTQ0YWU5YTEyMTNmOWU4MzAx
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5jcHAK
QEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBHcmFkaWVudDo6YWRqdXN0UGFyYW1ldGVyc0ZvclRpbGVk
RHJhd2luZyhGbG9hdFNpemUmIHNpemUsIEZsb2F0UmVjdCYgc3JjUmUKICAgICBzcmNSZWN0LnNl
dFkoMCk7CiB9CiAKLXZvaWQgR3JhZGllbnQ6OmFkZENvbG9yU3RvcChmbG9hdCB2YWx1ZSwgY29u
c3QgQ29sb3ImIGNvbG9yKQordm9pZCBHcmFkaWVudDo6YWRkQ29sb3JTdG9wKGZsb2F0IHZhbHVl
LCBjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yKQogewogICAgIGZsb2F0IHI7CiAgICAgZmxvYXQg
ZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCmluZGV4IGE0
MjEzNDY1YzYxMmRhMWNiZjc2N2NkZWI5NDRhZTlhZjdiNjViYWQuLmY5ODRiYzE1MzhkNWQ1ZDBm
NzY2MzdhMTBmOTkzYTQ4ZTI5NGRhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhZGllbnQuaApAQCAtNTEsNyArNTEsNyBAQCB0eXBlZGVmIHZvaWQqIFBsYXRmb3Jt
R3JhZGllbnQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIENvbG9yOworICAg
IGNsYXNzIE9wdGlvbmFsUkdCQTsKICAgICBjbGFzcyBGbG9hdFJlY3Q7CiAgICAgY2xhc3MgR3Jh
cGhpY3NDb250ZXh0OwogCkBAIC02OSw3ICs2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICBzdHJ1Y3QgQ29sb3JTdG9wOwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFk
ZENvbG9yU3RvcChjb25zdCBDb2xvclN0b3AmKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhZGRDb2xvclN0b3AoZmxvYXQsIGNvbnN0IENvbG9yJik7CisgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYWRkQ29sb3JTdG9wKGZsb2F0LCBjb25zdCBPcHRpb25hbFJHQkEmKTsKIAogICAg
ICAgICBib29sIGhhc0FscGhhKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGU2YjM3ZmRlNWY5NWVj
MDJjMmY3ZDY4YTYxZjQwZjQ3YTc3ZjI3MzEuLmIzMmQyMjNmNmFiOGQ2Zjg5MDRiZDJhNzY3MWE3
OGRiMWMwZDc1MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpyZXN0b3JlKCkKICAgICByZXN0b3JlUGxhdGZvcm1TdGF0ZSgpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBjb25zdCBDb2xvciYgZWxsaXBzZUNvbG9yLCBDb2xvclNwYWNlIGVsbGlwc2VDb2xvclNwYWNl
LCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIENvbG9yU3BhY2Ugc2hhZG93Q29sb3JTcGFjZSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmFpc2VkRWxsaXBzZShjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGNvbnN0IE9wdGlvbmFsUkdCQSYgZWxsaXBzZUNvbG9yLCBDb2xvclNwYWNlIGVsbGlw
c2VDb2xvclNwYWNlLCBjb25zdCBPcHRpb25hbFJHQkEmIHNoYWRvd0NvbG9yLCBDb2xvclNwYWNl
IHNoYWRvd0NvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRT
dHJva2VTdHlsZShTdHJva2VTdHlsZSBzdHlsZSkKICAgICBzZXRQbGF0Zm9ybVN0cm9rZVN0eWxl
KHN0eWxlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUNvbG9yKGNvbnN0
IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFN0cm9rZUNvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSkKIHsKICAgICBtX3N0YXRlLnN0cm9rZUNvbG9yID0gY29sb3I7CiAgICAgbV9z
dGF0ZS5zdHJva2VDb2xvclNwYWNlID0gY29sb3JTcGFjZTsKQEAgLTE4Myw3ICsxODMsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UpCiAgICAgc2V0UGxhdGZvcm1TdHJva2VDb2xvcihjb2xvciwg
Y29sb3JTcGFjZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3coY29uc3Qg
RmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyhjb25zdCBG
bG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvciwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIG1fc3RhdGUuc2hhZG93T2Zmc2V0ID0gb2Zm
c2V0OwogICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9IGJsdXI7CkBAIC0xOTIsNyArMTkyLDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwg
ZmxvYXQgYmx1ciwgY29uc3QgQ29sb3IKICAgICBzZXRQbGF0Zm9ybVNoYWRvdyhvZmZzZXQsIGJs
dXIsIGNvbG9yLCBjb2xvclNwYWNlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldExl
Z2FjeVNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3QgQ29s
b3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0TGVnYWN5U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25z
dCBPcHRpb25hbFJHQkEmIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgbV9z
dGF0ZS5zaGFkb3dPZmZzZXQgPSBvZmZzZXQ7CiAgICAgbV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1
cjsKQEAgLTIwOCwxMiArMjA4LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclNoYWRv
dygpCiB7CiAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUoKTsKICAgICBtX3N0
YXRlLnNoYWRvd0JsdXIgPSAwOwotICAgIG1fc3RhdGUuc2hhZG93Q29sb3IgPSBDb2xvcigpOwor
ICAgIG1fc3RhdGUuc2hhZG93Q29sb3IgPSBPcHRpb25hbFJHQkEoKTsKICAgICBtX3N0YXRlLnNo
YWRvd0NvbG9yU3BhY2UgPSBDb2xvclNwYWNlRGV2aWNlUkdCOwogICAgIGNsZWFyUGxhdGZvcm1T
aGFkb3coKTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQ6OmdldFNoYWRvdyhGbG9hdFNpemUm
IG9mZnNldCwgZmxvYXQmIGJsdXIsIENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSYgY29sb3JTcGFj
ZSkgY29uc3QKK2Jvb2wgR3JhcGhpY3NDb250ZXh0OjpnZXRTaGFkb3coRmxvYXRTaXplJiBvZmZz
ZXQsIGZsb2F0JiBibHVyLCBPcHRpb25hbFJHQkEmIGNvbG9yLCBDb2xvclNwYWNlJiBjb2xvclNw
YWNlKSBjb25zdAogewogICAgIG9mZnNldCA9IG1fc3RhdGUuc2hhZG93T2Zmc2V0OwogICAgIGJs
dXIgPSBtX3N0YXRlLnNoYWRvd0JsdXI7CkBAIC0yNDEsNyArMjQxLDcgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHQ6Om11c3RVc2VTaGFkb3dCbHVyKCkgY29uc3QKIH0KICNlbmRpZgogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxDb2xvcihjb25zdCBP
cHRpb25hbFJHQkEmIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgbV9zdGF0
ZS5maWxsQ29sb3IgPSBjb2xvcjsKICAgICBtX3N0YXRlLmZpbGxDb2xvclNwYWNlID0gY29sb3JT
cGFjZTsKQEAgLTUwOSw3ICs1MDksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBHcmFkaWVudCYgZ3JhZGllbnQpCiAgICAgZ3JhZGllbnQu
ZmlsbCh0aGlzLCByZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBPcHRpb25hbFJHQkEmIGNvbG9yLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTIwLDcgKzUyMCw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9y
JiBjb2xvciwgQ29sb3JTCiAgICAgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKHByZXZpb3VzT3BlcmF0
b3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxS
b3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBPcHRpb25hbFJH
QkEmIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7
CiAgICAgaWYgKHJlY3QuaXNSb3VuZGVkKCkpIHsKICAgICAgICAgc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKGNvbXBvc2l0ZU9wZXJhdGlvbigpLCBibGVuZE1vZGUpOwpAQCAtNTMxLDcgKzUzMSw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImCiB9CiAKICNpZiAhVVNFKENHKSAmJiAhVVNFKENBSVJP
KQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IElu
dFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29u
c3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBPcHRpb25hbFJHQkEmIGNv
bG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBG
bG9hdFJvCiAgICAgICAgIHBhdGguYWRkUmVjdChyb3VuZGVkSG9sZVJlY3QucmVjdCgpKTsKIAog
ICAgIFdpbmRSdWxlIG9sZEZpbGxSdWxlID0gZmlsbFJ1bGUoKTsKLSAgICBDb2xvciBvbGRGaWxs
Q29sb3IgPSBmaWxsQ29sb3IoKTsKKyAgICBPcHRpb25hbFJHQkEgb2xkRmlsbENvbG9yID0gZmls
bENvbG9yKCk7CiAgICAgQ29sb3JTcGFjZSBvbGRGaWxsQ29sb3JTcGFjZSA9IGZpbGxDb2xvclNw
YWNlKCk7CiAgICAgCiAgICAgc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKQEAgLTcxMCw3ICs3
MTAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1TdHJva2VFbGxpcHNlKGNvbnN0
IEZsb2F0UmVjdCYgZWxsaXBzZSkKIH0KICNlbmRpZgogCi1GbG9hdFJlY3QgR3JhcGhpY3NDb250
ZXh0Ojpjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50LCBmbG9hdCB3aWR0aCwgYm9vbCBwcmludGluZywgYm9vbCYgc2hvdWxk
QW50aWFsaWFzLCBDb2xvciYgY29sb3IpCitGbG9hdFJlY3QgR3JhcGhpY3NDb250ZXh0Ojpjb21w
dXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCBmbG9hdCB3aWR0aCwgYm9vbCBwcmludGluZywgYm9vbCYgc2hvdWxkQW50aWFsaWFz
LCBPcHRpb25hbFJHQkEmIGNvbG9yKQogewogICAgIEZsb2F0UG9pbnQgb3JpZ2luOwogICAgIGZs
b2F0IHRoaWNrbmVzcyA9IHN0ZDo6bWF4KHN0cm9rZVRoaWNrbmVzcygpLCAwLjVmKTsKQEAgLTcz
Myw3ICs3MzMsNyBAQCBGbG9hdFJlY3QgR3JhcGhpY3NDb250ZXh0Ojpjb21wdXRlTGluZUJvdW5k
c0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KGNvbnN0IEZsbwogICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IGZsb2F0IG1pbmltdW1VbmRlcmxpbmVBbHBoYSA9IDAuNGY7CiAgICAgICAgICAgICBm
bG9hdCBzaGFkZSA9IHNjYWxlID4gbWluaW11bVVuZGVybGluZUFscGhhID8gc2NhbGUgOiBtaW5p
bXVtVW5kZXJsaW5lQWxwaGE7CiAgICAgICAgICAgICBpbnQgYWxwaGEgPSBjb2xvci5hbHBoYSgp
ICogc2hhZGU7Ci0gICAgICAgICAgICBjb2xvciA9IENvbG9yKGNvbG9yLnJlZCgpLCBjb2xvci5n
cmVlbigpLCBjb2xvci5ibHVlKCksIGFscGhhKTsKKyAgICAgICAgICAgIGNvbG9yID0gT3B0aW9u
YWxSR0JBKGNvbG9yLnJlZCgpLCBjb2xvci5ncmVlbigpLCBjb2xvci5ibHVlKCksIGFscGhhKTsK
ICAgICAgICAgfQogCiAgICAgICAgIEZsb2F0UG9pbnQgZGV2aWNlUG9pbnQgPSB0cmFuc2Zvcm0u
bWFwUG9pbnQocG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBkOGRlZmYwNDQ2MDczMGRiYjY5NTgwOGU5YTZmN2Zl
YmZmNzM1NmZhLi4yNzdkN2UwYzhhZjUzODgwMTRlMTJhZmJhZDVjNWU3YjRiNmM3MmY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aApAQCAtMTQwLDkgKzE0MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBUZXh0
RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUgeyBUZXh0TW9kZUZpbGwgfTsKIAotICAg
ICAgICBDb2xvciBzdHJva2VDb2xvciB7IENvbG9yOjpibGFjayB9OwotICAgICAgICBDb2xvciBm
aWxsQ29sb3IgeyBDb2xvcjo6YmxhY2sgfTsKLSAgICAgICAgQ29sb3Igc2hhZG93Q29sb3I7Cisg
ICAgICAgIE9wdGlvbmFsUkdCQSBzdHJva2VDb2xvciB7IE9wdGlvbmFsUkdCQTo6YmxhY2sgfTsK
KyAgICAgICAgT3B0aW9uYWxSR0JBIGZpbGxDb2xvciB7IE9wdGlvbmFsUkdCQTo6YmxhY2sgfTsK
KyAgICAgICAgT3B0aW9uYWxSR0JBIHNoYWRvd0NvbG9yOwogCiAgICAgICAgIFN0cm9rZVN0eWxl
IHN0cm9rZVN0eWxlIHsgU29saWRTdHJva2UgfTsKICAgICAgICAgV2luZFJ1bGUgZmlsbFJ1bGUg
eyBSVUxFX05PTlpFUk8gfTsKQEAgLTIxMiw4ICsyMTIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUpOwogICAgICAgICBTdHJv
a2VTdHlsZSBzdHJva2VTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlU3R5bGU7
IH0KIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IENv
bG9yJiwgQ29sb3JTcGFjZSk7Ci0gICAgICAgIENvbG9yIHN0cm9rZUNvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5zdHJva2VDb2xvcjsgfQorICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFN0cm9rZUNvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYsIENvbG9yU3BhY2UpOworICAgICAg
ICBPcHRpb25hbFJHQkEgc3Ryb2tlQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9r
ZUNvbG9yOyB9CiAgICAgICAgIENvbG9yU3BhY2Ugc3Ryb2tlQ29sb3JTcGFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZTsgfQogCiAgICAgICAgIHZvaWQgc2V0U3Ry
b2tlUGF0dGVybihSZWY8UGF0dGVybj4mJik7CkBAIC0yMjUsOCArMjI1LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldEZpbGxSdWxlKFdpbmRSdWxlIGZpbGxSdWxlKSB7
IG1fc3RhdGUuZmlsbFJ1bGUgPSBmaWxsUnVsZTsgfQogICAgICAgICBXaW5kUnVsZSBmaWxsUnVs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbFJ1bGU7IH0KICAgICAKLSAgICAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRGaWxsQ29sb3IoY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsK
LSAgICAgICAgQ29sb3IgZmlsbENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsQ29s
b3I7IH0KKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGaWxsQ29sb3IoY29uc3QgT3B0
aW9uYWxSR0JBJiwgQ29sb3JTcGFjZSk7CisgICAgICAgIE9wdGlvbmFsUkdCQSBmaWxsQ29sb3Io
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxDb2xvcjsgfQogICAgICAgICBDb2xvclNwYWNl
IGZpbGxDb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsQ29sb3JTcGFjZTsg
fQogCiAgICAgICAgIHZvaWQgc2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYpOwpAQCAtMjg2
LDcgKzI4Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAgICAgIHZvaWQg
ZHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgICAgIHZvaWQgZHJhd1JhaXNlZEVs
bGlwc2UoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImIGVsbGlwc2VDb2xvciwgQ29sb3JT
cGFjZSBlbGxpcHNlQ29sb3JTcGFjZSwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBDb2xvclNw
YWNlIHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICB2b2lkIGRyYXdSYWlzZWRFbGxpcHNlKGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IE9wdGlvbmFsUkdCQSYgZWxsaXBzZUNvbG9yLCBDb2xvclNw
YWNlIGVsbGlwc2VDb2xvclNwYWNlLCBjb25zdCBPcHRpb25hbFJHQkEmIHNoYWRvd0NvbG9yLCBD
b2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2UpOwogICAgICAgICB2b2lkIGRyYXdDb252ZXhQb2x5
Z29uKHNpemVfdCBudW1Qb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqLCBib29sIHNob3VsZEFudGlh
bGlhcyA9IGZhbHNlKTsKIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbGxQYXRoKGNv
bnN0IFBhdGgmKTsKQEAgLTI5NiwxMSArMjk2LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCBzdHJva2VFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpOwogCiAgICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3Im
LCBDb2xvclNwYWNlKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBPcHRpb25hbFJHQkEmLCBDb2xvclNwYWNlKTsKICAgICAgICAg
dm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBHcmFkaWVudCYpOwotICAgICAgICB2b2lk
IGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Ci0gICAgICAgIHZv
aWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYs
IENvbG9yU3BhY2UsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Ci0gICAgICAgIHZvaWQg
ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAg
ICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IE9wdGlvbmFsUkdCQSYs
IENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3Jt
YWwpOworICAgICAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiwgY29uc3QgT3B0aW9uYWxSR0JBJiwgQ29sb3JTcGFjZSwgQmxlbmRNb2RlID0gQmxlbmRNb2Rl
Tm9ybWFsKTsKKyAgICAgICAgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IE9w
dGlvbmFsUkdCQSYsIENvbG9yU3BhY2UpOwogCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogCkBAIC0zNzMsMTMgKzM3MywxMyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5kVHJhbnNwYXJl
bmN5TGF5ZXIoKTsKICAgICAgICAgYm9vbCBpc0luVHJhbnNwYXJlbmN5TGF5ZXIoKSBjb25zdCB7
IHJldHVybiAobV90cmFuc3BhcmVuY3lDb3VudCA+IDApICYmIHN1cHBvcnRzVHJhbnNwYXJlbmN5
TGF5ZXJzKCk7IH0KIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNoYWRvdyhjb25z
dCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAg
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9h
dCBibHVyLCBjb25zdCBPcHRpb25hbFJHQkEmLCBDb2xvclNwYWNlKTsKICAgICAgICAgLy8gTGVn
YWN5IHNoYWRvdyBibHVyIHJhZGl1cyBpcyB1c2VkIGZvciBjYW52YXMsIGFuZCAtd2Via2l0LWJv
eC1zaGFkb3cuCiAgICAgICAgIC8vIEl0IGhhcyBkaWZmZXJlbnQgdHJlYXRtZW50IG9mIHJhZGlp
ID4gOHB4LgotICAgICAgICB2b2lkIHNldExlZ2FjeVNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBm
bG9hdCBibHVyLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgICAgICB2b2lkIHNldExl
Z2FjeVNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25zdCBPcHRpb25hbFJH
QkEmLCBDb2xvclNwYWNlKTsKIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyU2hh
ZG93KCk7Ci0gICAgICAgIGJvb2wgZ2V0U2hhZG93KEZsb2F0U2l6ZSYsIGZsb2F0JiwgQ29sb3Im
LCBDb2xvclNwYWNlJikgY29uc3Q7CisgICAgICAgIGJvb2wgZ2V0U2hhZG93KEZsb2F0U2l6ZSYs
IGZsb2F0JiwgT3B0aW9uYWxSR0JBJiwgQ29sb3JTcGFjZSYpIGNvbnN0OwogCiAgICAgICAgIGJv
b2wgaGFzVmlzaWJsZVNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hhZG93Q29sb3Iu
aXNWYWxpZCgpICYmIG1fc3RhdGUuc2hhZG93Q29sb3IuYWxwaGEoKTsgfQogICAgICAgICBib29s
IGhhc1NoYWRvdygpIGNvbnN0IHsgcmV0dXJuIGhhc1Zpc2libGVTaGFkb3coKSAmJiAobV9zdGF0
ZS5zaGFkb3dCbHVyIHx8IG1fc3RhdGUuc2hhZG93T2Zmc2V0LndpZHRoKCkgfHwgbV9zdGF0ZS5z
aGFkb3dPZmZzZXQuaGVpZ2h0KCkpOyB9CkBAIC0zODksOCArMzg5LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBib29sIG11c3RVc2VTaGFkb3dCbHVyKCkgY29uc3Q7CiAjZW5kaWYK
IAotICAgICAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEludFJlY3Q+JiwgaW50
IHdpZHRoLCBpbnQgb2Zmc2V0LCBjb25zdCBDb2xvciYpOwotICAgICAgICB2b2lkIGRyYXdGb2N1
c1JpbmcoY29uc3QgUGF0aCYsIGludCB3aWR0aCwgaW50IG9mZnNldCwgY29uc3QgQ29sb3ImKTsK
KyAgICAgICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYsIGludCB3
aWR0aCwgaW50IG9mZnNldCwgY29uc3QgT3B0aW9uYWxSR0JBJik7CisgICAgICAgIHZvaWQgZHJh
d0ZvY3VzUmluZyhjb25zdCBQYXRoJiwgaW50IHdpZHRoLCBpbnQgb2Zmc2V0LCBjb25zdCBPcHRp
b25hbFJHQkEmKTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIHZvaWQgZHJhd0ZvY3VzUmlu
Zyhjb25zdCBWZWN0b3I8SW50UmVjdD4mLCBpbnQgd2lkdGgsIGludCBvZmZzZXQsIGRvdWJsZSB0
aW1lT2Zmc2V0LCBib29sJiBuZWVkc1JlZHJhdyk7CiAjZW5kaWYKQEAgLTUyNywxNiArNTI3LDE2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldFBsYXRmb3JtVGV4dERy
YXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdzKTsKIAotICAgICAgICB2b2lkIHNldFBsYXRm
b3JtU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKKyAgICAgICAgdm9pZCBz
ZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYsIENvbG9yU3BhY2UpOwog
ICAgICAgICB2b2lkIHNldFBsYXRmb3JtU3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUpOwogICAgICAg
ICB2b2lkIHNldFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNzKGZsb2F0KTsKIAotICAgICAgICB2b2lk
IHNldFBsYXRmb3JtRmlsbENvbG9yKGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgICAg
IHZvaWQgc2V0UGxhdGZvcm1GaWxsQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiwgQ29sb3JTcGFj
ZSk7CiAKICAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sKTsKICAg
ICAgICAgdm9pZCBzZXRQbGF0Zm9ybVNob3VsZFNtb290aEZvbnRzKGJvb2wpOwogCi0gICAgICAg
IHZvaWQgc2V0UGxhdGZvcm1TaGFkb3coY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29u
c3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKKyAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybVNoYWRvdyhj
b25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25zdCBPcHRpb25hbFJHQkEmLCBDb2xvclNw
YWNlKTsKICAgICAgICAgdm9pZCBjbGVhclBsYXRmb3JtU2hhZG93KCk7CiAKICAgICAgICAgdm9p
ZCBzZXRQbGF0Zm9ybUFscGhhKGZsb2F0KTsKQEAgLTU1Miw5ICs1NTIsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcGxhdGZvcm1GaWxsRWxsaXBzZShjb25zdCBGbG9hdFJl
Y3QmKTsKICAgICAgICAgdm9pZCBwbGF0Zm9ybVN0cm9rZUVsbGlwc2UoY29uc3QgRmxvYXRSZWN0
Jik7CiAKLSAgICAgICAgdm9pZCBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJv
dW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKKyAgICAgICAgdm9pZCBwbGF0
Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgT3B0aW9u
YWxSR0JBJiwgQ29sb3JTcGFjZSk7CiAKLSAgICAgICAgRmxvYXRSZWN0IGNvbXB1dGVMaW5lQm91
bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQoY29uc3QgRmxvYXRQb2ludCYsIGZsb2F0IHdp
ZHRoLCBib29sIHByaW50aW5nLCBib29sJiBzaG91bGRBbnRpYWxpYXMsIENvbG9yJik7CisgICAg
ICAgIEZsb2F0UmVjdCBjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0
KGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB3aWR0aCwgYm9vbCBwcmludGluZywgYm9vbCYgc2hv
dWxkQW50aWFsaWFzLCBPcHRpb25hbFJHQkEmKTsKIAogICAgICAgICBHcmFwaGljc0NvbnRleHRQ
bGF0Zm9ybVByaXZhdGUqIG1fZGF0YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAppbmRleCA5NDQ1ZDRlYzg1ODUzZTk5MmE1YzE3
ZjFhY2IyNTc3ZjYyZDE5MzRkLi4zZjY3OGQ2MTFhOTc3M2EyZDVhMjQ1YWZjOGVlNzhlMzAyM2Q5
YTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmNwcApAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6c2V0U2l6
ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgICAgIHNldE5lZWRzRGlzcGxheSgpOwogfQog
Ci12b2lkIEdyYXBoaWNzTGF5ZXI6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpCit2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBPcHRpb25h
bFJHQkEmIGNvbG9yKQogewogICAgIG1fYmFja2dyb3VuZENvbG9yID0gY29sb3I7CiB9CkBAIC00
MzEsMzMgKzQzMSwzMyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnJlc3VtZUFuaW1hdGlvbnMoKQog
ewogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXI6OmdldERlYnVnQm9yZGVySW5mbyhDb2xvciYgY29s
b3IsIGZsb2F0JiB3aWR0aCkgY29uc3QKK3ZvaWQgR3JhcGhpY3NMYXllcjo6Z2V0RGVidWdCb3Jk
ZXJJbmZvKE9wdGlvbmFsUkdCQSYgY29sb3IsIGZsb2F0JiB3aWR0aCkgY29uc3QKIHsKICAgICBp
ZiAoZHJhd3NDb250ZW50KCkpIHsKICAgICAgICAgaWYgKG1fdXNpbmdUaWxlZEJhY2tpbmcpIHsK
LSAgICAgICAgICAgIGNvbG9yID0gQ29sb3IoMjU1LCAxMjgsIDAsIDEyOCk7IC8vIHRpbGVkIGxh
eWVyOiBvcmFuZ2UKKyAgICAgICAgICAgIGNvbG9yID0gT3B0aW9uYWxSR0JBKDI1NSwgMTI4LCAw
LCAxMjgpOyAvLyB0aWxlZCBsYXllcjogb3JhbmdlCiAgICAgICAgICAgICB3aWR0aCA9IDI7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb2xvciA9IENvbG9yKDAs
IDEyOCwgMzIsIDEyOCk7IC8vIG5vcm1hbCBsYXllcjogZ3JlZW4KKyAgICAgICAgY29sb3IgPSBP
cHRpb25hbFJHQkEoMCwgMTI4LCAzMiwgMTI4KTsgLy8gbm9ybWFsIGxheWVyOiBncmVlbgogICAg
ICAgICB3aWR0aCA9IDI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAodXNlc0Nv
bnRlbnRzTGF5ZXIoKSkgewotICAgICAgICBjb2xvciA9IENvbG9yKDI1NSwgMTUwLCAyNTUsIDIw
MCk7IC8vIG5vbi1wYWludGluZyBsYXllciB3aXRoIGNvbnRlbnRzOiBwaW5rCisgICAgICAgIGNv
bG9yID0gT3B0aW9uYWxSR0JBKDI1NSwgMTUwLCAyNTUsIDIwMCk7IC8vIG5vbi1wYWludGluZyBs
YXllciB3aXRoIGNvbnRlbnRzOiBwaW5rCiAgICAgICAgIHdpZHRoID0gMjsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKICAgICBpZiAobWFza3NUb0JvdW5kcygpKSB7Ci0gICAgICAgIGNv
bG9yID0gQ29sb3IoMTI4LCAyNTUsIDI1NSwgNDgpOyAvLyBtYXNraW5nIGxheWVyOiBwYWxlIGJs
dWUKKyAgICAgICAgY29sb3IgPSBPcHRpb25hbFJHQkEoMTI4LCAyNTUsIDI1NSwgNDgpOyAvLyBt
YXNraW5nIGxheWVyOiBwYWxlIGJsdWUKICAgICAgICAgd2lkdGggPSAyMDsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGNvbG9yID0gQ29sb3IoMjU1LCAyNTUsIDAsIDE5Mik7IC8vIGNv
bnRhaW5lcjogeWVsbG93CisgICAgY29sb3IgPSBPcHRpb25hbFJHQkEoMjU1LCAyNTUsIDAsIDE5
Mik7IC8vIGNvbnRhaW5lcjogeWVsbG93CiAgICAgd2lkdGggPSAyOwogfQogCkBAIC00NjYsNyAr
NDY2LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyOjp1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKQogICAg
IGlmICghaXNTaG93aW5nRGVidWdCb3JkZXIoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ29s
b3IgYm9yZGVyQ29sb3I7CisgICAgT3B0aW9uYWxSR0JBIGJvcmRlckNvbG9yOwogICAgIGZsb2F0
IHdpZHRoID0gMDsKICAgICBnZXREZWJ1Z0JvcmRlckluZm8oYm9yZGVyQ29sb3IsIHdpZHRoKTsK
ICAgICBzZXREZWJ1Z0JvcmRlcihib3JkZXJDb2xvciwgd2lkdGgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IGFkN2QzNWYyODY5
NmI3Y2Y4MDQ2ZDAxZDkwZmEzYmZhZTRhNDAzZDguLmZmMmM5YzdmMWY3YzUwMTdjZDY2N2ZmNWJl
MDllM2RlMGE5MDZhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmgKQEAgLTM1MSw4ICszNTEsOCBAQCBwdWJsaWM6CiAgICAgLy8gVGhl
IGNvbG9yIHVzZWQgdG8gcGFpbnQgdGhlIGxheWVyIGJhY2tncm91bmQuIFBhc3MgYW4gaW52YWxp
ZCBjb2xvciB0byByZW1vdmUgaXQuCiAgICAgLy8gTm90ZSB0aGF0IHRoaXMgY292ZXJzIHRoZSBl
bnRpcmUgbGF5ZXIuIFVzZSBzZXRDb250ZW50c1RvU29saWRDb2xvcigpIGlmIHRoZSBjb2xvciBz
aG91bGQKICAgICAvLyBvbmx5IGNvdmVyIHRoZSBjb250ZW50c1JlY3QuCi0gICAgY29uc3QgQ29s
b3ImIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25z
dCBDb2xvciYpOworICAgIGNvbnN0IE9wdGlvbmFsUkdCQSYgYmFja2dyb3VuZENvbG9yKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYpOwogCiAgICAg
Ly8gb3BhcXVlIG1lYW5zIHRoYXQgd2Uga25vdyB0aGUgbGF5ZXIgY29udGVudHMgaGF2ZSBubyBh
bHBoYQogICAgIGJvb2wgY29udGVudHNPcGFxdWUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRz
T3BhcXVlOyB9CkBAIC00NDEsNyArNDQxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGxhdGZv
cm1MYXllciogY29udGVudHNMYXllckZvck1lZGlhKCkgY29uc3QgeyByZXR1cm4gMDsgfQogI2Vu
ZGlmCiAgICAgLy8gUGFzcyBhbiBpbnZhbGlkIGNvbG9yIHRvIHJlbW92ZSB0aGUgY29udGVudHMg
bGF5ZXIuCi0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENv
bG9yJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0
IE9wdGlvbmFsUkdCQSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZv
cm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIHsgfQogICAgIHZp
cnR1YWwgYm9vbCB1c2VzQ29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
QEAgLTQ2OSw4ICs0NjksOCBAQCBwdWJsaWM6CiAgICAgaW50IHJlcGFpbnRDb3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVwYWludENvdW50OyB9CiAgICAgaW50IGluY3JlbWVudFJlcGFpbnRDb3Vu
dCgpIHsgcmV0dXJuICsrbV9yZXBhaW50Q291bnQ7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRE
ZWJ1Z0JhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBz
ZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IC8qYm9yZGVyV2lkdGgqLykgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHNldERlYnVnQmFja2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsUkdC
QSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBPcHRpb25hbFJH
QkEmLCBmbG9hdCAvKmJvcmRlcldpZHRoKi8pIHsgfQogCiAgICAgZW51bSBDdXN0b21BcHBlYXJh
bmNlIHsgTm9DdXN0b21BcHBlYXJhbmNlLCBTY3JvbGxpbmdPdmVyaGFuZywgU2Nyb2xsaW5nU2hh
ZG93LCBMaWdodEJhY2tkcm9wQXBwZWFyYW5jZSwgRGFya0JhY2tkcm9wQXBwZWFyYW5jZSB9Owog
ICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0b21BcHBlYXJhbmNlKEN1c3RvbUFwcGVhcmFuY2UgY3Vz
dG9tQXBwZWFyYW5jZSkgeyBtX2N1c3RvbUFwcGVhcmFuY2UgPSBjdXN0b21BcHBlYXJhbmNlOyB9
CkBAIC01NjksNyArNTY5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZHVtcFByb3BlcnRpZXMo
VGV4dFN0cmVhbSYsIGludCBpbmRlbnQsIExheWVyVHJlZUFzVGV4dEJlaGF2aW9yKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgZHVtcEFkZGl0aW9uYWxQcm9wZXJ0aWVzKFRleHRTdHJlYW0mLCBp
bnQgLyppbmRlbnQqLywgTGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3IpIGNvbnN0IHsgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGdldERlYnVnQm9yZGVySW5mbyhDb2xvciYsIGZs
b2F0JiB3aWR0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGdldERl
YnVnQm9yZGVySW5mbyhPcHRpb25hbFJHQkEmLCBmbG9hdCYgd2lkdGgpIGNvbnN0OwogCiAgICAg
R3JhcGhpY3NMYXllckNsaWVudCYgbV9jbGllbnQ7CiAgICAgU3RyaW5nIG1fbmFtZTsKQEAgLTU4
Niw3ICs1ODYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV90cmFu
c2Zvcm07CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9jaGlsZHJlblRyYW5zZm9ybTsKIAot
ICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOworICAgIE9wdGlvbmFsUkdCQSBtX2JhY2tncm91
bmRDb2xvcjsKICAgICBmbG9hdCBtX29wYWNpdHk7CiAgICAgZmxvYXQgbV96UG9zaXRpb247CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggMGRm
N2U1ZTcxZDM3NjU0NTk0ZGUwODc0ZDVjODBlZTAzYWFmZTRlYy4uMjdiNWYyYjBiM2M4N2I3ODYx
MGI5Y2U3ZjI1YzljOTZiZTQ0MDE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmNwcApAQCAtNzgsNyArNzgsNyBAQCBib29sIEltYWdlOjpzZXREYXRhKFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1
cm4gZGF0YUNoYW5nZWQoYWxsRGF0YVJlY2VpdmVkKTsKIH0KIAotdm9pZCBJbWFnZTo6ZmlsbFdp
dGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgSW1hZ2U6OmZpbGxXaXRoU29saWRDb2xvcihHcmFwaGlj
c0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgT3B0aW9uYWxS
R0JBJiBjb2xvciwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wKQogewogICAgIGlmICghY29sb3IuYWxwaGEoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNThjMGQ5NWQ4YzQzN2JhMTgw
YWVmMWQ3ZmRiNGY4Mjc3Y2Q2ZGQ3Mi4uMDE1ZmI5YjFjYTFjYTE5MmM5NzgyNmMyMjhjYjJlZjAx
YWFiOGM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0x
ODUsNyArMTg1LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEltYWdlKEltYWdlT2JzZXJ2
ZXIqID0gbnVsbHB0cik7CiAKLSAgICBzdGF0aWMgdm9pZCBmaWxsV2l0aFNvbGlkQ29sb3IoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBDb2xvciYsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgc3RhdGlj
IHZvaWQgZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgT3B0aW9uYWxSR0JBJiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKIAogICAgIC8vIFRoZSBDb2xvclNwYWNlIHBhcmFtZXRl
ciB3aWxsIG9ubHkgYmUgdXNlZCBmb3IgdW50YWdnZWQgaW1hZ2VzLgogI2lmIFBMQVRGT1JNKFdJ
TikKQEAgLTE5OCw3ICsxOTgsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBTdXBwb3J0aW5nIHRp
bGVkIGRyYXdpbmcKICAgICB2aXJ0dWFsIGJvb2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIENvbG9yIHNvbGlkQ29sb3IoKSBjb25zdCB7IHJl
dHVybiBDb2xvcigpOyB9CisgICAgdmlydHVhbCBPcHRpb25hbFJHQkEgc29saWRDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIE9wdGlvbmFsUkdCQSgpOyB9CiAgICAgCiBwcml2YXRlOgogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fZW5jb2RlZEltYWdlRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVD
bGllbnQuaAppbmRleCAwNzYwMmQyN2U2ZTQwMWE1ZDY5YzQ4ZTlkZTNkNjBiNDE3MzJhZjY0Li43
NzQxOTczZTM5NjQ4Y2M5MmVkMzQxNGU4ODg0NDVkMmZjMmRjZDc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUNsaWVudC5oCkBAIC04NiwxMyArODYsMTMgQEAgcHVibGljOgogICAgIGRvdWJsZSBy
ZWxhdGl2ZUZvbnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZWxhdGl2ZUZvbnRTaXplOyB9CiAg
ICAgdm9pZCBzZXRSZWxhdGl2ZUZvbnRTaXplKGRvdWJsZSByZWxhdGl2ZUZvbnRTaXplKSB7IG1f
cmVsYXRpdmVGb250U2l6ZSA9IHJlbGF0aXZlRm9udFNpemU7IH0KIAotICAgIENvbG9yIGZvcmVn
cm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9yZWdyb3VuZENvbG9yOyB9CisgICAgT3B0
aW9uYWxSR0JBIGZvcmVncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9yZWdyb3VuZENv
bG9yOyB9CiAgICAgdm9pZCBzZXRGb3JlZ3JvdW5kQ29sb3IoUkdCQTMyIGNvbG9yKSB7IG1fZm9y
ZWdyb3VuZENvbG9yLnNldFJHQihjb2xvcik7IH0KIAotICAgIENvbG9yIGJhY2tncm91bmRDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CisgICAgT3B0aW9uYWxSR0JB
IGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CiAg
ICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoUkdCQTMyIGNvbG9yKSB7IG1fYmFja2dyb3VuZENv
bG9yLnNldFJHQihjb2xvcik7IH0KICAgICAKLSAgICBDb2xvciBoaWdobGlnaHRDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIG1faGlnaGxpZ2h0Q29sb3I7IH0KKyAgICBPcHRpb25hbFJHQkEgaGlnaGxp
Z2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX2hpZ2hsaWdodENvbG9yOyB9CiAgICAgdm9pZCBz
ZXRIaWdobGlnaHRDb2xvcihSR0JBMzIgY29sb3IpIHsgbV9oaWdobGlnaHRDb2xvci5zZXRSR0Io
Y29sb3IpOyB9CiAgICAgCiAgICAgZW51bSBTdGF0dXMgewpAQCAtMTI4LDkgKzEyOCw5IEBAIHBy
aXZhdGU6CiAgICAgU3RyaW5nIG1fZm9udE5hbWU7CiAgICAgZG91YmxlIG1fYmFzZUZvbnRTaXpl
OwogICAgIGRvdWJsZSBtX3JlbGF0aXZlRm9udFNpemU7Ci0gICAgQ29sb3IgbV9mb3JlZ3JvdW5k
Q29sb3I7Ci0gICAgQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7Ci0gICAgQ29sb3IgbV9oaWdobGln
aHRDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgbV9mb3JlZ3JvdW5kQ29sb3I7CisgICAgT3B0aW9u
YWxSR0JBIG1fYmFja2dyb3VuZENvbG9yOworICAgIE9wdGlvbmFsUkdCQSBtX2hpZ2hsaWdodENv
bG9yOwogICAgIFN0YXR1cyBtX3N0YXR1czsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXggZDcwODY1YTk3MWY1N2ExYjJlMDVk
YzYzYjNjYmQ4ZWZjYTQyNDI3NC4uMzI5OWNiODNkZDI1YTljZmY1OGE5YTM5NjZiYzRmNjU0MTAy
MDE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9pbWFnZUJ1
ZmZlci5nZXQoKTsKICAgICB9CiAKLSAgICBib29sIHNldENhY2hlZFNoYWRvd1ZhbHVlcyhjb25z
dCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVj
dDo6UmFkaWkmIHJhZGlpLCBjb25zdCBGbG9hdFNpemUmIGxheWVyU2l6ZSkKKyAgICBib29sIHNl
dENhY2hlZFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgT3B0aW9u
YWxSR0JBJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIHNo
YWRvd1JlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgRmxv
YXRTaXplJiBsYXllclNpemUpCiAgICAgewogICAgICAgICBpZiAoIW1fbGFzdFdhc0luc2V0ICYm
IG1fbGFzdFJhZGl1cyA9PSByYWRpdXMgJiYgbV9sYXN0Q29sb3IgPT0gY29sb3IgJiYgbV9sYXN0
Q29sb3JTcGFjZSA9PSBjb2xvclNwYWNlICYmIG1fbGFzdFNoYWRvd1JlY3QgPT0gc2hhZG93UmVj
dCAmJiAgbV9sYXN0UmFkaWkgPT0gcmFkaWkgJiYgbV9sYXN0TGF5ZXJTaXplID09IGxheWVyU2l6
ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBib29sIHNldENhY2hlZEluc2V0U2hh
ZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZHMsIGNvbnN0IEZsb2F0
UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQor
ICAgIGJvb2wgc2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRp
dXMsIGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29u
c3QgRmxvYXRSZWN0JiBib3VuZHMsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQogICAgIHsKICAgICAgICAgaWYgKG1fbGFz
dFdhc0luc2V0ICYmIG1fbGFzdFJhZGl1cyA9PSByYWRpdXMgJiYgbV9sYXN0Q29sb3IgPT0gY29s
b3IgJiYgbV9sYXN0Q29sb3JTcGFjZSA9PSBjb2xvclNwYWNlICYmIG1fbGFzdEluc2V0Qm91bmRz
ID09IGJvdW5kcyAmJiBzaGFkb3dSZWN0ID09IG1fbGFzdFNoYWRvd1JlY3QgJiYgcmFkaWkgPT0g
bV9sYXN0UmFkaWkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDMsNyArMTQzLDcg
QEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9sYXN0SW5zZXRCb3VuZHM7CiAgICAgRmxvYXRS
ZWN0IG1fbGFzdFNoYWRvd1JlY3Q7CiAgICAgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkgbV9sYXN0
UmFkaWk7Ci0gICAgQ29sb3IgbV9sYXN0Q29sb3I7CisgICAgT3B0aW9uYWxSR0JBIG1fbGFzdENv
bG9yOwogICAgIENvbG9yU3BhY2UgbV9sYXN0Q29sb3JTcGFjZTsKICAgICBGbG9hdFNpemUgbV9s
YXN0UmFkaXVzOwogICAgIGJvb2wgbV9sYXN0V2FzSW5zZXQ7CkBAIC0xNjksNyArMTY5LDcgQEAg
c3RhdGljIGZsb2F0IHJhZGl1c1RvTGVnYWN5UmFkaXVzKGZsb2F0IHJhZGl1cykKIH0KICNlbmRp
ZgogCi1TaGFkb3dCbHVyOjpTaGFkb3dCbHVyKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25z
dCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UpCitTaGFkb3dCbHVyOjpTaGFkb3dCbHVyKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBj
b25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvciwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlKQogICAgIDogbV9jb2xvcihjb2xvcikKICAgICAsIG1fY29sb3JTcGFj
ZShjb2xvclNwYWNlKQogICAgICwgbV9ibHVyUmFkaXVzKHJhZGl1cykKQEAgLTIwNCw3ICsyMDQs
NyBAQCBTaGFkb3dCbHVyOjpTaGFkb3dCbHVyKCkKIHsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpz
ZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYg
b2Zmc2V0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgYm9vbCBp
Z25vcmVUcmFuc2Zvcm1zKQordm9pZCBTaGFkb3dCbHVyOjpzZXRTaGFkb3dWYWx1ZXMoY29uc3Qg
RmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBPcHRpb25h
bFJHQkEmIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGJvb2wgaWdub3JlVHJhbnNmb3Jt
cykKIHsKICAgICBtX2JsdXJSYWRpdXMgPSByYWRpdXM7CiAgICAgbV9vZmZzZXQgPSBvZmZzZXQ7
CkBAIC0yODEsNyArMjgxLDcgQEAgc3RhdGljIHZvaWQgY2FsY3VsYXRlTG9iZXMoaW50IGxvYmVz
W11bMl0sIGZsb2F0IGJsdXJSYWRpdXMsIGJvb2wgc2hhZG93c0lnbm9yZVQKIHZvaWQgU2hhZG93
Qmx1cjo6Y2xlYXIoKQogewogICAgIG1fdHlwZSA9IE5vU2hhZG93OwotICAgIG1fY29sb3IgPSBD
b2xvcigpOworICAgIG1fY29sb3IgPSBPcHRpb25hbFJHQkEoKTsKICAgICBtX2JsdXJSYWRpdXMg
PSBGbG9hdFNpemUoKTsKICAgICBtX29mZnNldCA9IEZsb2F0U2l6ZSgpOwogfQpAQCAtNTcwLDcg
KzU3MCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjCiAgICAgYnVmZmVyUmVsYXRpdmVTaGFk
b3dlZFJlY3QubW92ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKIAogICAgIC8vIE9ubHkg
cmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0
IG1hdGNoIG91ciBuZWVkcwotICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6
c2luZ2xldG9uKCkuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgQ29sb3I6OmJs
YWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBidWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdCwgc2hh
ZG93ZWRSZWN0LnJhZGlpKCksIG1fbGF5ZXJTaXplKTsKKyAgICBib29sIHJlZHJhd05lZWRlZCA9
IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNldENhY2hlZFNoYWRvd1ZhbHVlcyhtX2JsdXJS
YWRpdXMsIE9wdGlvbmFsUkdCQTo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIGJ1ZmZlclJl
bGF0aXZlU2hhZG93ZWRSZWN0LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbV9sYXllclNpemUpOwog
ICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dD
b250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqc2hhZG93Q29udGV4dCk7CkBAIC01NzgsNyArNTc4LDcg
QEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGMKICAgICAgICAgLy8gQWRkIGEgcGl4ZWwgdG8gYXZv
aWQgbGF0ZXIgZWRnZSBhbGlhc2luZyB3aGVuIHJvdGF0ZWQuCiAgICAgICAgIHNoYWRvd0NvbnRl
eHQtPmNsZWFyUmVjdChGbG9hdFJlY3QoMCwgMCwgbV9sYXllclNpemUud2lkdGgoKSArIDEsIG1f
bGF5ZXJTaXplLmhlaWdodCgpICsgMSkpOwogICAgICAgICBzaGFkb3dDb250ZXh0LT50cmFuc2xh
dGUobV9sYXllckNvbnRleHRUcmFuc2xhdGlvbik7Ci0gICAgICAgIHNoYWRvd0NvbnRleHQtPnNl
dEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBz
aGFkb3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoT3B0aW9uYWxSR0JBOjpibGFjaywgQ29sb3JTcGFj
ZURldmljZVJHQik7CiAgICAgICAgIGlmIChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8oKSkK
ICAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KHNoYWRvd2VkUmVjdC5yZWN0KCkp
OwogICAgICAgICBlbHNlIHsKQEAgLTYwOCw3ICs2MDgsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRy
YXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsCiAgICAgYnVmZmVyUmVsYXRpdmVIb2xlUmVjdC5tb3ZlKG1fbGF5ZXJDb250ZXh0VHJhbnNs
YXRpb24pOwogCiAgICAgLy8gT25seSByZWRyYXcgaW4gdGhlIHNjcmF0Y2ggYnVmZmVyIGlmIGl0
cyBjYWNoZWQgY29udGVudHMgZG9uJ3QgbWF0Y2ggb3VyIG5lZWRzCi0gICAgYm9vbCByZWRyYXdO
ZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zZXRDYWNoZWRJbnNldFNoYWRvd1Zh
bHVlcyhtX2JsdXJSYWRpdXMsIENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQiwgYnVm
ZmVyUmVsYXRpdmVSZWN0LCBidWZmZXJSZWxhdGl2ZUhvbGVSZWN0LCBob2xlUmVjdC5yYWRpaSgp
KTsKKyAgICBib29sIHJlZHJhd05lZWRlZCA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNl
dENhY2hlZEluc2V0U2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgT3B0aW9uYWxSR0JBOjpibGFj
aywgQ29sb3JTcGFjZURldmljZVJHQiwgYnVmZmVyUmVsYXRpdmVSZWN0LCBidWZmZXJSZWxhdGl2
ZUhvbGVSZWN0LCBob2xlUmVjdC5yYWRpaSgpKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7CiAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29u
dGV4dCgpOwogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnNo
YWRvd0NvbnRleHQpOwpAQCAtNjI1LDcgKzYyNSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0lu
c2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwK
ICAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QoaG9sZVJlY3QpOwogCiAgICAgICAgIHNo
YWRvd0NvbnRleHQtPnNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7Ci0gICAgICAgIHNoYWRvd0Nv
bnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgICAgICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoT3B0aW9uYWxSR0JBOjpibGFjaywg
Q29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxQYXRoKHBh
dGgpOwogCiAgICAgICAgIGJsdXJTaGFkb3dCdWZmZXIoZXhwYW5kZWRJbnRTaXplKG1fbGF5ZXJT
aXplKSk7CkBAIC02ODYsNyArNjg2LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFk
b3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb24KICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKCpzaGFkb3dDb250
ZXh0KTsKICAgICAgICAgc2hhZG93Q29udGV4dC0+Y2xlYXJSZWN0KHRlbXBsYXRlQm91bmRzKTsK
ICAgICAgICAgc2hhZG93Q29udGV4dC0+c2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKLSAgICAg
ICAgc2hhZG93Q29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgICAgIHNoYWRvd0NvbnRleHQtPnNldEZpbGxDb2xvcihPcHRpb25hbFJH
QkE6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgICAgICBQYXRoIHBhdGg7CiAg
ICAgICAgIHBhdGguYWRkUmVjdCh0ZW1wbGF0ZUJvdW5kcyk7CkBAIC03NTAsNyArNzUwLDcgQEAg
dm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQsIGNvbnMKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzaGFkb3dTdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0KTsKIAogICAgICAgICBzaGFkb3dDb250
ZXh0LT5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIHRlbXBsYXRlU2l6ZS53aWR0aCgpLCB0ZW1w
bGF0ZVNpemUuaGVpZ2h0KCkpKTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+c2V0RmlsbENvbG9y
KENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHNoYWRvd0NvbnRl
eHQtPnNldEZpbGxDb2xvcihPcHRpb25hbFJHQkE6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKICAgICAgICAgCiAgICAgICAgIGlmIChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8oKSkK
ICAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KHRlbXBsYXRlU2hhZG93KTsKQEAg
LTg5Miw3ICs4OTIsNyBAQCBHcmFwaGljc0NvbnRleHQqIFNoYWRvd0JsdXI6OmJlZ2luU2hhZG93
TGF5ZXIoR3JhcGhpY3NDb250ZXh0ICpjb250ZXh0LCBjb25zdCBGbAogICAgIC8vIFdlIHJlc2V0
IHRoZSBzY3JhdGNoIGJ1ZmZlciB2YWx1ZXMgaGVyZSwgYmVjYXVzZSB0aGUgYnVmZmVyIHdpbGwg
bm8gbG9uZ2VyIGNvbnRhaW4KICAgICAvLyBkYXRhIGZyb20gYW55IHByZXZpb3VzIHJlY3Rhbmds
ZSBvciBpbnNldCBzaGFkb3dzIGRyYXduIHZpYSB0aGUgdGlsaW5nIHBhdGguCiAgICAgYXV0byYg
c2NyYXRjaEJ1ZmZlciA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpOwotICAgIHNjcmF0Y2hC
dWZmZXIuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKEZsb2F0U2l6ZSgpLCBDb2xvcjo6YmxhY2ssIENv
bG9yU3BhY2VEZXZpY2VSR0IsIEludFJlY3QoKSwgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkoKSwg
bV9sYXllclNpemUpOworICAgIHNjcmF0Y2hCdWZmZXIuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKEZs
b2F0U2l6ZSgpLCBPcHRpb25hbFJHQkE6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRS
ZWN0KCksIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpKCksIG1fbGF5ZXJTaXplKTsKICAgICBtX2xh
eWVySW1hZ2UgPSBzY3JhdGNoQnVmZmVyLmdldFNjcmF0Y2hCdWZmZXIobGF5ZXJSZWN0LnNpemUo
KSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2Ut
PmNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NoYWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0Js
dXIuaAppbmRleCBlNjI2YjA3NDhkMjIwYThiYzg1NTJhOTFjMTIyZTRiZTc2NjNmNjEzLi5hYWNj
M2EzN2M4OGM4MjZiNjU3NjNiZDMyMGQ4ODYwYmRiMTA3NDc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCkBAIC01MSwxMSArNTEsMTEgQEAgcHVi
bGljOgogICAgICAgICBCbHVyU2hhZG93CiAgICAgfTsKIAotICAgIFNoYWRvd0JsdXIoY29uc3Qg
RmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBDb2xvciYs
IENvbG9yU3BhY2UpOworICAgIFNoYWRvd0JsdXIoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNv
bnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBPcHRpb25hbFJHQkEmLCBDb2xvclNwYWNlKTsK
ICAgICBTaGFkb3dCbHVyKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAgICAgU2hhZG93
Qmx1cigpOwogCi0gICAgdm9pZCBzZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiwgY29u
c3QgRmxvYXRTaXplJiAsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSwgYm9vbCBpZ25vcmVUcmFu
c2Zvcm1zID0gZmFsc2UpOworICAgIHZvaWQgc2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgLCBjb25zdCBPcHRpb25hbFJHQkEmLCBDb2xvclNwYWNlLCBi
b29sIGlnbm9yZVRyYW5zZm9ybXMgPSBmYWxzZSk7CiAKICAgICB2b2lkIHNldFNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKGJvb2wgaWdub3JlVHJhbnNmb3JtcykgeyBtX3NoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zID0gaWdub3JlVHJhbnNmb3JtczsgfQogICAgIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOyB9CkBAIC0x
MDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBTaGFkb3dUeXBlIG1fdHlwZTsKIAot
ICAgIENvbG9yIG1fY29sb3I7CisgICAgT3B0aW9uYWxSR0JBIG1fY29sb3I7CiAgICAgQ29sb3JT
cGFjZSBtX2NvbG9yU3BhY2U7CiAgICAgRmxvYXRTaXplIG1fYmx1clJhZGl1czsKICAgICBGbG9h
dFNpemUgbV9vZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBlOThkZmQ5YWZjMWFh
N2Y0MzM4NWJhZGQwODZlNzgzYTViNWQzNDgwLi5lZmFlYjgzODM3MDc5YjVmOTc4NDRhODVlMTZi
ZWZjOTc2MTI4MmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTY2OSw3ICs2NjksNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVy
TGF5ZXIoKQogCiAgICAgbV92aWRlb0xheWVyID0gYWRvcHROUyhbYWxsb2NBVlBsYXllckxheWVy
SW5zdGFuY2UoKSBpbml0XSk7CiAgICAgW21fdmlkZW9MYXllciBzZXRQbGF5ZXI6bV9hdlBsYXll
ci5nZXQoKV07Ci0gICAgW21fdmlkZW9MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dD
b2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpXTsKKyAgICBbbV92aWRlb0xh
eWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0NvbG9yKE9wdGlvbmFsUkdCQTo6YmxhY2ss
IENvbG9yU3BhY2VEZXZpY2VSR0IpXTsKICNpZm5kZWYgTkRFQlVHCiAgICAgW21fdmlkZW9MYXll
ciBzZXROYW1lOkAiTWVkaWFQbGF5ZXJQcml2YXRlIEFWUGxheWVyTGF5ZXIiXTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5jcHAKaW5kZXggMzRmNGNlMTAzYTkzNmUzYTAxMWI4NWNmYjRkZmVlY2Q2MTUyYzhl
OC4uNjYzNjkxYWYwZmFlNGNiNDc2MmVjZTBlYTlkZDhhMTg2MzYyYzkzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
Y3BwCkBAIC02NjUsNyArNjY1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEFjY2VsZXJh
dGVzRHJhd2luZyhib29sIGFjY2VsZXJhdGVzRHJhd2luZykKICAgICBub3RlTGF5ZXJQcm9wZXJ0
eUNoYW5nZWQoQWNjZWxlcmF0ZXNEcmF3aW5nQ2hhbmdlZCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NM
YXllckNBOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQordm9pZCBHcmFw
aGljc0xheWVyQ0E6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9y
KQogewogICAgIGlmIChtX2JhY2tncm91bmRDb2xvciA9PSBjb2xvcikKICAgICAgICAgcmV0dXJu
OwpAQCAtOTQ5LDcgKzk0OSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5
ZXJBbmltYXRpb25FbmRlZChjb25zdCBTdHJpbmcmIGFuaW1hdGlvbktleSkKICAgICBjbGllbnQo
KS5ub3RpZnlBbmltYXRpb25FbmRlZCh0aGlzLCBhbmltYXRpb25LZXkpOwogfQogCi12b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9y
KQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IE9w
dGlvbmFsUkdCQSYgY29sb3IpCiB7CiAgICAgaWYgKGNvbG9yID09IG1fY29udGVudHNTb2xpZENv
bG9yKQogICAgICAgICByZXR1cm47CkBAIC05NjMsNyArOTYzLDcgQEAgdm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICAg
ICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xheWVyRm9yQmFja2dyb3Vu
ZENvbG9yOwogICAgICAgICAgICAgbV9jb250ZW50c0xheWVyID0gY3JlYXRlUGxhdGZvcm1DQUxh
eWVyKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGF5ZXIsIHRoaXMpOwogI2lmbmRlZiBOREVC
VUcKLSAgICAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0TmFtZShTdHJpbmc6OmZvcm1hdCgi
QmFja2dyb3VuZCBDb2xvciBMYXllciAlbGx1IiwgbV9jb250ZW50c0xheWVyLT5sYXllcklEKCkp
KTsKKyAgICAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0TmFtZShTdHJpbmc6OmZvcm1hdCgi
QmFja2dyb3VuZCBPcHRpb25hbFJHQkEgTGF5ZXIgJWxsdSIsIG1fY29udGVudHNMYXllci0+bGF5
ZXJJRCgpKSk7CiAjZW5kaWYKICAgICAgICAgICAgIGNvbnRlbnRzTGF5ZXJDaGFuZ2VkID0gdHJ1
ZTsKICAgICAgICAgfQpAQCAtMTMzOCw4ICsxMzM4LDggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6
OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoY29uc3QgQ29tbWl0U3RhdGUmIGNvbW1pdFN0YXRlLCBj
b24KICAgICAvLyBVc2UgaGF2aW5nIGEgdHJhbnNmb3JtIGFzIGEga2V5IHRvIG1ha2luZyB0aGUg
dGlsZSB3YXNoIGxheWVyLiBJZiBldmVyeSBsYXllciBnZXRzIGEgd2FzaCwKICAgICAvLyB0aGV5
IHN0YXJ0IHRvIG9ic2N1cmUgdXNlZnVsIGluZm9ybWF0aW9uLgogICAgIGlmICgoIW1fdHJhbnNm
b3JtLmlzSWRlbnRpdHkoKSB8fCBtX3VzaW5nVGlsZWRCYWNraW5nKSAmJiAhbV92aXNpYmxlVGls
ZVdhc2hMYXllcikgewotICAgICAgICBzdGF0aWMgQ29sb3Igd2FzaEZpbGxDb2xvcigyNTUsIDAs
IDAsIDUwKTsKLSAgICAgICAgc3RhdGljIENvbG9yIHdhc2hCb3JkZXJDb2xvcigyNTUsIDAsIDAs
IDEwMCk7CisgICAgICAgIHN0YXRpYyBPcHRpb25hbFJHQkEgd2FzaEZpbGxDb2xvcigyNTUsIDAs
IDAsIDUwKTsKKyAgICAgICAgc3RhdGljIE9wdGlvbmFsUkdCQSB3YXNoQm9yZGVyQ29sb3IoMjU1
LCAwLCAwLCAxMDApOwogICAgICAgICAKICAgICAgICAgbV92aXNpYmxlVGlsZVdhc2hMYXllciA9
IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVyLCB0
aGlzKTsKICAgICAgICAgU3RyaW5nIG5hbWUgPSBTdHJpbmc6OmZvcm1hdCgiVmlzaWJsZSBUaWxl
IFdhc2ggTGF5ZXIgJXAiLCBtX3Zpc2libGVUaWxlV2FzaExheWVyLT5wbGF0Zm9ybUxheWVyKCkp
OwpAQCAtMjA1NywyNyArMjA1NywyNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQWNj
ZWxlcmF0ZXNEcmF3aW5nKCkKICAgICBtX2xheWVyLT5zZXRBY2NlbGVyYXRlc0RyYXdpbmcobV9h
Y2NlbGVyYXRlc0RyYXdpbmcpOwogfQogCi1zdGF0aWMgdm9pZCBzZXRMYXllckRlYnVnQm9yZGVy
KFBsYXRmb3JtQ0FMYXllciYgbGF5ZXIsIENvbG9yIGJvcmRlckNvbG9yLCBmbG9hdCBib3JkZXJX
aWR0aCkKK3N0YXRpYyB2b2lkIHNldExheWVyRGVidWdCb3JkZXIoUGxhdGZvcm1DQUxheWVyJiBs
YXllciwgT3B0aW9uYWxSR0JBIGJvcmRlckNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCkKIHsKICAg
ICBsYXllci5zZXRCb3JkZXJDb2xvcihib3JkZXJDb2xvcik7CiAgICAgbGF5ZXIuc2V0Qm9yZGVy
V2lkdGgoYm9yZGVyQ29sb3IuaXNWYWxpZCgpID8gYm9yZGVyV2lkdGggOiAwKTsKIH0KIAogc3Rh
dGljIGNvbnN0IGZsb2F0IGNvbnRlbnRzTGF5ZXJCb3JkZXJXaWR0aCA9IDQ7Ci1zdGF0aWMgQ29s
b3IgY29udGVudHNMYXllckRlYnVnQm9yZGVyQ29sb3IoYm9vbCBzaG93aW5nQm9yZGVycykKK3N0
YXRpYyBPcHRpb25hbFJHQkEgY29udGVudHNMYXllckRlYnVnQm9yZGVyQ29sb3IoYm9vbCBzaG93
aW5nQm9yZGVycykKIHsKLSAgICByZXR1cm4gc2hvd2luZ0JvcmRlcnMgPyBDb2xvcigwLCAwLCAx
MjgsIDE4MCkgOiBDb2xvcigpOworICAgIHJldHVybiBzaG93aW5nQm9yZGVycyA/IE9wdGlvbmFs
UkdCQSgwLCAwLCAxMjgsIDE4MCkgOiBPcHRpb25hbFJHQkEoKTsKIH0KIAogc3RhdGljIGNvbnN0
IGZsb2F0IGNsb25lTGF5ZXJCb3JkZXJXaWR0aCA9IDI7Ci1zdGF0aWMgQ29sb3IgY2xvbmVMYXll
ckRlYnVnQm9yZGVyQ29sb3IoYm9vbCBzaG93aW5nQm9yZGVycykKK3N0YXRpYyBPcHRpb25hbFJH
QkEgY2xvbmVMYXllckRlYnVnQm9yZGVyQ29sb3IoYm9vbCBzaG93aW5nQm9yZGVycykKIHsKLSAg
ICByZXR1cm4gc2hvd2luZ0JvcmRlcnMgPyBDb2xvcigyNTUsIDEyMiwgMjUxKSA6IENvbG9yKCk7
CisgICAgcmV0dXJuIHNob3dpbmdCb3JkZXJzID8gT3B0aW9uYWxSR0JBKDI1NSwgMTIyLCAyNTEp
IDogT3B0aW9uYWxSR0JBKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVEZWJ1
Z0JvcmRlcigpCiB7Ci0gICAgQ29sb3IgYm9yZGVyQ29sb3I7CisgICAgT3B0aW9uYWxSR0JBIGJv
cmRlckNvbG9yOwogICAgIGZsb2F0IHdpZHRoID0gMDsKIAogICAgIGJvb2wgc2hvd0RlYnVnQm9y
ZGVycyA9IGlzU2hvd2luZ0RlYnVnQm9yZGVyKCk7CkBAIC0yMDk0LDEzICsyMDk0LDEzIEBAIHZv
aWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVEZWJ1Z0JvcmRlcigpCiAgICAgfQogCiAgICAgaWYg
KG1fc3RydWN0dXJhbExheWVyQ2xvbmVzKSB7Ci0gICAgICAgIENvbG9yIGNsb25lTGF5ZXJCb3Jk
ZXJDb2xvciA9IGNsb25lTGF5ZXJEZWJ1Z0JvcmRlckNvbG9yKHNob3dEZWJ1Z0JvcmRlcnMpOwor
ICAgICAgICBPcHRpb25hbFJHQkEgY2xvbmVMYXllckJvcmRlckNvbG9yID0gY2xvbmVMYXllckRl
YnVnQm9yZGVyQ29sb3Ioc2hvd0RlYnVnQm9yZGVycyk7CiAgICAgICAgIGZvciAoYXV0byYgY2xv
bmUgOiBtX3N0cnVjdHVyYWxMYXllckNsb25lcy0+dmFsdWVzKCkpCiAgICAgICAgICAgICBzZXRM
YXllckRlYnVnQm9yZGVyKCpjbG9uZSwgY2xvbmVMYXllckJvcmRlckNvbG9yLCBjbG9uZUxheWVy
Qm9yZGVyV2lkdGgpOwogICAgIH0KIAogICAgIGlmIChtX2NvbnRlbnRzTGF5ZXJDbG9uZXMpIHsK
LSAgICAgICAgQ29sb3IgY29udGVudHNMYXllckJvcmRlckNvbG9yID0gY29udGVudHNMYXllckRl
YnVnQm9yZGVyQ29sb3Ioc2hvd0RlYnVnQm9yZGVycyk7CisgICAgICAgIE9wdGlvbmFsUkdCQSBj
b250ZW50c0xheWVyQm9yZGVyQ29sb3IgPSBjb250ZW50c0xheWVyRGVidWdCb3JkZXJDb2xvcihz
aG93RGVidWdCb3JkZXJzKTsKICAgICAgICAgZm9yIChhdXRvJiBjb250ZW50c0xheWVyQ2xvbmUg
OiBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMtPnZhbHVlcygpKQogICAgICAgICAgICAgc2V0TGF5ZXJE
ZWJ1Z0JvcmRlcigqY29udGVudHNMYXllckNsb25lLCBjb250ZW50c0xheWVyQm9yZGVyQ29sb3Is
IGNvbnRlbnRzTGF5ZXJCb3JkZXJXaWR0aCk7CiAgICAgfQpAQCAtMjIyOCw3ICsyMjI4LDcgQEAg
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzUGxhdGZvcm1MYXllcigpCiAKIHZv
aWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c0NvbG9yTGF5ZXIoKQogewotICAgIC8v
IENvbG9yIGxheWVyIHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVyLCBhbmQgd2lsbCBnZXQgcGFy
ZW50ZWQgaW4gdXBkYXRlU3VibGF5ZXJMaXN0KCkuCisgICAgLy8gT3B0aW9uYWxSR0JBIGxheWVy
IHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVyLCBhbmQgd2lsbCBnZXQgcGFyZW50ZWQgaW4gdXBk
YXRlU3VibGF5ZXJMaXN0KCkuCiAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIgfHwgbV9jb250ZW50
c0xheWVyUHVycG9zZSAhPSBDb250ZW50c0xheWVyRm9yQmFja2dyb3VuZENvbG9yKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTMyMzQsMTggKzMyMzQsMTggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6
OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNob3dDb3VudGVyKQogICAgIG5vdGVMYXllclBy
b3BlcnR5Q2hhbmdlZChEZWJ1Z0luZGljYXRvcnNDaGFuZ2VkKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnNldERlYnVnQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3Zv
aWQgR3JhcGhpY3NMYXllckNBOjpzZXREZWJ1Z0JhY2tncm91bmRDb2xvcihjb25zdCBPcHRpb25h
bFJHQkEmIGNvbG9yKQogeyAgICAKICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKQogICAgICAgICBt
X2xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOwogICAgIGVsc2UKLSAgICAgICAgbV9s
YXllci0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgICAgIG1f
bGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihPcHRpb25hbFJHQkE6OnRyYW5zcGFyZW50KTsKIH0K
IAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OmdldERlYnVnQm9yZGVySW5mbyhDb2xvciYgY29sb3Is
IGZsb2F0JiB3aWR0aCkgY29uc3QKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpnZXREZWJ1Z0JvcmRl
ckluZm8oT3B0aW9uYWxSR0JBJiBjb2xvciwgZmxvYXQmIHdpZHRoKSBjb25zdAogewogICAgIGlm
IChpc1BhZ2VUaWxlZEJhY2tpbmdMYXllcigpKSB7Ci0gICAgICAgIGNvbG9yID0gQ29sb3IoMCwg
MCwgMTI4LCAxMjgpOyAvLyB0aWxlIGNhY2hlIGxheWVyOiBkYXJrIGJsdWUKKyAgICAgICAgY29s
b3IgPSBPcHRpb25hbFJHQkEoMCwgMCwgMTI4LCAxMjgpOyAvLyB0aWxlIGNhY2hlIGxheWVyOiBk
YXJrIGJsdWUKICAgICAgICAgd2lkdGggPSAwLjU7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0zMzExLDcgKzMzMTEsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZHVtcEFkZGl0aW9uYWxQ
cm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRleHRTdHJlYW0sIGludCBpbmRlbgogICAgIH0KIH0KIAot
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwg
ZmxvYXQgYm9yZGVyV2lkdGgpCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0RGVidWdCb3JkZXIo
Y29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvciwgZmxvYXQgYm9yZGVyV2lkdGgpCiB7CiAgICAgc2V0
TGF5ZXJEZWJ1Z0JvcmRlcigqbV9sYXllciwgY29sb3IsIGJvcmRlcldpZHRoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmgKaW5kZXggZjdkOWFmMDcxYjQwNDI5YmQwNDkzYWQ1OGUxZTZhM2M4YTEwNmY1My4uM2ExNzRj
YmE0MjkwZDY5OWVhNzliNDdlYjQ3ZTMwNGM2NDJhNWFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTkxLDcg
KzkxLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRDb250
ZW50c1Zpc2libGUoYm9vbCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIHNldEFjY2VsZXJhdGVzRHJhd2luZyhib29sKSBvdmVycmlkZTsKIAotICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVy
cmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZENvbG9y
KGNvbnN0IE9wdGlvbmFsUkdCQSYpIG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIHNldENvbnRlbnRzT3BhcXVlKGJvb2wpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCkgb3ZlcnJpZGU7
CkBAIC0xMzIsMTUgKzEzMiwxNSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCBQbGF0Zm9ybUxheWVyKiBjb250ZW50c0xheWVyRm9yTWVkaWEoKSBjb25zdCBvdmVycmlkZTsK
ICNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvUGxh
dGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRl
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xv
cihjb25zdCBDb2xvciYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmKSBvdmVycmlkZTsK
IAogICAgIHZpcnR1YWwgYm9vbCB1c2VzQ29udGVudHNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fY29udGVudHNMYXllclB1cnBvc2UgIT0gTm9Db250ZW50c0xheWVyOyB9CiAgICAg
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcihib29s
KSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0U2hvd1JlcGFp
bnRDb3VudGVyKGJvb2wpIG92ZXJyaWRlOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIHNldERlYnVnQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiwg
ZmxvYXQgYm9yZGVyV2lkdGgpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCBzZXREZWJ1Z0JhY2tncm91bmRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmKSBvdmVycmlk
ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCb3JkZXIoY29uc3Qg
T3B0aW9uYWxSR0JBJiwgZmxvYXQgYm9yZGVyV2lkdGgpIG92ZXJyaWRlOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldEN1c3RvbUFwcGVhcmFuY2UoQ3VzdG9tQXBwZWFyYW5j
ZSkgb3ZlcnJpZGU7CiAKQEAgLTI3Miw3ICsyNzIsNyBAQCBwcml2YXRlOgogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCBib29sIGNhblRocm90dGxlTGF5ZXJGbHVzaCgpIGNvbnN0IG92ZXJy
aWRlOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGdldERlYnVnQm9yZGVySW5m
byhDb2xvciYsIGZsb2F0JiB3aWR0aCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIGdldERlYnVnQm9yZGVySW5mbyhPcHRpb25hbFJHQkEmLCBmbG9hdCYg
d2lkdGgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBk
dW1wQWRkaXRpb25hbFByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQsIExheWVyVHJl
ZUFzVGV4dEJlaGF2aW9yKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgY29tcHV0ZVBpeGVs
QWxpZ25tZW50KGZsb2F0IGNvbnRlbnRzU2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9u
UmVsYXRpdmVUb0Jhc2UsCkBAIC01MjIsNyArNTIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
aXNWaWV3cG9ydENvbnN0cmFpbmVkIDogMTsKICAgICBib29sIG1faW50ZXJzZWN0c0NvdmVyYWdl
UmVjdCA6IDE7CiAKLSAgICBDb2xvciBtX2NvbnRlbnRzU29saWRDb2xvcjsKKyAgICBPcHRpb25h
bFJHQkEgbV9jb250ZW50c1NvbGlkQ29sb3I7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
bV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2U7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1f
cGVuZGluZ0NvbnRlbnRzSW1hZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmgKaW5kZXggZWFkZDExN2Y2MjE5
OTQxYTNhODg5ZjA0YTkwZDQyMzViMGUzMThmMi4uZjNhZTA5OWRiNDMwZDdmOWI1NGNlOGRhN2Qw
NTFjZTRlNzIzMzE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaApAQCAtOTMsMTQgKzkzLDE0IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbVZhbHVlKGZsb2F0KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbVZhbHVlKGNvbnN0IEZsb2F0UG9pbnQz
RCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbVZhbHVlKGNvbnN0IFdlYkNvcmU6OkNv
bG9yJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3QgV2ViQ29yZTo6
T3B0aW9uYWxSR0JBJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3Qg
RmlsdGVyT3BlcmF0aW9uKiwgaW50IGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBjb3B5RnJvbVZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0
aW9uJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldFRvVmFsdWUoZmxvYXQpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBGbG9hdFBvaW50
M0QmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6Q29s
b3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6T3B0
aW9uYWxSR0JBJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IEZpbHRl
ck9wZXJhdGlvbiosIGludCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgY29weVRvVmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mKSA9
IDA7CiAKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZh
bHVlcyhjb25zdCBWZWN0b3I8ZmxvYXQ+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1
ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4PiYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxGbG9hdFBvaW50M0Q+JikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbG9y
PiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpPcHRpb25hbFJHQkE+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZXMoY29uc3Qg
VmVjdG9yPFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+PiYsIGludCBpbnRlcm5hbEZpbHRlclByb3Bl
cnR5SW5kZXgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29weVZhbHVlc0Zyb20oY29uc3QgUGxh
dGZvcm1DQUFuaW1hdGlvbiYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAppbmRleCAxNjNlM2MzNGE2OWRhYmI0
NzZlNDM0YWViZjM3NjcyYmMxMGFlMjFmLi44NTI4MjY0MjVmZmMzZjYyZGM2YzZkZTgwYzRlZDZj
NzRhMWQwZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaApAQCAtMTgzLDEyICsxODMsMTIgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzZXRNaW5pZmljYXRpb25GaWx0ZXIoRmlsdGVyVHlwZSkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRNYWduaWZpY2F0aW9uRmlsdGVyKEZpbHRlclR5cGUpID0gMDsKIAot
ICAgIHZpcnR1YWwgQ29sb3IgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKSA9IDA7CisgICAgdmlydHVh
bCBPcHRpb25hbFJHQkEgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJikgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIHNldEJvcmRlcldpZHRoKGZsb2F0KSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0Qm9yZGVyQ29sb3IoY29uc3QgQ29sb3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dEJvcmRlckNvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYpID0gMDsKIAogICAgIHZpcnR1YWwgZmxv
YXQgb3BhY2l0eSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhY2l0eShmbG9h
dCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
VGlsZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
VGlsZUNvbnRyb2xsZXIuY3BwCmluZGV4IGU4MDc1ZDI4M2M5NWQyMWRkOTc2YTAxM2JhZDYzMzhl
NTlhYTJiZjQuLjczMDU5YzQ3ZmUzNmYwYWQxZjFhZGJkZjE5NzIzYWY1NDVmNjQyMTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJv
bGxlci5jcHAKQEAgLTI3OCw3ICsyNzgsNyBAQCB2b2lkIFRpbGVDb250cm9sbGVyOjpzZXRUaWxl
RGVidWdCb3JkZXJXaWR0aChmbG9hdCBib3JkZXJXaWR0aCkKICAgICB0aWxlR3JpZCgpLnVwZGF0
ZVRpbGVMYXllclByb3BlcnRpZXMoKTsKIH0KIAotdm9pZCBUaWxlQ29udHJvbGxlcjo6c2V0VGls
ZURlYnVnQm9yZGVyQ29sb3IoQ29sb3IgYm9yZGVyQ29sb3IpCit2b2lkIFRpbGVDb250cm9sbGVy
OjpzZXRUaWxlRGVidWdCb3JkZXJDb2xvcihPcHRpb25hbFJHQkEgYm9yZGVyQ29sb3IpCiB7CiAg
ICAgaWYgKG1fdGlsZURlYnVnQm9yZGVyQ29sb3IgPT0gYm9yZGVyQ29sb3IpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Rp
bGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxl
Q29udHJvbGxlci5oCmluZGV4IGM0MTc3ODNkNjRlMzRjOGRjN2Q0ODY3NGRmNzViOWNhZGQ3YmM5
MDMuLjMxOTRlNWI1Yjk2Yzc0MDNhNzY0YmM1MDk0MDE3N2VlZDYzZWQ2MWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaApA
QCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgUGxhdGZvcm1DQUxheWVyJiByb290
TGF5ZXIoKSBjb25zdCB7IHJldHVybiAqbV90aWxlQ2FjaGVMYXllcjsgfQogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRUaWxlRGVidWdCb3JkZXJXaWR0aChmbG9hdCk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRUaWxlRGVidWdCb3JkZXJDb2xvcihDb2xvcik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRUaWxlRGVidWdCb3JkZXJDb2xvcihPcHRpb25hbFJHQkEpOwogCiAg
ICAgdmlydHVhbCBGbG9hdFJlY3QgdmlzaWJsZVJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3Zpc2libGVSZWN0OyB9CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgY292ZXJhZ2VSZWN0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb3ZlcmFnZVJlY3Q7IH0KQEAgLTkxLDcgKzkxLDcg
QEAgcHVibGljOgogCiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVy
biBtX2RldmljZVNjYWxlRmFjdG9yOyB9CiAKLSAgICBDb2xvciB0aWxlRGVidWdCb3JkZXJDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZURlYnVnQm9yZGVyQ29sb3I7IH0KKyAgICBPcHRpb25h
bFJHQkEgdGlsZURlYnVnQm9yZGVyQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3RpbGVEZWJ1Z0Jv
cmRlckNvbG9yOyB9CiAgICAgZmxvYXQgdGlsZURlYnVnQm9yZGVyV2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX3RpbGVEZWJ1Z0JvcmRlcldpZHRoOyB9CiAgICAgU2Nyb2xsaW5nTW9kZUluZGljYXRp
b24gaW5kaWNhdG9yTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kaWNhdG9yTW9kZTsgfQogCkBA
IC0yMDIsNyArMjAyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdGlsZXNBcmVPcGFxdWU7CiAg
ICAgYm9vbCBtX2hhc1RpbGVzV2l0aFRlbXBvcmFyeVNjYWxlRmFjdG9yOyAvLyBVc2VkIHRvIG1h
a2UgbG93LXJlcyB0aWxlcyB3aGVuIHpvb21pbmcuCiAKLSAgICBDb2xvciBtX3RpbGVEZWJ1Z0Jv
cmRlckNvbG9yOworICAgIE9wdGlvbmFsUkdCQSBtX3RpbGVEZWJ1Z0JvcmRlckNvbG9yOwogICAg
IGZsb2F0IG1fdGlsZURlYnVnQm9yZGVyV2lkdGg7CiAgICAgU2Nyb2xsaW5nTW9kZUluZGljYXRp
b24gbV9pbmRpY2F0b3JNb2RlOwogICAgIGZsb2F0IG1fdG9wQ29udGVudEluc2V0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb3ZlcmFnZU1h
cC5jcHAKaW5kZXggOGNkYmNlOWM3ZGVhOWYwNDFkNmY4MTYyZmMzMjEwYzNlNDdlYTFlZi4uODU2
MTBlNGYyY2Q5ZjQzMjY2NGExYTU4NTU2MDE3NjBhZmQxMjFjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VNYXAuY3BwCkBA
IC00MSwxOCArNDEsMTggQEAgVGlsZUNvdmVyYWdlTWFwOjpUaWxlQ292ZXJhZ2VNYXAoY29uc3Qg
VGlsZUNvbnRyb2xsZXImIGNvbnRyb2xsZXIpCiB7CiAgICAgbV9sYXllci5nZXQoKS5zZXRPcGFj
aXR5KDAuNzUpOwogICAgIG1fbGF5ZXIuZ2V0KCkuc2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNE
KCkpOwotICAgIG1fbGF5ZXIuZ2V0KCkuc2V0Qm9yZGVyQ29sb3IoQ29sb3I6OmJsYWNrKTsKKyAg
ICBtX2xheWVyLmdldCgpLnNldEJvcmRlckNvbG9yKE9wdGlvbmFsUkdCQTo6YmxhY2spOwogICAg
IG1fbGF5ZXIuZ2V0KCkuc2V0Qm9yZGVyV2lkdGgoMSk7CiAgICAgbV9sYXllci5nZXQoKS5zZXRQ
b3NpdGlvbihGbG9hdFBvaW50KDIsIDIpKTsKICAgICBtX2xheWVyLmdldCgpLnNldENvbnRlbnRz
U2NhbGUobV9jb250cm9sbGVyLmRldmljZVNjYWxlRmFjdG9yKCkpOwogCiAgICAgbV92aXNpYmxl
UmVjdEluZGljYXRvckxheWVyLmdldCgpLnNldEJvcmRlcldpZHRoKDIpOwogICAgIG1fdmlzaWJs
ZVJlY3RJbmRpY2F0b3JMYXllci5nZXQoKS5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7
Ci0gICAgbV92aXNpYmxlUmVjdEluZGljYXRvckxheWVyLmdldCgpLnNldEJvcmRlckNvbG9yKENv
bG9yKDI1NSwgMCwgMCkpOworICAgIG1fdmlzaWJsZVJlY3RJbmRpY2F0b3JMYXllci5nZXQoKS5z
ZXRCb3JkZXJDb2xvcihPcHRpb25hbFJHQkEoMjU1LCAwLCAwKSk7CiAgICAgCiAgICAgbV9jb3Zl
cmFnZVJlY3RJbmRpY2F0b3JMYXllci5nZXQoKS5zZXRCb3JkZXJXaWR0aCgyKTsKICAgICBtX2Nv
dmVyYWdlUmVjdEluZGljYXRvckxheWVyLmdldCgpLnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQz
RCgpKTsKLSAgICBtX2NvdmVyYWdlUmVjdEluZGljYXRvckxheWVyLmdldCgpLnNldEJvcmRlckNv
bG9yKENvbG9yKDAsIDAsIDEyOCkpOworICAgIG1fY292ZXJhZ2VSZWN0SW5kaWNhdG9yTGF5ZXIu
Z2V0KCkuc2V0Qm9yZGVyQ29sb3IoT3B0aW9uYWxSR0JBKDAsIDAsIDEyOCkpOwogCiAgICAgbV9s
YXllci5nZXQoKS5hcHBlbmRTdWJsYXllcihtX2NvdmVyYWdlUmVjdEluZGljYXRvckxheWVyKTsK
ICAgICBtX2xheWVyLmdldCgpLmFwcGVuZFN1YmxheWVyKG1fdmlzaWJsZVJlY3RJbmRpY2F0b3JM
YXllcik7CkBAIC05OSwxNiArOTksMTYgQEAgdm9pZCBUaWxlQ292ZXJhZ2VNYXA6OnVwZGF0ZSgp
CiAgICAgbV9jb3ZlcmFnZVJlY3RJbmRpY2F0b3JMYXllci0+c2V0UG9zaXRpb24oY292ZXJhZ2VS
ZWN0LmxvY2F0aW9uKCkpOwogICAgIG1fY292ZXJhZ2VSZWN0SW5kaWNhdG9yTGF5ZXItPnNldEJv
dW5kcyhGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBjb3ZlcmFnZVJlY3Quc2l6ZSgpKSk7CiAKLSAg
ICBDb2xvciB2aXNpYmxlUmVjdEluZGljYXRvckNvbG9yOworICAgIE9wdGlvbmFsUkdCQSB2aXNp
YmxlUmVjdEluZGljYXRvckNvbG9yOwogICAgIHN3aXRjaCAobV9jb250cm9sbGVyLmluZGljYXRv
ck1vZGUoKSkgewogICAgIGNhc2UgU3luY2hyb25vdXNTY3JvbGxpbmdCZWNhdXNlT2ZTdHlsZUlu
ZGljYXRpb246Ci0gICAgICAgIHZpc2libGVSZWN0SW5kaWNhdG9yQ29sb3IgPSBDb2xvcigyNTUs
IDAsIDApOworICAgICAgICB2aXNpYmxlUmVjdEluZGljYXRvckNvbG9yID0gT3B0aW9uYWxSR0JB
KDI1NSwgMCwgMCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3luY2hyb25vdXNTY3JvbGxp
bmdCZWNhdXNlT2ZFdmVudEhhbmRsZXJzSW5kaWNhdGlvbjoKLSAgICAgICAgdmlzaWJsZVJlY3RJ
bmRpY2F0b3JDb2xvciA9IENvbG9yKDI1NSwgMjU1LCAwKTsKKyAgICAgICAgdmlzaWJsZVJlY3RJ
bmRpY2F0b3JDb2xvciA9IE9wdGlvbmFsUkdCQSgyNTUsIDI1NSwgMCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQXN5bmNTY3JvbGxpbmdJbmRpY2F0aW9uOgotICAgICAgICB2aXNpYmxlUmVj
dEluZGljYXRvckNvbG9yID0gQ29sb3IoMCwgMjAwLCAwKTsKKyAgICAgICAgdmlzaWJsZVJlY3RJ
bmRpY2F0b3JDb2xvciA9IE9wdGlvbmFsUkdCQSgwLCAyMDAsIDApOwogICAgICAgICBicmVhazsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVH
cmlkLmNwcAppbmRleCA1NjdiMWE1YTA1OTI3YTA5ZTU0YmE3NDU3OTBmODYxZjZkODI5NTVlLi4x
NTljOWQwOTEzZTlkZTE0ZjllNjQ0MmM4NzMxYjAxMDAyODViZmQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3BwCkBAIC0xNzMsNyArMTcz
LDcgQEAgdm9pZCBUaWxlR3JpZDo6dXBkYXRlVGlsZUxheWVyUHJvcGVydGllcygpCiB7CiAgICAg
Ym9vbCBhY2NlbGVyYXRlc0RyYXdpbmcgPSBtX2NvbnRyb2xsZXIuYWNjZWxlcmF0ZXNEcmF3aW5n
KCk7CiAgICAgYm9vbCBvcGFxdWUgPSBtX2NvbnRyb2xsZXIudGlsZXNBcmVPcGFxdWUoKTsKLSAg
ICBDb2xvciB0aWxlRGVidWdCb3JkZXJDb2xvciA9IG1fY29udHJvbGxlci50aWxlRGVidWdCb3Jk
ZXJDb2xvcigpOworICAgIE9wdGlvbmFsUkdCQSB0aWxlRGVidWdCb3JkZXJDb2xvciA9IG1fY29u
dHJvbGxlci50aWxlRGVidWdCb3JkZXJDb2xvcigpOwogICAgIGZsb2F0IHRpbGVEZWJ1Z0JvcmRl
cldpZHRoID0gbV9jb250cm9sbGVyLnRpbGVEZWJ1Z0JvcmRlcldpZHRoKCk7CiAKICAgICBmb3Ig
KFRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdpbigpLCBlbmQgPSBtX3Rp
bGVzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1h
dGlvbkNvY29hLmgKaW5kZXggYWRhMzhkZmI3YjRkYzNiYmZkY2Y2MjBmOWIxMzE1YjI2Zjg5MmEx
NC4uZDNiYzQxZGQwZDQ2YzE0OGY1ZTc1YmVjMTdiMDUxN2RjNGEzZmE4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUFuaW1h
dGlvbkNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmgKQEAgLTk4LDE0ICs5OCwxNCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldEZyb21WYWx1ZShmbG9hdCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNldEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3QgRmxvYXRQ
b2ludDNEJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEZyb21WYWx1ZShjb25zdCBX
ZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9tVmFsdWUo
Y29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHNldEZyb21WYWx1ZShjb25zdCBGaWx0ZXJPcGVyYXRpb24qLCBpbnQgaW50ZXJuYWxGaWx0ZXJQ
cm9wZXJ0eUluZGV4KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY29weUZyb21WYWx1ZUZy
b20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2
b2lkIHNldFRvVmFsdWUoZmxvYXQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUb1Zh
bHVlKGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29uc3QgRmxvYXRQb2ludDNEJikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJH
QkEmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBGaWx0ZXJP
cGVyYXRpb24qLCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgY29weVRvVmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24m
KSBvdmVycmlkZTsKIApAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJp
eD4mKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxG
bG9hdFBvaW50M0Q+Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlcyhjb25z
dCBWZWN0b3I8V2ViQ29yZTo6Q29sb3I+Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNl
dFZhbHVlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6T3B0aW9uYWxSR0JBPiYpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxGaWx0ZXJPcGVy
YXRpb24+PiYsIGludCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBjb3B5VmFsdWVzRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJikg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5tbQppbmRl
eCAzZDQ2MzUxZjYyYzk3ZGEyMzUyOTNmMGU2ZDc0NDQzNDNjOTkxMTNkLi5iNGJkNWMwODVmMGYy
ODI5ZDlmM2Y4ZTNhNmQwMGExMmVlMzMwMmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUFu
aW1hdGlvbkNvY29hLm1tCkBAIC0zNzIsNyArMzcyLDcgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0
aW9uQ29jb2E6OnNldEZyb21WYWx1ZShjb25zdCBGbG9hdFBvaW50M0QmIHZhbHVlKQogICAgIFtz
dGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldEZyb21W
YWx1ZTphcnJheV07CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hOjpzZXRGcm9t
VmFsdWUoY29uc3QgV2ViQ29yZTo6Q29sb3ImIHZhbHVlKQordm9pZCBQbGF0Zm9ybUNBQW5pbWF0
aW9uQ29jb2E6OnNldEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmIHZhbHVl
KQogewogICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCiAgICAgICAgIHJldHVybjsK
QEAgLTQyOSw3ICs0MjksNyBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0VG9W
YWx1ZShjb25zdCBGbG9hdFBvaW50M0QmIHZhbHVlKQogICAgIFtzdGF0aWNfY2FzdDxDQUJhc2lj
QW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFRvVmFsdWU6YXJyYXldOwogfQogCi12
b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpD
b2xvciYgdmFsdWUpCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0VG9WYWx1ZShj
b25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmIHZhbHVlKQogewogICAgIGlmIChhbmltYXRpb25U
eXBlKCkgIT0gQmFzaWMpCiAgICAgICAgIHJldHVybjsKQEAgLTUwMiw3ICs1MDIsNyBAQCB2b2lk
IFBsYXRmb3JtQ0FBbmltYXRpb25Db2NvYTo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxGbG9hdFBv
aW50M0Q+JiB2YWx1ZSkKICAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KG1f
YW5pbWF0aW9uLmdldCgpKSBzZXRWYWx1ZXM6YXJyYXldOwogfQogCi12b2lkIFBsYXRmb3JtQ0FB
bmltYXRpb25Db2NvYTo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb2xvcj4mIHZh
bHVlKQordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2E6OnNldFZhbHVlcyhjb25zdCBWZWN0
b3I8V2ViQ29yZTo6T3B0aW9uYWxSR0JBPiYgdmFsdWUpCiB7CiAgICAgaWYgKGFuaW1hdGlvblR5
cGUoKSAhPSBLZXlmcmFtZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FG
aWx0ZXJzQ29jb2EubW0KaW5kZXggZmU1YWU5NWY3MjAzMDYwMWViMjI3N2I1N2Q5YWY1M2NlZDkx
ZmM3ZS4uYWIzZjUzYTlkYWVlOTlmYzRkNGNmZDBhZGEwMTBiNTU4ZGI2NWRhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZp
bHRlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBRmlsdGVyc0NvY29hLm1tCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBQ
bGF0Zm9ybUNBRmlsdGVyczo6c2V0RmlsdGVyc09uTGF5ZXIoUGxhdGZvcm1MYXllciogbGF5ZXIs
IGNvbnN0IEZpbHRlck9wZXIKICAgICAgICAgICAgIENJRmlsdGVyKiBmaWx0ZXIgPSBbQ0lGaWx0
ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSUNvbG9yTW9ub2Nocm9tZSJdOwogICAgICAgICAgICAgW2Zp
bHRlciBzZXREZWZhdWx0c107CiAgICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltOU051bWJl
ciBudW1iZXJXaXRoRmxvYXQ6Y29sb3JNYXRyaXhPcGVyYXRpb24uYW1vdW50KCldIGZvcktleTpA
ImlucHV0SW50ZW5zaXR5Il07Ci0gICAgICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltDSUNvbG9y
IGNvbG9yV2l0aFJlZDowLjY3IGdyZWVuOjAuNjcgYmx1ZTowLjY3XSBmb3JLZXk6QCJpbnB1dENv
bG9yIl07IC8vIENvbG9yIGRlcml2ZWQgZW1waXJpY2FsbHkgdG8gbWF0Y2ggemVybyBzYXR1cmF0
aW9uIGxldmVscy4KKyAgICAgICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6W0NJQ29sb3IgY29sb3JX
aXRoUmVkOjAuNjcgZ3JlZW46MC42NyBibHVlOjAuNjddIGZvcktleTpAImlucHV0Q29sb3IiXTsg
Ly8gT3B0aW9uYWxSR0JBIGRlcml2ZWQgZW1waXJpY2FsbHkgdG8gbWF0Y2ggemVybyBzYXR1cmF0
aW9uIGxldmVscy4KICAgICAgICAgICAgIFtmaWx0ZXIgc2V0TmFtZTpmaWx0ZXJOYW1lXTsKICAg
ICAgICAgICAgIFthcnJheS5nZXQoKSBhZGRPYmplY3Q6ZmlsdGVyXTsKICAgICAgICAgICAgIGJy
ZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKaW5kZXggMWNiZjQ0MmYyYjdiMjk4
NDhlOWE3YzQ0NGI2N2Y1YTU4YjM4MzU3Ni4uNmJkMzFiZWFjY2MxMjk5Yjk2OWQ5M2IyNGNlN2Iz
ODYxODNlY2M4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCkBAIC0xMTEsMTIg
KzExMSwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE1pbmlmaWNhdGlvbkZpbHRl
cihGaWx0ZXJUeXBlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFnbmlmaWNhdGlv
bkZpbHRlcihGaWx0ZXJUeXBlKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgQ29sb3IgYmFja2dy
b3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91
bmRDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JB
IGJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRC
YWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0
dWFsIHZvaWQgc2V0Qm9yZGVyV2lkdGgoZmxvYXQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2
b2lkIHNldEJvcmRlckNvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIHNldEJvcmRlckNvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYpIG92ZXJyaWRlOwogCiAgICAg
dmlydHVhbCBmbG9hdCBvcGFjaXR5KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHNldE9wYWNpdHkoZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2Nv
YS5tbQppbmRleCBlN2FhMmIzM2U1NjA4YjQwOGM5MDgxODM3YjU1NzgxNzk2NTExMWRhLi41ZDVh
NmZiMWUwMmRmMjYxMzA0ZjUxYjMxYTVkNThkY2QyZDYwMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBTGF5ZXJDb2NvYS5tbQpAQCAtNjk0LDEyICs2OTQsMTIgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6c2V0TWFnbmlmaWNhdGlvbkZpbHRlcihGaWx0ZXJUeXBlIHZhbHVlKQogICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIAotQ29sb3IgUGxhdGZvcm1DQUxheWVyQ29jb2E6
OmJhY2tncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUGxhdGZvcm1DQUxheWVyQ29j
b2E6OmJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFttX2xheWVyIGJhY2tn
cm91bmRDb2xvcl07CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldEJhY2tncm91
bmRDb2xvcihjb25zdCBDb2xvciYgdmFsdWUpCit2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpz
ZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiB2YWx1ZSkKIHsKICAgICBDR0Zs
b2F0IGNvbXBvbmVudHNbNF07CiAgICAgdmFsdWUuZ2V0UkdCQShjb21wb25lbnRzWzBdLCBjb21w
b25lbnRzWzFdLCBjb21wb25lbnRzWzJdLCBjb21wb25lbnRzWzNdKTsKQEAgLTcxOSw3ICs3MTks
NyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRCb3JkZXJXaWR0aChmbG9hdCB2YWx1
ZSkKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKLXZvaWQgUGxhdGZvcm1DQUxh
eWVyQ29jb2E6OnNldEJvcmRlckNvbG9yKGNvbnN0IENvbG9yJiB2YWx1ZSkKK3ZvaWQgUGxhdGZv
cm1DQUxheWVyQ29jb2E6OnNldEJvcmRlckNvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgdmFsdWUp
CiB7CiAgICAgaWYgKHZhbHVlLmlzVmFsaWQoKSkgewogICAgICAgICBDR0Zsb2F0IGNvbXBvbmVu
dHNbNF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCmluZGV4IDEyMjFjMzhlY2Y2
NGUwNWQwMjA4NmE1YjVlYjUzZGMxY2U4MjY1ODMuLjJkOGMyYzFmNDlkZmY5NjkyZTkyMWQ1YjQ3
ZTQ5ZjRhMzEwZjQ5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCkBAIC0x
MzcsNyArMTM3LDcgQEAgLSAodm9pZClpbnZhbGlkYXRlCiAKIC0gKHZvaWQpc2V0Qm9yZGVyQ29s
b3I6KENHQ29sb3JSZWYpYm9yZGVyQ29sb3IKIHsKLSAgICBfdGlsZUNvbnRyb2xsZXItPnNldFRp
bGVEZWJ1Z0JvcmRlckNvbG9yKENvbG9yKGJvcmRlckNvbG9yKSk7CisgICAgX3RpbGVDb250cm9s
bGVyLT5zZXRUaWxlRGVidWdCb3JkZXJDb2xvcihPcHRpb25hbFJHQkEoYm9yZGVyQ29sb3IpKTsK
IH0KIAogLSAodm9pZClzZXRCb3JkZXJXaWR0aDooQ0dGbG9hdClib3JkZXJXaWR0aApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FB
bmltYXRpb25XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwCmluZGV4IDYyYTI0ZmMwN2MxMDQ1NjcxNzJkZDY5
ODg0NDQyNmI2NjE1Y2ViYzQuLjEwYzBiZDA1ODQ1YmMwZDYzZmEyMTUwMDhiYzA3MjU1NzNmNDQw
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9Q
bGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKQEAgLTM2NCw3ICszNjQs
NyBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OnNldEZyb21WYWx1ZShjb25zdCBGbG9h
dFBvaW50M0QmIHZhbHVlKQogICAgIENBQ0ZBbmltYXRpb25TZXRGcm9tVmFsdWUobV9hbmltYXRp
b24uZ2V0KCksIHYuZ2V0KCkpOwogfQogCi12b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OnNl
dEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpDb2xvciYgdmFsdWUpCit2b2lkIFBsYXRmb3JtQ0FB
bmltYXRpb25XaW46OnNldEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmIHZh
bHVlKQogewogICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCiAgICAgICAgIHJldHVy
bjsKQEAgLTQxNSw3ICs0MTUsNyBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OnNldFRv
VmFsdWUoY29uc3QgRmxvYXRQb2ludDNEJiB2YWx1ZSkKICAgICBDQUNGQW5pbWF0aW9uU2V0VG9W
YWx1ZShtX2FuaW1hdGlvbi5nZXQoKSwgdi5nZXQoKSk7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUFu
aW1hdGlvbldpbjo6c2V0VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpDb2xvciYgdmFsdWUpCit2b2lk
IFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OnNldFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6T3B0aW9u
YWxSR0JBJiB2YWx1ZSkKIHsKICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljKQogICAg
ICAgICByZXR1cm47CkBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9u
V2luOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPEZsb2F0UG9pbnQzRD4mIHZhbHVlKQogICAgIENB
Q0ZBbmltYXRpb25TZXRWYWx1ZXMobV9hbmltYXRpb24uZ2V0KCksIGFycmF5LmdldCgpKTsKIH0K
IAotdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkNvbG9yPiYgdmFsdWUpCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OnNldFZh
bHVlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6T3B0aW9uYWxSR0JBPiYgdmFsdWUpCiB7CiAgICAg
aWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FB
bmltYXRpb25XaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9Q
bGF0Zm9ybUNBQW5pbWF0aW9uV2luLmgKaW5kZXggNDk2NWI4MzliZTVmYTNkNjg1MDFkZGUwN2Yy
OTEwN2RhYmM2NGVjNy4uYmM3NmRiM2ZiMTA4OTg2NTg0YWRkZGYyOTBlZWFiMmI0ZmFjNzI2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRm
b3JtQ0FBbmltYXRpb25XaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5oCkBAIC04OCwxNCArODgsMTQgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9tVmFsdWUoZmxvYXQpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25N
YXRyaXgmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbVZhbHVlKGNvbnN0IEZs
b2F0UG9pbnQzRCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9tVmFsdWUoY29u
c3QgV2ViQ29yZTo6Q29sb3ImKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbVZh
bHVlKGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRGcm9tVmFsdWUoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiwgaW50IGludGVybmFsRmls
dGVyUHJvcGVydHlJbmRleCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvcHlGcm9tVmFs
dWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mKSBvdmVycmlkZTsKIAogICAgIHZpcnR1
YWwgdm9pZCBzZXRUb1ZhbHVlKGZsb2F0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IEZsb2F0UG9pbnQzRCYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6T3B0aW9u
YWxSR0JBJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29uc3QgRmls
dGVyT3BlcmF0aW9uKiwgaW50IGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIGNvcHlUb1ZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0
aW9uJikgb3ZlcnJpZGU7CiAKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8ZmxvYXQ+Jikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25N
YXRyaXg+Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0
b3I8RmxvYXRQb2ludDNEPiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZXMo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbG9yPiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6Ok9wdGlvbmFsUkdCQT4mKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8RmlsdGVy
T3BlcmF0aW9uPj4mLCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgY29weVZhbHVlc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlv
biYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDQ1NjkyY2Zi
YWE4YjBiMzUxZjYwYzBlMjljNzRmNmIxYzM3OWQ4MzMuLjEzNWQzMDlkZmI1NTVkMmRiMzg3ZjI3
ZTZiN2Y5MGUwZGI1ZTQ0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC01MDcs
MTIgKzUwNywxMiBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcldpbjo6c2V0TWFnbmlmaWNhdGlvbkZp
bHRlcihGaWx0ZXJUeXBlIHZhbHVlKQogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKLUNvbG9y
IFBsYXRmb3JtQ0FMYXllcldpbjo6YmFja2dyb3VuZENvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdC
QSBQbGF0Zm9ybUNBTGF5ZXJXaW46OmJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIENBQ0ZMYXllckdldEJhY2tncm91bmRDb2xvcihtX2xheWVyLmdldCgpKTsKIH0KIAotdm9p
ZCBQbGF0Zm9ybUNBTGF5ZXJXaW46OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgdmFs
dWUpCit2b2lkIFBsYXRmb3JtQ0FMYXllcldpbjo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IE9w
dGlvbmFsUkdCQSYgdmFsdWUpCiB7CiAgICAgQ0dGbG9hdCBjb21wb25lbnRzWzRdOwogICAgIHZh
bHVlLmdldFJHQkEoY29tcG9uZW50c1swXSwgY29tcG9uZW50c1sxXSwgY29tcG9uZW50c1syXSwg
Y29tcG9uZW50c1szXSk7CkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJX
aW46OnNldEJvcmRlcldpZHRoKGZsb2F0IHZhbHVlKQogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9
CiAKLXZvaWQgUGxhdGZvcm1DQUxheWVyV2luOjpzZXRCb3JkZXJDb2xvcihjb25zdCBDb2xvciYg
dmFsdWUpCit2b2lkIFBsYXRmb3JtQ0FMYXllcldpbjo6c2V0Qm9yZGVyQ29sb3IoY29uc3QgT3B0
aW9uYWxSR0JBJiB2YWx1ZSkKIHsKICAgICBDR0Zsb2F0IGNvbXBvbmVudHNbNF07CiAgICAgdmFs
dWUuZ2V0UkdCQShjb21wb25lbnRzWzBdLCBjb21wb25lbnRzWzFdLCBjb21wb25lbnRzWzJdLCBj
b21wb25lbnRzWzNdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaAppbmRleCA2YzU3NWU2MTE2MmZk
M2E4ZWEyMWVlYTg0M2M3YTYyYjQ0MDc3YWI1Li5mMWYyYTRkYzI0OTgyZWE5NDA1ZDc3NGRkODEw
ZTVlNmY2N2M4NWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5oCkBAIC0xMDIsMTIgKzEwMiwx
MiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE1pbmlmaWNhdGlvbkZpbHRlcihGaWx0
ZXJUeXBlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFnbmlmaWNhdGlvbkZpbHRl
cihGaWx0ZXJUeXBlKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgQ29sb3IgYmFja2dyb3VuZENv
bG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRDb2xv
cihjb25zdCBDb2xvciYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIGJhY2tn
cm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3Jv
dW5kQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0Qm9yZGVyV2lkdGgoZmxvYXQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNl
dEJvcmRlckNvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNl
dEJvcmRlckNvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVh
bCBmbG9hdCBvcGFjaXR5KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldE9w
YWNpdHkoZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRl
cm5hbC5jcHAKaW5kZXggNTc2MTM5MjllMDM1MDhmNWYwMDJlMWMzNDIwYzg3ZjdmNmVlODBmNS4u
MWE4ZGViOWExODIzZDUyOWIwODkyMmM5YmI2ZTkyOWQ1ZDQ4N2U0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbklu
dGVybmFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
UGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBQ
bGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6ZGlzcGxheUNhbGxiYWNrKENBQ0ZMYXllclJlZiBj
YUxheWVyLCBDR0NvbnRleHQKICAgICAgICAgZm9udC51cGRhdGUoMCk7CiAKICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0IGNnKGNvbnRleHQpOwotICAgICAgICBjZy5zZXRGaWxsQ29sb3IoQ29sb3I6
OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY2cuc2V0RmlsbENvbG9yKE9w
dGlvbmFsUkdCQTo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBjZy5kcmF3
VGV4dChmb250LCBUZXh0UnVuKHRleHQpLCBJbnRQb2ludChhQm91bmRzLm9yaWdpbi54ICsgNSwg
YUJvdW5kcy5vcmlnaW4ueSArIDE3KSk7CiAKICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0
ZShjb250ZXh0KTsgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCmluZGV4IGJlOTcwMTBiODZmMzA4
YTFlYmVhYzcxMzBlMWUzYTBiNWRkYmIzZjYuLmM4YTZjN2JjNWM3ZjNlODE2M2M1ZGVmYzVhNmY5
ZmNmODk3MDQzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBj
b3B5Q29udGV4dFByb3BlcnRpZXMoY2Fpcm9fdCogc3JjQ3IsIGNhaXJvX3QqIGRzdENyKQogICAg
IGNhaXJvX3NldF9maWxsX3J1bGUoZHN0Q3IsIGNhaXJvX2dldF9maWxsX3J1bGUoc3JjQ3IpKTsK
IH0KIAotdm9pZCBzZXRTb3VyY2VSR0JBRnJvbUNvbG9yKGNhaXJvX3QqIGNvbnRleHQsIGNvbnN0
IENvbG9yJiBjb2xvcikKK3ZvaWQgc2V0U291cmNlUkdCQUZyb21Db2xvcihjYWlyb190KiBjb250
ZXh0LCBjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yKQogewogICAgIGZsb2F0IHJlZCwgZ3JlZW4s
IGJsdWUsIGFscGhhOwogICAgIGNvbG9yLmdldFJHQkEocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fp
cm9VdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Nh
aXJvVXRpbGl0aWVzLmgKaW5kZXggYWRhYjBlNWM3ODM4NmI4OTJhYjViOWM0MzFhNjdkZDEzOWVi
ZGY4NS4uMjYxNDJjNzc1ZTY3ZDU1MTBlZmEzODUzZDk3YWMxYTQxMWE4ZjEwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxp
dGllcy5oCkBAIC0zOCw3ICszOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFm
ZmluZVRyYW5zZm9ybTsKLWNsYXNzIENvbG9yOworY2xhc3MgT3B0aW9uYWxSR0JBOwogY2xhc3Mg
RmxvYXRSZWN0OwogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEludFNpemU7CkBAIC00Niw3ICs0
Niw3IEBAIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBQYXRoOwogCiB2b2lkIGNvcHlDb250ZXh0UHJv
cGVydGllcyhjYWlyb190KiBzcmNDciwgY2Fpcm9fdCogZHN0Q3IpOwotdm9pZCBzZXRTb3VyY2VS
R0JBRnJvbUNvbG9yKGNhaXJvX3QqLCBjb25zdCBDb2xvciYpOwordm9pZCBzZXRTb3VyY2VSR0JB
RnJvbUNvbG9yKGNhaXJvX3QqLCBjb25zdCBPcHRpb25hbFJHQkEmKTsKIHZvaWQgYXBwZW5kUGF0
aFRvQ2Fpcm9Db250ZXh0KGNhaXJvX3QqIHRvLCBjYWlyb190KiBmcm9tKTsKIHZvaWQgc2V0UGF0
aE9uQ2Fpcm9Db250ZXh0KGNhaXJvX3QqIHRvLCBjYWlyb190KiBmcm9tKTsKIHZvaWQgYXBwZW5k
V2ViQ29yZVBhdGhUb0NhaXJvQ29udGV4dChjYWlyb190KiBjb250ZXh0LCBjb25zdCBQYXRoJiBw
YXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCBmOGM3Yzk2MGZkOWY5ZGY1
MTM1ZWViMjQ5MjM2ZDliNzQ4Y2VmZGQ2Li40NDUwNzMyYTJiMDI1MGExZjgzMzM1OGEyODk4YjMx
YmFkN2U1NmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC02Niw3ICs2Niw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEEgaGVs
cGVyIHdoaWNoIHF1aWNrbHkgZmlsbHMgYSByZWN0YW5nbGUgd2l0aCBhIHNpbXBsZSBjb2xvciBm
aWxsLgotc3RhdGljIGlubGluZSB2b2lkIGZpbGxSZWN0V2l0aENvbG9yKGNhaXJvX3QqIGNyLCBj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvcikKK3N0YXRpYyBpbmxpbmUg
dm9pZCBmaWxsUmVjdFdpdGhDb2xvcihjYWlyb190KiBjciwgY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yKQogewogICAgIGlmICghY29sb3IuYWxwaGEoKSAm
JiBjYWlyb19nZXRfb3BlcmF0b3IoY3IpID09IENBSVJPX09QRVJBVE9SX09WRVIpCiAgICAgICAg
IHJldHVybjsKQEAgLTI4Niw3ICsyODYsNyBAQCBzdGF0aWMgdm9pZCBkcmF3TGluZU9uQ2Fpcm9D
b250ZXh0KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjYWlyb190KiBjbwogICAg
IGlmIChzdHlsZSA9PSBOb1N0cm9rZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgQ29s
b3ImIHN0cm9rZUNvbG9yID0gZ3JhcGhpY3NDb250ZXh0LT5zdHJva2VDb2xvcigpOworICAgIGNv
bnN0IE9wdGlvbmFsUkdCQSYgc3Ryb2tlQ29sb3IgPSBncmFwaGljc0NvbnRleHQtPnN0cm9rZUNv
bG9yKCk7CiAgICAgaW50IHN0cm9rZVRoaWNrbmVzcyA9IGZsb29yZihncmFwaGljc0NvbnRleHQt
PnN0cm9rZVRoaWNrbmVzcygpKTsKICAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LT5zdHJva2VUaGlj
a25lc3MoKSA8IDEpCiAgICAgICAgIHN0cm9rZVRoaWNrbmVzcyA9IDE7CkBAIC00NTMsNyArNDUz
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKICAgICBzaGFkb3dBbmRGaWxsQ3VycmVudENhaXJvUGF0aCh0aGlzKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvciwgQ29sb3JTcGFj
ZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC01
MDUsNyArNTA1LDcgQEAgSW50UmVjdCBHcmFwaGljc0NvbnRleHQ6OmNsaXBCb3VuZHMoKSBjb25z
dAogICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdCh4MSwgeTEsIHgyIC0geDEs
IHkyIC0geTEpKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGFkanVzdEZvY3VzUmluZ0NvbG9y
KENvbG9yJiBjb2xvcikKK3N0YXRpYyBpbmxpbmUgdm9pZCBhZGp1c3RGb2N1c1JpbmdDb2xvcihP
cHRpb25hbFJHQkEmIGNvbG9yKQogewogI2lmICFQTEFURk9STShHVEspCiAgICAgLy8gRm9yY2Ug
dGhlIGFscGhhIHRvIDUwJS4gIFRoaXMgbWF0Y2hlcyB3aGF0IHRoZSBNYWMgZG9lcyB3aXRoIG91
dGxpbmUgcmluZ3MuCkBAIC01MzMsMTEgKzUzMywxMSBAQCBzdGF0aWMgaW5saW5lIFN0cm9rZVN0
eWxlIGZvY3VzUmluZ1N0cm9rZVN0eWxlKCkKICNlbmRpZgogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRoJiBwYXRoLCBpbnQgd2lkdGgsIGludCAvKiBv
ZmZzZXQgKi8sIGNvbnN0IENvbG9yJiBjb2xvcikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
Rm9jdXNSaW5nKGNvbnN0IFBhdGgmIHBhdGgsIGludCB3aWR0aCwgaW50IC8qIG9mZnNldCAqLywg
Y29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRy
YXcgcGF0aHMgdGhhdCBkZXNjcmliZSBhIHJlY3RhbmdsZSB3aXRoIHJvdW5kZWQgY29ybmVycwog
ICAgIC8vIHNvIGFzIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBob3cgd2UgZHJhdyByZWN0YW5ndWxh
ciBmb2N1cyByaW5ncy4KLSAgICBDb2xvciByaW5nQ29sb3IgPSBjb2xvcjsKKyAgICBPcHRpb25h
bFJHQkEgcmluZ0NvbG9yID0gY29sb3I7CiAgICAgYWRqdXN0Rm9jdXNSaW5nQ29sb3IocmluZ0Nv
bG9yKTsKICAgICBhZGp1c3RGb2N1c1JpbmdMaW5lV2lkdGgod2lkdGgpOwogCkBAIC01NTEsNyAr
NTUxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYg
cGF0aCwgaW50IHdpZHRoLCBpbnQgLyogb2Zmc2V0ICoKICAgICBjYWlyb19yZXN0b3JlKGNyKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPElu
dFJlY3Q+JiByZWN0cywgaW50IHdpZHRoLCBpbnQgLyogb2Zmc2V0ICovLCBjb25zdCBDb2xvciYg
Y29sb3IpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8
SW50UmVjdD4mIHJlY3RzLCBpbnQgd2lkdGgsIGludCAvKiBvZmZzZXQgKi8sIGNvbnN0IE9wdGlv
bmFsUkdCQSYgY29sb3IpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNTc1LDcgKzU3NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9j
dXNSaW5nKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB3aWR0aCwgaW50CiAgICAg
ICAgIGFwcGVuZFdlYkNvcmVQYXRoVG9DYWlyb0NvbnRleHQoY3IsIHBhdGgpOwogICAgIH0KICNl
bmRpZgotICAgIENvbG9yIHJpbmdDb2xvciA9IGNvbG9yOworICAgIE9wdGlvbmFsUkdCQSByaW5n
Q29sb3IgPSBjb2xvcjsKICAgICBhZGp1c3RGb2N1c1JpbmdDb2xvcihyaW5nQ29sb3IpOwogICAg
IGFkanVzdEZvY3VzUmluZ0xpbmVXaWR0aCh3aWR0aCk7CiAgICAgc2V0U291cmNlUkdCQUZyb21D
b2xvcihjciwgcmluZ0NvbG9yKTsKQEAgLTU5OCw3ICs1OTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgd2lk
dGgsIGludAogRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dDo6Y29tcHV0ZUxpbmVCb3VuZHNGb3JU
ZXh0KGNvbnN0IEZsb2F0UG9pbnQmIG9yaWdpbiwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcp
CiB7CiAgICAgYm9vbCBkdW1teUJvb2w7Ci0gICAgQ29sb3IgZHVtbXlDb2xvcjsKKyAgICBPcHRp
b25hbFJHQkEgZHVtbXlDb2xvcjsKICAgICByZXR1cm4gY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRp
YWxpYXNpbmdNb2RlRm9yVGV4dChvcmlnaW4sIHdpZHRoLCBwcmludGluZywgZHVtbXlCb29sLCBk
dW1teUNvbG9yKTsKIH0KIApAQCAtNjE4LDcgKzYxOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBEYXNoQXJy
YXkmCiAgICAgaWYgKHdpZHRocy5zaXplKCkgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Q29sb3IgbG9jYWxTdHJva2VDb2xvcihzdHJva2VDb2xvcigpKTsKKyAgICBPcHRpb25hbFJHQkEg
bG9jYWxTdHJva2VDb2xvcihzdHJva2VDb2xvcigpKTsKIAogICAgIGJvb2wgc2hvdWxkQW50aWFs
aWFzTGluZTsKICAgICBGbG9hdFJlY3QgYm91bmRzID0gY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRp
YWxpYXNpbmdNb2RlRm9yVGV4dChwb2ludCwgd2lkdGhzLmxhc3QoKSwgcHJpbnRpbmcsIHNob3Vs
ZEFudGlhbGlhc0xpbmUsIGxvY2FsU3Ryb2tlQ29sb3IpOwpAQCAtNzIxLDEzICs3MjEsMTMgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KQogICAgIG1f
ZGF0YS0+dHJhbnNsYXRlKHgsIHkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxh
dGZvcm1GaWxsQ29sb3IoY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldFBsYXRmb3JtRmlsbENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYsIENvbG9yU3Bh
Y2UpCiB7CiAgICAgLy8gQ2Fpcm8gY29udGV4dHMgY2FuJ3QgaG9sZCBzZXBhcmF0ZSBmaWxsIGFu
ZCBzdHJva2UgY29sb3JzCiAgICAgLy8gc28gd2Ugc2V0IHRoZW0ganVzdCBiZWZvcmUgd2UgYWN0
dWFsbHkgZmlsbCBvciBzdHJva2UKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiwgQ29sb3JT
cGFjZSkKIHsKICAgICAvLyBDYWlybyBjb250ZXh0cyBjYW4ndCBob2xkIHNlcGFyYXRlIGZpbGwg
YW5kIHN0cm9rZSBjb2xvcnMKICAgICAvLyBzbyB3ZSBzZXQgdGhlbSBqdXN0IGJlZm9yZSB3ZSBh
Y3R1YWxseSBmaWxsIG9yIHN0cm9rZQpAQCAtNzk1LDcgKzc5NSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzZXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiAgICAgbV9k
YXRhLT5zZXRDVE0odHJhbnNmb3JtKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBs
YXRmb3JtU2hhZG93KEZsb2F0U2l6ZSBjb25zdCYgc2l6ZSwgZmxvYXQsIENvbG9yIGNvbnN0Jiwg
Q29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhGbG9h
dFNpemUgY29uc3QmIHNpemUsIGZsb2F0LCBPcHRpb25hbFJHQkEgY29uc3QmLCBDb2xvclNwYWNl
KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEw
MzcsNyArMTAzNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IEZsb2F0
UmVjdCYgcikKICAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBzYXZlZEZpbGxSdWxlKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJv
dW5kZWRSZWN0JiByZWN0LCBjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yLCBDb2xvclNwYWNlKQog
ewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNTUs
NyArMTA1NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVj
dChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zCiAgICAgY2Fpcm9fcmVzdG9yZShj
cik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xl
UmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0LCBjb25zdCBPcHRpb25hbFJHQkEmIGNv
bG9yLCBDb2xvclNwYWNlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWNvbG9y
LmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCA2
MTFmNGNkNmVmMGUxY2EzMjE4MWY2MDc0YTFiY2ZhODM5MjM3NjI1Li5hZjI4NTljZWQ0N2Q1NTFl
YmEzMDExNDc0ODMxMGM0ZDBlYWUyOTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtMTc3
LDggKzE3Nyw4IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFj
ZShjb25zdCBWZWN0b3I8aW50PiYgbG9va1VwVGFibGUpCiAgICAgICAgIHVuc2lnbmVkKiByb3cg
PSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KGRhdGFTcmMgKyBzdHJpZGUgKiB5KTsK
ICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBtX3NpemUud2lkdGgoKTsgeCsrKSB7CiAgICAg
ICAgICAgICB1bnNpZ25lZCogcGl4ZWwgPSByb3cgKyB4OwotICAgICAgICAgICAgQ29sb3IgcGl4
ZWxDb2xvciA9IGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdCKCpwaXhlbCk7Ci0gICAgICAgICAg
ICBwaXhlbENvbG9yID0gQ29sb3IobG9va1VwVGFibGVbcGl4ZWxDb2xvci5yZWQoKV0sCisgICAg
ICAgICAgICBPcHRpb25hbFJHQkEgcGl4ZWxDb2xvciA9IGNvbG9yRnJvbVByZW11bHRpcGxpZWRB
UkdCKCpwaXhlbCk7CisgICAgICAgICAgICBwaXhlbENvbG9yID0gT3B0aW9uYWxSR0JBKGxvb2tV
cFRhYmxlW3BpeGVsQ29sb3IucmVkKCldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxvb2tVcFRhYmxlW3BpeGVsQ29sb3IuZ3JlZW4oKV0sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbG9va1VwVGFibGVbcGl4ZWxDb2xvci5ibHVlKCldLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBpeGVsQ29sb3IuYWxwaGEoKSk7CkBAIC0yNTMsNyArMjUzLDcgQEAg
UGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3Qm
IHJlY3QsIGNvbnN0IEltYWdlQnVmZmUKICAgICAgICAgICAgIGludCBiYXNleCA9IHggKiA0Owog
ICAgICAgICAgICAgdW5zaWduZWQqIHBpeGVsID0gcm93ICsgeCArIG9yaWdpbng7CiAKLSAgICAg
ICAgICAgIC8vIEF2b2lkIGNhbGxpbmcgQ29sb3I6OmNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdC
KCkgYmVjYXVzZSBvbmUKKyAgICAgICAgICAgIC8vIEF2b2lkIGNhbGxpbmcgT3B0aW9uYWxSR0JB
Ojpjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQigpIGJlY2F1c2Ugb25lCiAgICAgICAgICAgICAv
LyBmdW5jdGlvbiBjYWxsIHBlciBwaXhlbCBpcyB0b28gZXhwZW5zaXZlLgogICAgICAgICAgICAg
dW5zaWduZWQgYWxwaGEgPSAoKnBpeGVsICYgMHhGRjAwMDAwMCkgPj4gMjQ7CiAgICAgICAgICAg
ICB1bnNpZ25lZCByZWQgPSAoKnBpeGVsICYgMHgwMEZGMDAwMCkgPj4gMTY7CkBAIC0zMzUsNyAr
MzM1LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxp
ZWQsIFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGMKICAgICAgICAgICAgIGludCBiYXNleCA9
IHggKiA0OwogICAgICAgICAgICAgdW5zaWduZWQqIHBpeGVsID0gcm93ICsgeCArIGRlc3R4Owog
Ci0gICAgICAgICAgICAvLyBBdm9pZCBjYWxsaW5nIENvbG9yOjpwcmVtdWx0aXBsaWVkQVJHQkZy
b21Db2xvcigpIGJlY2F1c2Ugb25lCisgICAgICAgICAgICAvLyBBdm9pZCBjYWxsaW5nIE9wdGlv
bmFsUkdCQTo6cHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3IoKSBiZWNhdXNlIG9uZQogICAgICAg
ICAgICAgLy8gZnVuY3Rpb24gY2FsbCBwZXIgcGl4ZWwgaXMgdG9vIGV4cGVuc2l2ZS4KICAgICAg
ICAgICAgIHVuc2lnbmVkIHJlZCA9IHNyY1Jvd3NbYmFzZXhdOwogICAgICAgICAgICAgdW5zaWdu
ZWQgZ3JlZW4gPSBzcmNSb3dzW2Jhc2V4ICsgMV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5j
cHAKaW5kZXggMGNkMjVjOTM3NjA2NDUxMmU5MTc2NDY2NzRlY2ViMmZiYmEwODc2MC4uNzlkMzRh
OTRiN2YwMzE4OGI4YTJjNTliYTcyZGViZmMzZTI4ZjllMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4
dENhaXJvLmNwcApAQCAtMjYyLDcgKzI2Miw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZWR1Y2VT
b3VyY2VCeUFscGhhKGNhaXJvX3QqIGNyLCBmbG9hdCBhbHBoYSkKICAgICBjYWlyb19wb3BfZ3Jv
dXBfdG9fc291cmNlKGNyKTsKIH0KIAotc3RhdGljIHZvaWQgcHJlcGFyZUNhaXJvQ29udGV4dFNv
dXJjZShjYWlyb190KiBjciwgUGF0dGVybiogcGF0dGVybiwgR3JhZGllbnQqIGdyYWRpZW50LCBj
b25zdCBDb2xvciYgY29sb3IsIGZsb2F0IGdsb2JhbEFscGhhKQorc3RhdGljIHZvaWQgcHJlcGFy
ZUNhaXJvQ29udGV4dFNvdXJjZShjYWlyb190KiBjciwgUGF0dGVybiogcGF0dGVybiwgR3JhZGll
bnQqIGdyYWRpZW50LCBjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yLCBmbG9hdCBnbG9iYWxBbHBo
YSkKIHsKICAgICBpZiAocGF0dGVybikgewogICAgICAgICBSZWZQdHI8Y2Fpcm9fcGF0dGVybl90
PiBjYWlyb1BhdHRlcm4oYWRvcHRSZWYocGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKEFm
ZmluZVRyYW5zZm9ybSgpKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAppbmRleCBiM2YyMWVmNzcwMGVlNmQ1MDZjYWM3
NDM3YmYxZjg4YTNiYzY2NDUwLi44MmM4NjAwYTM0YzIzOTFlODc5NjgyODViYTRlNjdkM2RiNDVm
ZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRt
YXBJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9C
aXRtYXBJbWFnZUNHLmNwcApAQCAtMTYzLDkgKzE2Myw5IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNo
ZWNrRm9yU29saWRDb2xvcigpCiAgICAgICAgIENHUmVjdCBkZXN0aW5hdGlvblJlY3QgPSBDR1Jl
Y3RNYWtlKDAsIDAsIDEsIDEpOwogICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29u
dGV4dC5nZXQoKSwgZGVzdGluYXRpb25SZWN0LCBpbWFnZSk7CiAgICAgICAgIGlmICghcGl4ZWxb
M10pCi0gICAgICAgICAgICBtX3NvbGlkQ29sb3IgPSBDb2xvcigwLCAwLCAwLCAwKTsKKyAgICAg
ICAgICAgIG1fc29saWRDb2xvciA9IE9wdGlvbmFsUkdCQSgwLCAwLCAwLCAwKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV9zb2xpZENvbG9yID0gQ29sb3IocGl4ZWxbMF0gKiAyNTUgLyBw
aXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhl
bFszXSwgcGl4ZWxbM10pOworICAgICAgICAgICAgbV9zb2xpZENvbG9yID0gT3B0aW9uYWxSR0JB
KHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzFdICogMjU1IC8gcGl4ZWxbM10sIHBp
eGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzNdKTsKIAogICAgICAgICBtX2lzU29saWRD
b2xvciA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvckNHLmNwcAppbmRleCA4YTdmZWJlZDU0MDgzN2VkMTIzMDBkN2IyOGIzN2JhYjc4
NmZmZjM1Li5kNGI3MWIzZDVjODQ0ZDdiNmU5Y2YyZjBjY2UzNmMzMGQ1NmY5ZTZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcApAQCAtNTUs
NyArNTUsNyBAQCBzdGF0aWMgQ0dDb2xvclJlZiBjcmVhdGVDR0NvbG9yV2l0aERldmljZVJHQkEo
Q0dDb2xvclJlZiBzb3VyY2VDb2xvcikKIH0KICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKLUNv
bG9yOjpDb2xvcihDR0NvbG9yUmVmIGNvbG9yKQorT3B0aW9uYWxSR0JBOjpPcHRpb25hbFJHQkEo
Q0dDb2xvclJlZiBjb2xvcikKIHsKICAgICBpZiAoIWNvbG9yKSB7CiAgICAgICAgIG1fY29sb3Ig
PSAwOwpAQCAtOTksMjUgKzk5LDI1IEBAIENvbG9yOjpDb2xvcihDR0NvbG9yUmVmIGNvbG9yKQog
ICAgIG1fdmFsaWQgPSB0cnVlOwogfQogCi1zdGF0aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihj
b25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3N0YXRpYyBDR0NvbG9y
UmVmIGxlYWtDR0NvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IsIENvbG9yU3BhY2UgY29s
b3JTcGFjZSkKIHsKICAgICBDR0Zsb2F0IGNvbXBvbmVudHNbNF07CiAgICAgY29sb3IuZ2V0UkdC
QShjb21wb25lbnRzWzBdLCBjb21wb25lbnRzWzFdLCBjb21wb25lbnRzWzJdLCBjb21wb25lbnRz
WzNdKTsKICAgICByZXR1cm4gQ0dDb2xvckNyZWF0ZShjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JT
cGFjZSksIGNvbXBvbmVudHMpOwogfQogCi10ZW1wbGF0ZTxDb2xvclNwYWNlIGNvbG9yU3BhY2U+
IHN0YXRpYyBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQordGVt
cGxhdGU8Q29sb3JTcGFjZSBjb2xvclNwYWNlPiBzdGF0aWMgQ0dDb2xvclJlZiBjYWNoZWRDR0Nv
bG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IpCiB7CiAgICAgc3dpdGNoIChjb2xvci5yZ2Io
KSkgewotICAgIGNhc2UgQ29sb3I6OnRyYW5zcGFyZW50OiB7CisgICAgY2FzZSBPcHRpb25hbFJH
QkE6OnRyYW5zcGFyZW50OiB7CiAgICAgICAgIHN0YXRpYyBDR0NvbG9yUmVmIHRyYW5zcGFyZW50
Q0dDb2xvciA9IGxlYWtDR0NvbG9yKGNvbG9yLCBjb2xvclNwYWNlKTsKICAgICAgICAgcmV0dXJu
IHRyYW5zcGFyZW50Q0dDb2xvcjsKICAgICB9Ci0gICAgY2FzZSBDb2xvcjo6YmxhY2s6IHsKKyAg
ICBjYXNlIE9wdGlvbmFsUkdCQTo6YmxhY2s6IHsKICAgICAgICAgc3RhdGljIENHQ29sb3JSZWYg
YmxhY2tDR0NvbG9yID0gbGVha0NHQ29sb3IoY29sb3IsIGNvbG9yU3BhY2UpOwogICAgICAgICBy
ZXR1cm4gYmxhY2tDR0NvbG9yOwogICAgIH0KLSAgICBjYXNlIENvbG9yOjp3aGl0ZTogeworICAg
IGNhc2UgT3B0aW9uYWxSR0JBOjp3aGl0ZTogewogICAgICAgICBzdGF0aWMgQ0dDb2xvclJlZiB3
aGl0ZUNHQ29sb3IgPSBsZWFrQ0dDb2xvcihjb2xvciwgY29sb3JTcGFjZSk7CiAgICAgICAgIHJl
dHVybiB3aGl0ZUNHQ29sb3I7CiAgICAgfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHRlbXBsYXRlPENv
bG9yU3BhY2UgY29sb3JTcGFjZT4gc3RhdGljIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25z
dCBDb2xvciYgY29sCiAgICAgcmV0dXJuIG5ld0NHQ29sb3I7CiB9CiAKLUNHQ29sb3JSZWYgY2Fj
aGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK0NH
Q29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CiAgICAgY2FzZSBD
b2xvclNwYWNlRGV2aWNlUkdCOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDA4MGY3MmY0Mzg2MzVh
YTk2ZGQzYjFjYTFhYjVhOTdlN2FlMzMyMjguLjAxM2VhZDQwNGM5NzY2ZTk4OGIzMjk1ODNlY2Fl
ZDUyNjU2NGU3MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTYzLDEyICs2MywxMiBAQCB1c2lu
ZyBXVEY6OkdlbmVyaWNIYXNoVHJhaXRzOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyB2b2lkIHNldENHRmlsbENvbG9yKENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDb2xvciYg
Y29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3N0YXRpYyB2b2lkIHNldENHRmlsbENvbG9y
KENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNv
bnRleHQsIGNhY2hlZENHQ29sb3IoY29sb3IsIGNvbG9yU3BhY2UpKTsKIH0KIAotc3RhdGljIHZv
aWQgc2V0Q0dTdHJva2VDb2xvcihDR0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgQ29sb3ImIGNv
bG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCitzdGF0aWMgdm9pZCBzZXRDR1N0cm9rZUNvbG9y
KENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3Io
Y29udGV4dCwgY2FjaGVkQ0dDb2xvcihjb2xvciwgY29sb3JTcGFjZSkpOwogfQpAQCAtMjYxLDcg
KzI2MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKIAogICAgIGlmIChzdHJva2VTdHlsZSgpICE9
IE5vU3Ryb2tlKSB7CiAgICAgICAgIC8vIFdlIGRvIGEgZmlsbCBvZiBmb3VyIHJlY3RzIHRvIHNp
bXVsYXRlIHRoZSBzdHJva2Ugb2YgYSBib3JkZXIuCi0gICAgICAgIENvbG9yIG9sZEZpbGxDb2xv
ciA9IGZpbGxDb2xvcigpOworICAgICAgICBPcHRpb25hbFJHQkEgb2xkRmlsbENvbG9yID0gZmls
bENvbG9yKCk7CiAgICAgICAgIGlmIChvbGRGaWxsQ29sb3IgIT0gc3Ryb2tlQ29sb3IoKSkKICAg
ICAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIHN0cm9rZUNvbG9yKCksIHN0cm9rZUNv
bG9yU3BhY2UoKSk7CiAgICAgICAgIENHUmVjdCByZWN0c1s0XSA9IHsKQEAgLTcyMSwxMyArNzIx
LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENv
bG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xv
ciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1D
b250ZXh0KCk7Ci0gICAgQ29sb3Igb2xkRmlsbENvbG9yID0gZmlsbENvbG9yKCk7CisgICAgT3B0
aW9uYWxSR0JBIG9sZEZpbGxDb2xvciA9IGZpbGxDb2xvcigpOwogICAgIENvbG9yU3BhY2Ugb2xk
Q29sb3JTcGFjZSA9IGZpbGxDb2xvclNwYWNlKCk7CiAKICAgICBpZiAob2xkRmlsbENvbG9yICE9
IGNvbG9yIHx8IG9sZENvbG9yU3BhY2UgIT0gY29sb3JTcGFjZSkKQEAgLTc1MiwxMyArNzUyLDEz
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRl
eHQsIG9sZEZpbGxDb2xvciwgb2xkQ29sb3JTcGFjZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0
LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiByZWN0LCBjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Up
CiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Q0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKLSAgICBDb2xvciBvbGRG
aWxsQ29sb3IgPSBmaWxsQ29sb3IoKTsKKyAgICBPcHRpb25hbFJHQkEgb2xkRmlsbENvbG9yID0g
ZmlsbENvbG9yKCk7CiAgICAgQ29sb3JTcGFjZSBvbGRDb2xvclNwYWNlID0gZmlsbENvbG9yU3Bh
Y2UoKTsKIAogICAgIGlmIChvbGRGaWxsQ29sb3IgIT0gY29sb3IgfHwgb2xkQ29sb3JTcGFjZSAh
PSBjb2xvclNwYWNlKQpAQCAtNzk0LDcgKzc5NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpw
bGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25z
CiAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIG9sZEZpbGxDb2xvciwgb2xkQ29sb3JT
cGFjZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9s
ZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRI
b2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IE9w
dGlvbmFsUkdCQSYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC04MTAsNyArODEwLDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgRmxvYXQKICAgICAgICAgcGF0aC5hZGRSZWN0KHJvdW5kZWRIb2xlUmVj
dC5yZWN0KCkpOwogCiAgICAgV2luZFJ1bGUgb2xkRmlsbFJ1bGUgPSBmaWxsUnVsZSgpOwotICAg
IENvbG9yIG9sZEZpbGxDb2xvciA9IGZpbGxDb2xvcigpOworICAgIE9wdGlvbmFsUkdCQSBvbGRG
aWxsQ29sb3IgPSBmaWxsQ29sb3IoKTsKICAgICBDb2xvclNwYWNlIG9sZEZpbGxDb2xvclNwYWNl
ID0gZmlsbENvbG9yU3BhY2UoKTsKICAgICAKICAgICBzZXRGaWxsUnVsZShSVUxFX0VWRU5PREQp
OwpAQCAtOTQzLDcgKzk0Myw3IEBAIHN0YXRpYyB2b2lkIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fy
b3VuZElmTmVlZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICNlbmRpZgogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coY29uc3QgRmxvYXRTaXpl
JiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZs
b2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTI2Niw3ICsxMjY2LDcgQEAgRmxvYXRSZWN0IEdyYXBoaWNzQ29u
dGV4dDo6cm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmIHJlY3QsIFJvdW5kaW5n
TW8KIEZsb2F0UmVjdCBHcmFwaGljc0NvbnRleHQ6OmNvbXB1dGVMaW5lQm91bmRzRm9yVGV4dChj
b25zdCBGbG9hdFBvaW50JiBwb2ludCwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcpCiB7CiAg
ICAgYm9vbCBkdW1teUJvb2w7Ci0gICAgQ29sb3IgZHVtbXlDb2xvcjsKKyAgICBPcHRpb25hbFJH
QkEgZHVtbXlDb2xvcjsKICAgICByZXR1cm4gY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNp
bmdNb2RlRm9yVGV4dChwb2ludCwgd2lkdGgsIHByaW50aW5nLCBkdW1teUJvb2wsIGR1bW15Q29s
b3IpOwogfQogCkBAIC0xMjg2LDcgKzEyODYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRGFzaEFycmF5Jgog
ICAgIGlmICh3aWR0aHMuc2l6ZSgpIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIENvbG9y
IGxvY2FsU3Ryb2tlQ29sb3Ioc3Ryb2tlQ29sb3IoKSk7CisgICAgT3B0aW9uYWxSR0JBIGxvY2Fs
U3Ryb2tlQ29sb3Ioc3Ryb2tlQ29sb3IoKSk7CiAKICAgICBib29sIHNob3VsZEFudGlhbGlhc0xp
bmU7CiAgICAgRmxvYXRSZWN0IGJvdW5kcyA9IGNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFz
aW5nTW9kZUZvclRleHQocG9pbnQsIHdpZHRocy5sYXN0KCksIHByaW50aW5nLCBzaG91bGRBbnRp
YWxpYXNMaW5lLCBsb2NhbFN0cm9rZUNvbG9yKTsKQEAgLTE0NDMsNyArMTQ0Myw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01v
ZGVGbGFncyBtb2RlKQogICAgIH0KIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Up
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TdHJva2VDb2xvcihjb25zdCBPcHRp
b25hbFJHQkEmIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ1Nyw3ICsxNDU3LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNr
bmVzcykKICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgocGxhdGZvcm1Db250ZXh0KCksIHN0ZDo6
bWF4KHRoaWNrbmVzcywgMC5mKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0
Zm9ybUZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2xvcihjb25zdCBPcHRpb25h
bFJHQkEmIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0KaW5kZXggYjYw
MmQyMDZlMWMzZjg5M2E2OWI4NzUxMzJlNTdiNGEyMDA2ZGQ0YS4uMThhYjkyM2RlNzNkMWU4ZWUx
N2FmNzc1YTEzZWM5MmM2MzcyZDYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tCkBAIC0yMjcsNyAr
MjI3LDcgQEAgc3RhdGljIHZvaWQgc2V0Q0dGb250UmVuZGVyaW5nTW9kZShDR0NvbnRleHRSZWYg
Y2dDb250ZXh0LCBOU0ZvbnRSZW5kZXJpbmdNb2RlIHIKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMAotc3RhdGlj
IENHU2l6ZSBkaWxhdGlvblNpemVGb3JUZXh0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQorc3Rh
dGljIENHU2l6ZSBkaWxhdGlvblNpemVGb3JUZXh0Q29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiBj
b2xvcikKIHsKICAgICBkb3VibGUgaHVlOwogICAgIGRvdWJsZSBzYXR1cmF0aW9uOwpAQCAtMzk3
LDcgKzM5Nyw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHCiAKICAgICBGbG9hdFNpemUgc2hh
ZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXI7Ci0gICAgQ29sb3Igc2hhZG93Q29sb3I7
CisgICAgT3B0aW9uYWxSR0JBIHNoYWRvd0NvbG9yOwogICAgIENvbG9yU3BhY2Ugc2hhZG93Q29s
b3JTcGFjZTsKICAgICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlID0gY29udGV4dC0+ZmlsbENv
bG9yU3BhY2UoKTsKICAgICBjb250ZXh0LT5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dC
bHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CkBAIC00MTUsOCArNDE1LDggQEAg
dm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEZvbnQqIGZvbnQsIGNvbnN0IEcKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KSB7CiAgICAg
ICAgIC8vIFBhaW50IHNpbXBsZSBzaGFkb3dzIG91cnNlbHZlcyBpbnN0ZWFkIG9mIHJlbHlpbmcg
b24gQ0cgc2hhZG93cywgdG8gYXZvaWQgbG9zaW5nIHN1YnBpeGVsIGFudGlhbGlhc2luZy4KICAg
ICAgICAgY29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICAgICAgQ29sb3IgZmlsbENvbG9yID0g
Y29udGV4dC0+ZmlsbENvbG9yKCk7Ci0gICAgICAgIENvbG9yIHNoYWRvd0ZpbGxDb2xvcihzaGFk
b3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hhZG93Q29sb3IuYmx1ZSgpLCBz
aGFkb3dDb2xvci5hbHBoYSgpICogZmlsbENvbG9yLmFscGhhKCkgLyAyNTUpOworICAgICAgICBP
cHRpb25hbFJHQkEgZmlsbENvbG9yID0gY29udGV4dC0+ZmlsbENvbG9yKCk7CisgICAgICAgIE9w
dGlvbmFsUkdCQSBzaGFkb3dGaWxsQ29sb3Ioc2hhZG93Q29sb3IucmVkKCksIHNoYWRvd0NvbG9y
LmdyZWVuKCksIHNoYWRvd0NvbG9yLmJsdWUoKSwgc2hhZG93Q29sb3IuYWxwaGEoKSAqIGZpbGxD
b2xvci5hbHBoYSgpIC8gMjU1KTsKICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKHNoYWRv
d0ZpbGxDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CiAgICAgICAgIGZsb2F0IHNoYWRvd1RleHRY
ID0gcG9pbnQueCgpICsgc2hhZG93T2Zmc2V0LndpZHRoKCk7CiAgICAgICAgIC8vIElmIHNoYWRv
d3MgYXJlIGlnbm9yaW5nIHRyYW5zZm9ybXMsIHRoZW4gd2UgaGF2ZW4ndCBhcHBsaWVkIHRoZSBZ
IGNvb3JkaW5hdGUgZmxpcCB5ZXQsIHNvIGRvd24gaXMgbmVnYXRpdmUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNl
TGlnaHRpbmcuY3BwCmluZGV4IDhiZjNlYjMxYTUwNDg1YTUzYjI5ZWFmYTlkYjk3YjAxNDcxY2Vh
MWUuLmZkZWNmMmE3MzA0Yzc2YjRiZjA3ODMyNDFiNjAxZDRlNDUzYTYyMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRp
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVE
aWZmdXNlTGlnaHRpbmcuY3BwCkBAIC0yNywxMyArMjcsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1GRURpZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRpbmcoRmlsdGVyJiBmaWx0
ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsCitGRURp
ZmZ1c2VMaWdodGluZzo6RkVEaWZmdXNlTGlnaHRpbmcoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IE9w
dGlvbmFsUkdCQSYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjYWxlLAogICAgIGZsb2F0
IGRpZmZ1c2VDb25zdGFudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVu
aXRMZW5ndGhZLCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZSkKICAgICA6IEZF
TGlnaHRpbmcoZmlsdGVyLCBEaWZmdXNlTGlnaHRpbmcsIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VT
Y2FsZSwgZGlmZnVzZUNvbnN0YW50LCAwLCAwLCBrZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5p
dExlbmd0aFksIGxpZ2h0U291cmNlKQogewogfQogCi1SZWY8RkVEaWZmdXNlTGlnaHRpbmc+IEZF
RGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdo
dGluZ0NvbG9yLAorUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBGRURpZmZ1c2VMaWdodGluZzo6Y3Jl
YXRlKEZpbHRlciYgZmlsdGVyLCBjb25zdCBPcHRpb25hbFJHQkEmIGxpZ2h0aW5nQ29sb3IsCiAg
ICAgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZsb2F0IGtlcm5l
bFVuaXRMZW5ndGhYLAogICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBQYXNzUmVmUHRyPExp
Z2h0U291cmNlPiBsaWdodFNvdXJjZSkKIHsKQEAgLTQ0LDEyICs0NCwxMiBAQCBGRURpZmZ1c2VM
aWdodGluZzo6fkZFRGlmZnVzZUxpZ2h0aW5nKCkKIHsKIH0KIAotQ29sb3IgRkVEaWZmdXNlTGln
aHRpbmc6OmxpZ2h0aW5nQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIEZFRGlmZnVzZUxpZ2h0
aW5nOjpsaWdodGluZ0NvbG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9saWdodGluZ0NvbG9y
OwogfQogCi1ib29sIEZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRMaWdodGluZ0NvbG9yKGNvbnN0IENv
bG9yJiBsaWdodGluZ0NvbG9yKQorYm9vbCBGRURpZmZ1c2VMaWdodGluZzo6c2V0TGlnaHRpbmdD
b2xvcihjb25zdCBPcHRpb25hbFJHQkEmIGxpZ2h0aW5nQ29sb3IpCiB7CiAgICAgaWYgKG1fbGln
aHRpbmdDb2xvciA9PSBsaWdodGluZ0NvbG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVz
ZUxpZ2h0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RGlmZnVzZUxpZ2h0aW5nLmgKaW5kZXggOTg2ZDA5ZDRiYmJhNTY5M2FmOWZjNGI4ZTdiMTgyOTMy
YWZlYWVjYS4uODg4MTAyZDNmOWIzN2Y0NGVkZjEyNWYwMWFkNWVmNWRlZDY0YTdmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VM
aWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVEaWZmdXNlTGlnaHRpbmcuaApAQCAtMzAsMTIgKzMwLDEyIEBAIGNsYXNzIExpZ2h0U291cmNl
OwogCiBjbGFzcyBGRURpZmZ1c2VMaWdodGluZyA6IHB1YmxpYyBGRUxpZ2h0aW5nIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBjcmVhdGUoRmlsdGVyJiwgY29u
c3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsCisgICAgc3RhdGljIFJlZjxGRURpZmZ1c2VMaWdodGlu
Zz4gY3JlYXRlKEZpbHRlciYsIGNvbnN0IE9wdGlvbmFsUkdCQSYsIGZsb2F0LCBmbG9hdCwKICAg
ICAgICAgZmxvYXQsIGZsb2F0LCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CiAgICAgdmlydHVh
bCB+RkVEaWZmdXNlTGlnaHRpbmcoKTsKIAotICAgIENvbG9yIGxpZ2h0aW5nQ29sb3IoKSBjb25z
dDsKLSAgICBib29sIHNldExpZ2h0aW5nQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICBPcHRpb25h
bFJHQkEgbGlnaHRpbmdDb2xvcigpIGNvbnN0OworICAgIGJvb2wgc2V0TGlnaHRpbmdDb2xvcihj
b25zdCBPcHRpb25hbFJHQkEmKTsKIAogICAgIGZsb2F0IHN1cmZhY2VTY2FsZSgpIGNvbnN0Owog
ICAgIGJvb2wgc2V0U3VyZmFjZVNjYWxlKGZsb2F0KTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3Ry
ZWFtJiwgaW50IGluZGVudGlvbikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgRkVEaWZmdXNlTGln
aHRpbmcoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwg
UGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIEZFRGlmZnVzZUxpZ2h0aW5nKEZpbHRlciYs
IGNvbnN0IE9wdGlvbmFsUkdCQSYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBQYXNzUmVm
UHRyPExpZ2h0U291cmNlPik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNo
YWRvdy5jcHAKaW5kZXggNWU3YzkwNDUwZjhiMDdkNjNmN2YyMDk3ZDc0M2U4YzBhNjEwNjk2Zi4u
ZmYzYWM4N2M3MjQ3MjkwNmYyMWE2NDkzY2Q5OWQ2YTIyOGU3ZjE5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93
LmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1GRURy
b3BTaGFkb3c6OkZFRHJvcFNoYWRvdyhGaWx0ZXImIGZpbHRlciwgZmxvYXQgc3RkWCwgZmxvYXQg
c3RkWSwgZmxvYXQgZHgsIGZsb2F0IGR5LCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIGZsb2F0
IHNoYWRvd09wYWNpdHkpCitGRURyb3BTaGFkb3c6OkZFRHJvcFNoYWRvdyhGaWx0ZXImIGZpbHRl
ciwgZmxvYXQgc3RkWCwgZmxvYXQgc3RkWSwgZmxvYXQgZHgsIGZsb2F0IGR5LCBjb25zdCBPcHRp
b25hbFJHQkEmIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dPcGFjaXR5KQogICAgIDogRmlsdGVy
RWZmZWN0KGZpbHRlcikKICAgICAsIG1fc3RkWChzdGRYKQogICAgICwgbV9zdGRZKHN0ZFkpCkBA
IC00Miw3ICs0Miw3IEBAIEZFRHJvcFNoYWRvdzo6RkVEcm9wU2hhZG93KEZpbHRlciYgZmlsdGVy
LCBmbG9hdCBzdGRYLCBmbG9hdCBzdGRZLCBmbG9hdCBkeCwgZmxvCiB7CiB9CiAKLVJlZjxGRURy
b3BTaGFkb3c+IEZFRHJvcFNoYWRvdzo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBmbG9hdCBzdGRY
LCBmbG9hdCBzdGRZLCBmbG9hdCBkeCwgZmxvYXQgZHksIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xv
ciwgZmxvYXQgc2hhZG93T3BhY2l0eSkKK1JlZjxGRURyb3BTaGFkb3c+IEZFRHJvcFNoYWRvdzo6
Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBmbG9hdCBzdGRYLCBmbG9hdCBzdGRZLCBmbG9hdCBkeCwg
ZmxvYXQgZHksIGNvbnN0IE9wdGlvbmFsUkdCQSYgc2hhZG93Q29sb3IsIGZsb2F0IHNoYWRvd09w
YWNpdHkpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVEcm9wU2hhZG93KGZpbHRlciwg
c3RkWCwgc3RkWSwgZHgsIGR5LCBzaGFkb3dDb2xvciwgc2hhZG93T3BhY2l0eSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BT
aGFkb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9w
U2hhZG93LmgKaW5kZXggOGZlMTZlNDcxYjI5NTMxMmI4MjIzMmMzODZiZDE4YzY1ZTRkZDdiYy4u
MTgxYjNhMWFjZTZmMTViYjFiMTI2NDdjM2JlYzg0ODcxOWI4OTc0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5o
CkBAIC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIEZFRHJv
cFNoYWRvdyA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
RkVEcm9wU2hhZG93PiBjcmVhdGUoRmlsdGVyJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGNvbnN0IENvbG9yJiwgZmxvYXQpOworICAgIHN0YXRpYyBSZWY8RkVEcm9wU2hhZG93PiBjcmVh
dGUoRmlsdGVyJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGNvbnN0IE9wdGlvbmFsUkdC
QSYsIGZsb2F0KTsKIAogICAgIGZsb2F0IHN0ZERldmlhdGlvblgoKSBjb25zdCB7IHJldHVybiBt
X3N0ZFg7IH0KICAgICB2b2lkIHNldFN0ZERldmlhdGlvblgoZmxvYXQgc3RkWCkgeyBtX3N0ZFgg
PSBzdGRYOyB9CkBAIC00Miw4ICs0Miw4IEBAIHB1YmxpYzoKICAgICBmbG9hdCBkeSgpIGNvbnN0
IHsgcmV0dXJuIG1fZHk7IH0KICAgICB2b2lkIHNldER5KGZsb2F0IGR5KSB7IG1fZHkgPSBkeTsg
fQogCi0gICAgQ29sb3Igc2hhZG93Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd0NvbG9y
OyB9IAotICAgIHZvaWQgc2V0U2hhZG93Q29sb3IoY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKSB7
IG1fc2hhZG93Q29sb3IgPSBzaGFkb3dDb2xvcjsgfQorICAgIE9wdGlvbmFsUkdCQSBzaGFkb3dD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93Q29sb3I7IH0gCisgICAgdm9pZCBzZXRTaGFk
b3dDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIHNoYWRvd0NvbG9yKSB7IG1fc2hhZG93Q29sb3Ig
PSBzaGFkb3dDb2xvcjsgfQogCiAgICAgZmxvYXQgc2hhZG93T3BhY2l0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2hhZG93T3BhY2l0eTsgfQogICAgIHZvaWQgc2V0U2hhZG93T3BhY2l0eShmbG9hdCBz
aGFkb3dPcGFjaXR5KSB7IG1fc2hhZG93T3BhY2l0eSA9IHNoYWRvd09wYWNpdHk7IH0KQEAgLTU2
LDEzICs1NiwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJl
cHJlc2VudGF0aW9uKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50aW9uKSBjb25zdDsKIAogcHJpdmF0
ZToKLSAgICBGRURyb3BTaGFkb3coRmlsdGVyJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGNvbnN0IENvbG9yJiwgZmxvYXQpOworICAgIEZFRHJvcFNoYWRvdyhGaWx0ZXImLCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgY29uc3QgT3B0aW9uYWxSR0JBJiwgZmxvYXQpOwogICAgIAog
ICAgIGZsb2F0IG1fc3RkWDsKICAgICBmbG9hdCBtX3N0ZFk7CiAgICAgZmxvYXQgbV9keDsKICAg
ICBmbG9hdCBtX2R5OwotICAgIENvbG9yIG1fc2hhZG93Q29sb3I7CisgICAgT3B0aW9uYWxSR0JB
IG1fc2hhZG93Q29sb3I7CiAgICAgZmxvYXQgbV9zaGFkb3dPcGFjaXR5OwogfTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9v
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2Qu
Y3BwCmluZGV4IGM0OTg2MGMwZjA4N2M4YWZkOGZkZTU5MDllZDhlMjkzOGMzMzM3ZGEuLmJkNDUy
MTY3MzQ4NTQzMjgwNmVkMmRjOTMzNjRhZGRjYTc1ZTQyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcApAQCAtMjksMjQg
KzI5LDI0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRkVGbG9vZDo6RkVGbG9vZChGaWx0
ZXImIGZpbHRlciwgY29uc3QgQ29sb3ImIGZsb29kQ29sb3IsIGZsb2F0IGZsb29kT3BhY2l0eSkK
K0ZFRmxvb2Q6OkZFRmxvb2QoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IE9wdGlvbmFsUkdCQSYgZmxv
b2RDb2xvciwgZmxvYXQgZmxvb2RPcGFjaXR5KQogICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlcikK
ICAgICAsIG1fZmxvb2RDb2xvcihmbG9vZENvbG9yKQogICAgICwgbV9mbG9vZE9wYWNpdHkoZmxv
b2RPcGFjaXR5KQogewogfQogCi1SZWY8RkVGbG9vZD4gRkVGbG9vZDo6Y3JlYXRlKEZpbHRlciYg
ZmlsdGVyLCBjb25zdCBDb2xvciYgZmxvb2RDb2xvciwgZmxvYXQgZmxvb2RPcGFjaXR5KQorUmVm
PEZFRmxvb2Q+IEZFRmxvb2Q6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgY29uc3QgT3B0aW9uYWxS
R0JBJiBmbG9vZENvbG9yLCBmbG9hdCBmbG9vZE9wYWNpdHkpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRkVGbG9vZChmaWx0ZXIsIGZsb29kQ29sb3IsIGZsb29kT3BhY2l0eSkpOwogfQog
Ci1Db2xvciBGRUZsb29kOjpmbG9vZENvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBGRUZsb29k
OjpmbG9vZENvbG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9mbG9vZENvbG9yOwogfQogCi1i
b29sIEZFRmxvb2Q6OnNldEZsb29kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQorYm9vbCBGRUZs
b29kOjpzZXRGbG9vZENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IpCiB7CiAgICAgaWYg
KG1fZmxvb2RDb2xvciA9PSBjb2xvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzMsNyAr
NzMsNyBAQCB2b2lkIEZFRmxvb2Q6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFy
ZXN1bHRJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ29sb3IgY29sb3IgPSBjb2xvcldp
dGhPdmVycmlkZUFscGhhKGZsb29kQ29sb3IoKS5yZ2IoKSwgZmxvb2RPcGFjaXR5KCkpOworICAg
IE9wdGlvbmFsUkdCQSBjb2xvciA9IGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoZmxvb2RDb2xvcigp
LnJnYigpLCBmbG9vZE9wYWNpdHkoKSk7CiAgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+Zmls
bFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkp
LCBjb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgKaW5kZXggYzU1ZWM3ZjNkY2Nl
NmEyYWZkZjRiNmY1N2EzMTNjMTM1ODIxMTRiNC4uNDU3ODk5MjIzZTQwNDI3Y2RiYTE0MGZiMzJj
ZjEzOTZjNjNmNDQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUZsb29kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUZsb29kLmgKQEAgLTMwLDEwICszMCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEZFRmxvb2QgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPEZFRmxvb2Q+IGNyZWF0ZShGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0
KTsKKyAgICBzdGF0aWMgUmVmPEZFRmxvb2Q+IGNyZWF0ZShGaWx0ZXImLCBjb25zdCBPcHRpb25h
bFJHQkEmLCBmbG9hdCk7CiAKLSAgICBDb2xvciBmbG9vZENvbG9yKCkgY29uc3Q7Ci0gICAgYm9v
bCBzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9yJik7CisgICAgT3B0aW9uYWxSR0JBIGZsb29kQ29s
b3IoKSBjb25zdDsKKyAgICBib29sIHNldEZsb29kQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJik7
CiAKICAgICBmbG9hdCBmbG9vZE9wYWNpdHkoKSBjb25zdDsKICAgICBib29sIHNldEZsb29kT3Bh
Y2l0eShmbG9hdCk7CkBAIC01Niw5ICs1Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFRleHRT
dHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYsIGludCBpbmRlbnRpb24p
IGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEZFRmxvb2QoRmlsdGVyJiwgY29uc3Qg
Q29sb3ImLCBmbG9hdCk7CisgICAgRkVGbG9vZChGaWx0ZXImLCBjb25zdCBPcHRpb25hbFJHQkEm
LCBmbG9hdCk7CiAKLSAgICBDb2xvciBtX2Zsb29kQ29sb3I7CisgICAgT3B0aW9uYWxSR0JBIG1f
Zmxvb2RDb2xvcjsKICAgICBmbG9hdCBtX2Zsb29kT3BhY2l0eTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3Bw
CmluZGV4IDI5MjViMGViNjUxMWE5NTRkYzAxYzA1NDA4MDhjMWYxYWY4NmFhNGUuLmYwNmUzNDM3
M2FiNmZlODVmYmY2N2Q0MTI4MzVlNzk3MjI0MzA3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcApAQCAtMzIs
NyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZFTGlnaHRpbmc6OkZFTGlnaHRp
bmcoRmlsdGVyJiBmaWx0ZXIsIExpZ2h0aW5nVHlwZSBsaWdodGluZ1R5cGUsIGNvbnN0IENvbG9y
JiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNlU2NhbGUsCitGRUxpZ2h0aW5nOjpGRUxpZ2h0
aW5nKEZpbHRlciYgZmlsdGVyLCBMaWdodGluZ1R5cGUgbGlnaHRpbmdUeXBlLCBjb25zdCBPcHRp
b25hbFJHQkEmIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwKICAgICBmbG9hdCBk
aWZmdXNlQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhw
b25lbnQsCiAgICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5n
dGhZLCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZSkKICAgICA6IEZpbHRlckVm
ZmVjdChmaWx0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTGlnaHRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVMaWdodGluZy5oCmluZGV4IDBkMWM3NDQwZTM4ZjYyN2I3YTMxMGFjNDZlZmFj
YTdhZGVlMGNlZWUuLmVlNmRlN2IwZWMxYWY2ZjAyMzI5YzE3N2IwMDRhZTBhNDdkZmY3YzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdo
dGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVM
aWdodGluZy5oCkBAIC04OCw3ICs4OCw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBw
bGF0Zm9ybUFwcGx5R2VuZXJpY1dvcmtlcihQbGF0Zm9ybUFwcGx5R2VuZXJpY1BhcmFtZXRlcnMq
KTsKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUFwcGx5TmVvbldvcmtlcihGRUxpZ2h0aW5nUGFp
bnRpbmdEYXRhRm9yTmVvbiopOwogCi0gICAgRkVMaWdodGluZyhGaWx0ZXImLCBMaWdodGluZ1R5
cGUsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9h
dCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOworICAgIEZFTGlnaHRpbmcoRmlsdGVyJiwgTGln
aHRpbmdUeXBlLCBjb25zdCBPcHRpb25hbFJHQkEmLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9h
dCwgZmxvYXQsIGZsb2F0LCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CiAKICAgICBib29sIGRy
YXdMaWdodGluZyhVaW50OENsYW1wZWRBcnJheSosIGludCwgaW50KTsKICAgICBpbmxpbmUgdm9p
ZCBpbmxpbmVTZXRQaXhlbChpbnQgb2Zmc2V0LCBMaWdodGluZ0RhdGEmLCBMaWdodFNvdXJjZTo6
UGFpbnRpbmdEYXRhJiwKQEAgLTEwOSw3ICsxMDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgTGlnaHRp
bmdUeXBlIG1fbGlnaHRpbmdUeXBlOwogICAgIFJlZlB0cjxMaWdodFNvdXJjZT4gbV9saWdodFNv
dXJjZTsKIAotICAgIENvbG9yIG1fbGlnaHRpbmdDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgbV9s
aWdodGluZ0NvbG9yOwogICAgIGZsb2F0IG1fc3VyZmFjZVNjYWxlOwogICAgIGZsb2F0IG1fZGlm
ZnVzZUNvbnN0YW50OwogICAgIGZsb2F0IG1fc3BlY3VsYXJDb25zdGFudDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVj
dWxhckxpZ2h0aW5nLmNwcAppbmRleCAwMjE5YWUyYThmMmMzYzYxOGNiYjBhZTQ5OGRjMGRiZmU1
YzRkZTgwLi5kMjRhYjdlNDBhOTNmNDdjNDNlYmZjZDhmMzhiN2Q4ZjM0MWY3MmE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJM
aWdodGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRVNwZWN1bGFyTGlnaHRpbmcuY3BwCkBAIC0yNywxNCArMjcsMTQgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1GRVNwZWN1bGFyTGlnaHRpbmc6OkZFU3BlY3VsYXJMaWdodGluZyhGaWx0
ZXImIGZpbHRlciwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2Fs
ZSwKK0ZFU3BlY3VsYXJMaWdodGluZzo6RkVTcGVjdWxhckxpZ2h0aW5nKEZpbHRlciYgZmlsdGVy
LCBjb25zdCBPcHRpb25hbFJHQkEmIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwK
ICAgICBmbG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9h
dCBrZXJuZWxVbml0TGVuZ3RoWCwKICAgICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUGFzc1Jl
ZlB0cjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UpCiAgICAgOiBGRUxpZ2h0aW5nKGZpbHRlciwg
U3BlY3VsYXJMaWdodGluZywgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCAwLCBzcGVjdWxh
ckNvbnN0YW50LCBzcGVjdWxhckV4cG9uZW50LCBrZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5p
dExlbmd0aFksIGxpZ2h0U291cmNlKQogewogfQogCi1SZWY8RkVTcGVjdWxhckxpZ2h0aW5nPiBG
RVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29sb3ImIGxp
Z2h0aW5nQ29sb3IsCitSZWY8RkVTcGVjdWxhckxpZ2h0aW5nPiBGRVNwZWN1bGFyTGlnaHRpbmc6
OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgY29uc3QgT3B0aW9uYWxSR0JBJiBsaWdodGluZ0NvbG9y
LAogICAgIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQg
c3BlY3VsYXJFeHBvbmVudCwKICAgICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2Vy
bmVsVW5pdExlbmd0aFksIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKQogewpA
QCAtNDYsMTIgKzQ2LDEyIEBAIEZFU3BlY3VsYXJMaWdodGluZzo6fkZFU3BlY3VsYXJMaWdodGlu
ZygpCiB7CiB9CiAKLUNvbG9yIEZFU3BlY3VsYXJMaWdodGluZzo6bGlnaHRpbmdDb2xvcigpIGNv
bnN0CitPcHRpb25hbFJHQkEgRkVTcGVjdWxhckxpZ2h0aW5nOjpsaWdodGluZ0NvbG9yKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9saWdodGluZ0NvbG9yOwogfQogCi1ib29sIEZFU3BlY3VsYXJM
aWdodGluZzo6c2V0TGlnaHRpbmdDb2xvcihjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvcikKK2Jv
b2wgRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRMaWdodGluZ0NvbG9yKGNvbnN0IE9wdGlvbmFsUkdC
QSYgbGlnaHRpbmdDb2xvcikKIHsKICAgICBpZiAobV9saWdodGluZ0NvbG9yID09IGxpZ2h0aW5n
Q29sb3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oCmlu
ZGV4IGRmZjJlNWU3MjA3YjY0MDA0NjA3ODA1OGMxZGQ2NjdlYzQ0NDUwM2IuLjYxZmFiNjViOWUy
NDE5MGMyZWY2MzhjOTA4MjE3MjNjYWUxYmY0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcu
aApAQCAtMjgsMTIgKzI4LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRkVTcGVj
dWxhckxpZ2h0aW5nIDogcHVibGljIEZFTGlnaHRpbmcgewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8RkVTcGVjdWxhckxpZ2h0aW5nPiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9h
dCwgZmxvYXQsCisgICAgc3RhdGljIFJlZjxGRVNwZWN1bGFyTGlnaHRpbmc+IGNyZWF0ZShGaWx0
ZXImLCBjb25zdCBPcHRpb25hbFJHQkEmLCBmbG9hdCwgZmxvYXQsCiAgICAgICAgIGZsb2F0LCBm
bG9hdCwgZmxvYXQsIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKICAgICB2aXJ0dWFsIH5GRVNw
ZWN1bGFyTGlnaHRpbmcoKTsKIAotICAgIENvbG9yIGxpZ2h0aW5nQ29sb3IoKSBjb25zdDsKLSAg
ICBib29sIHNldExpZ2h0aW5nQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICBPcHRpb25hbFJHQkEg
bGlnaHRpbmdDb2xvcigpIGNvbnN0OworICAgIGJvb2wgc2V0TGlnaHRpbmdDb2xvcihjb25zdCBP
cHRpb25hbFJHQkEmKTsKIAogICAgIGZsb2F0IHN1cmZhY2VTY2FsZSgpIGNvbnN0OwogICAgIGJv
b2wgc2V0U3VyZmFjZVNjYWxlKGZsb2F0KTsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiwg
aW50IGluZGVudGlvbikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgRkVTcGVjdWxhckxpZ2h0aW5n
KEZpbHRlciYsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBQYXNzUmVmUHRyPExpZ2h0U291cmNlPik7CisgICAgRkVTcGVjdWxhckxpZ2h0aW5nKEZpbHRl
ciYsIGNvbnN0IE9wdGlvbmFsUkdCQSYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9h
dCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCmluZGV4IGIxODllMTRjZGNiNjRkZmE5Y2EyYTk1ZTE1
ZjA2YTg0YTU5ZjdhMjMuLmY4MDk1ODljOGMxZjYwNDgwMGJkM2ViYjE4MzM0ZGU5NzY0NWVhNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKQEAgLTE3OSwxMiArMTc5LDEyIEBAIFBhc3NSZWZQ
dHI8RmlsdGVyT3BlcmF0aW9uPiBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25z
dCBGaWx0ZXJPcGVyYXRpCiAgICAgICAgIHJldHVybiBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9u
OjpjcmVhdGUoCiAgICAgICAgICAgICBXZWJDb3JlOjpibGVuZChtX2xvY2F0aW9uLCBJbnRQb2lu
dCgpLCBwcm9ncmVzcyksCiAgICAgICAgICAgICBXZWJDb3JlOjpibGVuZChtX3N0ZERldmlhdGlv
biwgMCwgcHJvZ3Jlc3MpLAotICAgICAgICAgICAgV2ViQ29yZTo6YmxlbmQobV9jb2xvciwgQ29s
b3IoQ29sb3I6OnRyYW5zcGFyZW50KSwgcHJvZ3Jlc3MpKTsKKyAgICAgICAgICAgIFdlYkNvcmU6
OmJsZW5kKG1fY29sb3IsIE9wdGlvbmFsUkdCQShPcHRpb25hbFJHQkE6OnRyYW5zcGFyZW50KSwg
cHJvZ3Jlc3MpKTsKIAogICAgIGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qIGZyb21P
cGVyYXRpb24gPSBkb3duY2FzdDxEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uPihmcm9tKTsKICAg
ICBJbnRQb2ludCBmcm9tTG9jYXRpb24gPSBmcm9tT3BlcmF0aW9uID8gZnJvbU9wZXJhdGlvbi0+
bG9jYXRpb24oKSA6IEludFBvaW50KCk7CiAgICAgaW50IGZyb21TdGREZXZpYXRpb24gPSBmcm9t
T3BlcmF0aW9uID8gZnJvbU9wZXJhdGlvbi0+c3RkRGV2aWF0aW9uKCkgOiAwOwotICAgIENvbG9y
IGZyb21Db2xvciA9IGZyb21PcGVyYXRpb24gPyBmcm9tT3BlcmF0aW9uLT5jb2xvcigpIDogQ29s
b3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICBPcHRpb25hbFJHQkEgZnJvbUNvbG9yID0gZnJv
bU9wZXJhdGlvbiA/IGZyb21PcGVyYXRpb24tPmNvbG9yKCkgOiBPcHRpb25hbFJHQkEoT3B0aW9u
YWxSR0JBOjp0cmFuc3BhcmVudCk7CiAgICAgCiAgICAgcmV0dXJuIERyb3BTaGFkb3dGaWx0ZXJP
cGVyYXRpb246OmNyZWF0ZSgKICAgICAgICAgV2ViQ29yZTo6YmxlbmQoZnJvbUxvY2F0aW9uLCBt
X2xvY2F0aW9uLCBwcm9ncmVzcyksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCBkZmI3NDZhOGIw
NWFjM2RlZDlmOTk2ZDJmNGYzY2Q4NGIzMzVkMTQzLi4xZmUzOGJmZDI0MzVlN2E5ZDk2Nzc0NzZl
NmI4YzI5NjdhMTA5NGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTI5OSw3ICsyOTksNyBA
QCBwcml2YXRlOgogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0
aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGNvbnN0IEludFBvaW50JiBs
b2NhdGlvbiwgaW50IHN0ZERldmlhdGlvbiwgQ29sb3IgY29sb3IpCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGNvbnN0IEludFBvaW50JiBs
b2NhdGlvbiwgaW50IHN0ZERldmlhdGlvbiwgT3B0aW9uYWxSR0JBIGNvbG9yKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKGxvY2F0
aW9uLCBzdGREZXZpYXRpb24sIGNvbG9yKSk7CiAgICAgfQpAQCAtMzEzLDcgKzMxMyw3IEBAIHB1
YmxpYzoKICAgICBpbnQgeSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb24ueSgpOyB9CiAgICAg
SW50UG9pbnQgbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2xvY2F0aW9uOyB9CiAgICAgaW50
IHN0ZERldmlhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9uOyB9Ci0gICAgQ29s
b3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CisgICAgT3B0aW9uYWxSR0JBIGNv
bG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfQogCiAgICAgdmlydHVhbCBib29sIGFmZmVj
dHNPcGFjaXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBtb3Zlc1BpeGVscygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTMy
Myw3ICszMjMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgRHJvcFNo
YWRvd0ZpbHRlck9wZXJhdGlvbihjb25zdCBJbnRQb2ludCYgbG9jYXRpb24sIGludCBzdGREZXZp
YXRpb24sIENvbG9yIGNvbG9yKQorICAgIERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24oY29uc3Qg
SW50UG9pbnQmIGxvY2F0aW9uLCBpbnQgc3RkRGV2aWF0aW9uLCBPcHRpb25hbFJHQkEgY29sb3Ip
CiAgICAgICAgIDogRmlsdGVyT3BlcmF0aW9uKERST1BfU0hBRE9XKQogICAgICAgICAsIG1fbG9j
YXRpb24obG9jYXRpb24pCiAgICAgICAgICwgbV9zdGREZXZpYXRpb24oc3RkRGV2aWF0aW9uKQpA
QCAtMzMzLDcgKzMzMyw3IEBAIHByaXZhdGU6CiAKICAgICBJbnRQb2ludCBtX2xvY2F0aW9uOyAv
LyBGSVhNRTogc2hvdWxkIGxvY2F0aW9uIGJlIGluIExlbmd0aHM/CiAgICAgaW50IG1fc3RkRGV2
aWF0aW9uOwotICAgIENvbG9yIG1fY29sb3I7CisgICAgT3B0aW9uYWxSR0JBIG1fY29sb3I7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCmluZGV4IDNhN2E1MDI4
NDNiNTE0MmU0NTdiYWQ0N2YwNDkyYzNiOGU1NjExZGIuLjE5MGI3YWQ4MmZiN2Y4MGU5ZWEyNzU3
M2FmNDBmY2FmOTkwMWY5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZv
aWQgU291cmNlQWxwaGE6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgQVNTRVJUKGltYWdl
QnVmZmVyKTsKIAogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoRmxvYXRQb2ludCgpLCBhYnNvbHV0
ZVBhaW50UmVjdCgpLnNpemUoKSk7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZmlsbFJlY3QoaW1hZ2VS
ZWN0LCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGZpbHRlckNvbnRl
eHQtPmZpbGxSZWN0KGltYWdlUmVjdCwgT3B0aW9uYWxSR0JBOjpibGFjaywgQ29sb3JTcGFjZURl
dmljZVJHQik7CiAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVy
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpLCBDb21wb3NpdGVEZXN0aW5hdGlvbklu
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAppbmRleCAxODcwNGY4ZTFi
OTA0OWFjYTViNjM1MDYwYzg0YmM5YmM2YWY0NWJmLi4xNWFjOTg5ODYwY2JmODA1NDU4MWE5MzFh
NzU5MDgzZGQ4MGRiMWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcApAQCAt
MTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdlYmtpdFZpZGVvU2lua1JlbmRl
cihHc3RCYXNlU2luayogYmFzZVNpbmssIEdzdEJ1ZmZlciogYnVmCiAgICAgICAgICAgICByZXR1
cm4gR1NUX0ZMT1dfRVJST1I7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBXZSBkb24ndCB1c2Ug
Q29sb3I6OnByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yKCkgaGVyZSBiZWNhdXNlCisgICAgICAg
IC8vIFdlIGRvbid0IHVzZSBPcHRpb25hbFJHQkE6OnByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9y
KCkgaGVyZSBiZWNhdXNlCiAgICAgICAgIC8vIG9uZSBmdW5jdGlvbiBjYWxsIHBlciB2aWRlbyBw
aXhlbCBpcyBqdXN0IHRvbyBleHBlbnNpdmU6CiAgICAgICAgIC8vIEZvciA3MjBwL1BBTCBmb3Ig
ZXhhbXBsZSB0aGlzIG1lYW5zIDEyODAqNzIwKjI1PTIzMDQwMDAwCiAgICAgICAgIC8vIGZ1bmN0
aW9uIGNhbGxzIHBlciBzZWNvbmQhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ndGsvQ29sb3JHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0NvbG9yR3RrLmNwcAppbmRleCA4ZjU2YmE2ZmI0ZTBiNjVhOTljMjczZDNiNDcw
YmZkYjZiMzViOWFmLi44ZjY3NDE3YTBjMGNjZWI1NDBkMWZmYTQxMjNlZmU4ZTNhZDc1ZWI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvQ29sb3JHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Db2xvckd0ay5j
cHAKQEAgLTI1LDE0ICsyNSwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNvbG9yOjpD
b2xvcihjb25zdCBHZGtDb2xvciYgYykKK09wdGlvbmFsUkdCQTo6T3B0aW9uYWxSR0JBKGNvbnN0
IEdka0NvbG9yJiBjKQogICAgIDogbV9jb2xvcihtYWtlUkdCKGMucmVkID4+IDgsIGMuZ3JlZW4g
Pj4gOCwgYy5ibHVlID4+IDgpKQogICAgICwgbV92YWxpZCh0cnVlKQogewogfQogCiAjaWZuZGVm
IEdUS19BUElfVkVSU0lPTl8yCi1Db2xvcjo6Q29sb3IoY29uc3QgR2RrUkdCQSYgYykKK09wdGlv
bmFsUkdCQTo6T3B0aW9uYWxSR0JBKGNvbnN0IEdka1JHQkEmIGMpCiAgICAgOiBtX2NvbG9yKG1h
a2VSR0JBKHN0YXRpY19jYXN0PGludD4oYy5yZWQgKiAyNTUpLAogICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxpbnQ+KGMuZ3JlZW4gKiAyNTUpLAogICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxpbnQ+KGMuYmx1ZSAqIDI1NSksCkBAIC00MSw3ICs0MSw3IEBAIENv
bG9yOjpDb2xvcihjb25zdCBHZGtSR0JBJiBjKQogewogfQogCi1Db2xvcjo6b3BlcmF0b3IgR2Rr
UkdCQSgpIGNvbnN0CitPcHRpb25hbFJHQkE6Om9wZXJhdG9yIEdka1JHQkEoKSBjb25zdAogewog
ICAgIGRvdWJsZSByZWQsIGdyZWVuLCBibHVlLCBhbHBoYTsKICAgICBnZXRSR0JBKHJlZCwgZ3Jl
ZW4sIGJsdWUsIGFscGhhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Db2xvck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbG9yTWFjLmgKaW5kZXggMzc2Zjc5ZjgzOTgyZTJhYmNlZTE1M2M3ZjZhOWMwMDE3OWMz
N2EzMC4uZGMwMjE3YTZmY2U5NzA3Y2ZkZjBhMGYxOTE3NzY3ZjAyMTA4ZmU4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLmgKQEAgLTM5LDgg
KzM5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogI2lmIFVTRShBUFBLSVQpCiAgICAg
Ly8gVGhlc2UgZnVuY3Rpb25zIGFzc3VtZSBOU0NvbG9ycyBhcmUgaW4gRGV2aWNlUkdCIGNvbG9y
c3BhY2UKLSAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBjb2xvckZyb21OU0NvbG9yKE5TQ29sb3Ig
Kik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTlNDb2xvciAqbnNDb2xvcihjb25zdCBDb2xvciYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsUkdCQSBjb2xvckZyb21OU0NvbG9yKE5TQ29sb3Ig
Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgTlNDb2xvciAqbnNDb2xvcihjb25zdCBPcHRpb25hbFJH
QkEmKTsKICNlbmRpZgogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB1c2VzVGVzdE1vZGVGb2N1
c1JpbmdDb2xvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0NvbG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0NvbG9yTWFjLm1tCmluZGV4IDViYmM2YjNmYWJiMTU1NzM2MDg4ZmM2NjU1ZGQ0N2ZmNWJlYmYx
M2QuLjBiYTY2MGNiZWZhZjMxYTI3MmVjMzg5OTljN2ExMDMxNDEzZjNiNzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KQEAgLTY3LDEy
ICs2NywxMiBAQCBzdGF0aWMgUkdCQTMyIG1ha2VSR0JBRnJvbU5TQ29sb3IoTlNDb2xvciAqYykK
ICAgICByZXR1cm4gbWFrZVJHQkEoMjU1ICogcmVkQ29tcG9uZW50LCAyNTUgKiBncmVlbkNvbXBv
bmVudCwgMjU1ICogYmx1ZUNvbXBvbmVudCwgMjU1ICogYWxwaGEpOwogfQogCi1Db2xvciBjb2xv
ckZyb21OU0NvbG9yKE5TQ29sb3IgKmMpCitPcHRpb25hbFJHQkEgY29sb3JGcm9tTlNDb2xvcihO
U0NvbG9yICpjKQogewotICAgIHJldHVybiBDb2xvcihtYWtlUkdCQUZyb21OU0NvbG9yKGMpKTsK
KyAgICByZXR1cm4gT3B0aW9uYWxSR0JBKG1ha2VSR0JBRnJvbU5TQ29sb3IoYykpOwogfQogCi1O
U0NvbG9yICpuc0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK05TQ29sb3IgKm5zQ29sb3IoY29u
c3QgT3B0aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICBSR0JBMzIgYyA9IGNvbG9yLnJnYigpOwog
ICAgIHN3aXRjaCAoYykgewpAQCAtODEsMTEgKzgxLDExIEBAIE5TQ29sb3IgKm5zQ29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKQogICAgICAgICAgICAgc3RhdGljIE5TQ29sb3IgKmNsZWFyQ29sb3Ig
PSBbW05TQ29sb3IgY29sb3JXaXRoRGV2aWNlUmVkOjAgZ3JlZW46MCBibHVlOjAgYWxwaGE6MF0g
cmV0YWluXTsKICAgICAgICAgICAgIHJldHVybiBjbGVhckNvbG9yOwogICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgQ29sb3I6OmJsYWNrOiB7CisgICAgICAgIGNhc2UgT3B0aW9uYWxSR0JBOjpibGFj
azogewogICAgICAgICAgICAgc3RhdGljIE5TQ29sb3IgKmJsYWNrQ29sb3IgPSBbW05TQ29sb3Ig
Y29sb3JXaXRoRGV2aWNlUmVkOjAgZ3JlZW46MCBibHVlOjAgYWxwaGE6MV0gcmV0YWluXTsKICAg
ICAgICAgICAgIHJldHVybiBibGFja0NvbG9yOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ29s
b3I6OndoaXRlOiB7CisgICAgICAgIGNhc2UgT3B0aW9uYWxSR0JBOjp3aGl0ZTogewogICAgICAg
ICAgICAgc3RhdGljIE5TQ29sb3IgKndoaXRlQ29sb3IgPSBbW05TQ29sb3IgY29sb3JXaXRoRGV2
aWNlUmVkOjEgZ3JlZW46MSBibHVlOjEgYWxwaGE6MV0gcmV0YWluXTsKICAgICAgICAgICAgIHJl
dHVybiB3aGl0ZUNvbG9yOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbQppbmRleCA5MzY1
ODc4ODMwODJhODU5NmY1MGE4NjAzNmIyM2I2ZjA1NTQzYjBhLi4zMzYyYzc2MzY0N2MyYWZiMmIw
OWQyNmRkZmU2NjY5ZjhhM2I3MTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHRNYWMubW0KQEAgLTcyLDcgKzcy
LDcgQEAgc3RhdGljIGJvb2wgZHJhd0ZvY3VzUmluZ1RvQ29udGV4dEF0VGltZShDR0NvbnRleHRS
ZWYgY29udGV4dCwgQ0dQYXRoUmVmIGZvY3VzUmkKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oSU9T
KQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRoJiBwYXRo
LCBpbnQgLyogd2lkdGggKi8sIGludCAvKiBvZmZzZXQgKi8sIGNvbnN0IENvbG9yJikKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmIHBhdGgsIGludCAvKiB3
aWR0aCAqLywgaW50IC8qIG9mZnNldCAqLywgY29uc3QgT3B0aW9uYWxSR0JBJikKIHsKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCBwYXRoLmlzTnVsbCgp
KQpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5n
KGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB3aWR0aCwgaW50CiB9CiAjZW5kaWYK
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEludFJl
Y3Q+JiByZWN0cywgaW50IHdpZHRoLCBpbnQgb2Zmc2V0LCBjb25zdCBDb2xvciYpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3Rz
LCBpbnQgd2lkdGgsIGludCBvZmZzZXQsIGNvbnN0IE9wdGlvbmFsUkdCQSYpCiB7CiAjaWYgIVBM
QVRGT1JNKElPUykKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggZDUzNDcwNDRlODhjMDhlZGJhNGQ0NjA0
NjlmM2Y5MDdhMDBiOWRjMS4uN2U5M2Q3ZWUzOTY2YzU5M2E4MjNkZDNjODcyNjcxMDY0YzFlYmZk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0yNzQs
NyArMjc0LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgdmFsdWUpCiAgICAgbm90aWZ5Q2hhbmdlKENvbnRlbnRzUmVj
dENoYW5nZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRl
bnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3ZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYg
Y29sb3IpCiB7CiAgICAgaWYgKGNvbG9yID09IG1fc29saWRDb2xvcikKICAgICAgICAgcmV0dXJu
OwpAQCAtNDAwLDcgKzQwMCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVw
ZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCkKICAgICB9CiB9CiAKLXZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwg
ZmxvYXQgd2lkdGgpCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXREZWJ1Z0Jv
cmRlcihjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yLCBmbG9hdCB3aWR0aCkKIHsKICAgICBtX2Rl
YnVnQm9yZGVyQ29sb3IgPSBjb2xvcjsKICAgICBtX2RlYnVnQm9yZGVyV2lkdGggPSB3aWR0aDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggZjU2Y2Y1MTg1OWNk
YzdhYmQ4MGMzNmE2OWFmZDA2YzI4OGEzNGMzMy4uOWUxYWMyMDUyNGY3MzZmNTAwMzE4ODNhNDBi
ZmMwMjBmNDYxNjAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgK
QEAgLTc0LDEzICs3NCwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFuaW1h
dGlvbihjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250
ZW50c1RvSW1hZ2UoSW1hZ2UqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVu
dHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIq
LCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHVzZXND
b250ZW50c0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9
CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hv
d0RlYnVnQm9yZGVyKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0Jv
cmRlcihjb25zdCBDb2xvciYsIGZsb2F0IHdpZHRoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0RGVidWdCb3JkZXIoY29uc3QgT3B0aW9uYWxSR0JBJiwgZmxvYXQgd2lkdGgpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCkgb3ZlcnJp
ZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0
UmVjdCYsIGJvb2wpIG92ZXJyaWRlOwpAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRGaXhlZFRvVmlld3BvcnQoYm9vbCk7CiAgICAgYm9vbCBmaXhlZFRvVmlld3BvcnQoKSBj
b25zdCB7IHJldHVybiBtX2ZpeGVkVG9WaWV3cG9ydDsgfQogCi0gICAgQ29sb3IgZGVidWdCb3Jk
ZXJDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJDb2xvcjsgfQorICAgIE9wdGlv
bmFsUkdCQSBkZWJ1Z0JvcmRlckNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z0JvcmRlckNv
bG9yOyB9CiAgICAgZmxvYXQgZGVidWdCb3JkZXJXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVi
dWdCb3JkZXJXaWR0aDsgfQogICAgIHZvaWQgc2V0UmVwYWludENvdW50KGludCk7CiAKQEAgLTE3
MCw5ICsxNzAsOSBAQCBwcml2YXRlOgogICAgIGludCBtX2NoYW5nZU1hc2s7CiAgICAgYm9vbCBt
X25lZWRzRGlzcGxheTsKICAgICBib29sIG1fZml4ZWRUb1ZpZXdwb3J0OwotICAgIENvbG9yIG1f
c29saWRDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgbV9zb2xpZENvbG9yOwogCi0gICAgQ29sb3Ig
bV9kZWJ1Z0JvcmRlckNvbG9yOworICAgIE9wdGlvbmFsUkdCQSBtX2RlYnVnQm9yZGVyQ29sb3I7
CiAgICAgZmxvYXQgbV9kZWJ1Z0JvcmRlcldpZHRoOwogCiAgICAgVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXIqIG1fY29udGVudHNMYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4IDY1Yzk4NzIyOGQ4
YTk5OGMyNGMxODNkN2I5NzY0NjE3NDA5MzMyMTIuLjk1OWVkMmVhMWIyNjI3ZWEyNmExOGE2ZmU2
N2ZkNDBjODVkNTBjZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaApAQCAtNzIsMTEgKzcyLDExIEBAIHB1Ymxp
YzoKICAgICAgICAgQWxsRWRnZXMgPSBMZWZ0RWRnZSB8IFJpZ2h0RWRnZSB8IFRvcEVkZ2UgfCBC
b3R0b21FZGdlLAogICAgIH07CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihjb25zdCBD
b2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd051bWJlcihpbnQgbnVt
YmVyLCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihjb25zdCBPcHRpb25h
bFJHQkEmLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdOdW1iZXIoaW50IG51
bWJlciwgY29uc3QgT3B0aW9uYWxSR0JBJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNv
bnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCks
IGZsb2F0IG9wYWNpdHkgPSAxLjBmLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcykg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IENvbG9yJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIGNvbnN0IE9wdGlvbmFsUkdCQSYpID0gMDsKIAogICAgIC8vIG1ha2VzIGEg
c3VyZmFjZSB0aGUgdGFyZ2V0IGZvciB0aGUgZm9sbG93aW5nIGRyYXdUZXh0dXJlIGNhbGxzLgog
ICAgIHZpcnR1YWwgdm9pZCBiaW5kU3VyZmFjZShCaXRtYXBUZXh0dXJlKiBzdXJmYWNlKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaAppbmRleCAwNzZkMDFiZTk0MDVl
MWMwNDE1ODkwNTk3OWFlNjRkZjEzY2Y1MTVhLi42MDlhMDMzMDRmZTIyMWU5NGNlN2Q4M2RlNTBk
ZDI4ZTA4MDA5YTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKQEAg
LTQwLDcgKzQwLDcgQEAgY2xhc3MgVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSA6IHB1YmxpYyBU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciwgcHVibGljIFJlZkMKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciosIGludCAvKiByZXBhaW50
Q291bnQgKi8sIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRl
eHR1cmVNYXBwZXIqLCBpbnQgLyogcmVwYWludENvdW50ICovLCBjb25zdCBPcHRpb25hbFJHQkEm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIHsgfQogICAg
IHZpcnR1YWwgflRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUoKSB7IH0KIAogcHJvdGVjdGVkOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJGUFNDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291bnRlci5jcHAKaW5kZXggMmQzMzNhZjM5MGU1Mzgy
ZTFhZWM4ZTUzNjRiYjQyZmZlMGUxODZlMS4uZGJhYjc4MDZlMmU0MWEzNjAyZWNkMTI5ZmRhMGY5
ZTNhOGViZmIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBAIC01
OSw3ICs1OSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckZQU0NvdW50ZXI6OnVwZGF0ZUZQU0FuZERp
c3BsYXkoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwKICAgICAgICAgbV9mcHNUaW1lc3Rh
bXAgKz0gZGVsdGE7CiAgICAgfQogCi0gICAgdGV4dHVyZU1hcHBlci0+ZHJhd051bWJlcihtX2xh
c3RGUFMsIENvbG9yOjpibGFjaywgbG9jYXRpb24sIG1hdHJpeCk7CisgICAgdGV4dHVyZU1hcHBl
ci0+ZHJhd051bWJlcihtX2xhc3RGUFMsIE9wdGlvbmFsUkdCQTo6YmxhY2ssIGxvY2F0aW9uLCBt
YXRyaXgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CmluZGV4IDRjNTQ4MDU2MjM1ZTM5OGZhYzk4MzYwZmU5Y2JmNjI1Yzc1YTFkMDUuLmQwNTllNWMy
Y2ZiYjBmN2M5NDhlOTViODZhMDMyMzJjZWU4MTc5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmVuZFBhaW50aW5nKCkK
ICAgICAgICAgbV9jb250ZXh0M0QtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1RF
U1QpOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd0JvcmRlcihjb25zdCBDb2xvciYg
Y29sb3IsIGZsb2F0IHdpZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgpCit2b2lkIFRleHR1cmVNYXBwZXJH
TDo6ZHJhd0JvcmRlcihjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yLCBmbG9hdCB3aWR0aCwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9k
ZWxWaWV3TWF0cml4KQogewogICAgIGlmIChjbGlwU3RhY2soKS5pc0N1cnJlbnRTY2lzc29yQm94
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlckdMOjpkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgsIGNv
bnN0IEZsb2F0UmVjCiAgICAgbV9jb250ZXh0M0QtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3Jh
bUlEKCkpOwogCiAgICAgZmxvYXQgciwgZywgYiwgYTsKLSAgICBDb2xvcihwcmVtdWx0aXBsaWVk
QVJHQkZyb21Db2xvcihjb2xvcikpLmdldFJHQkEociwgZywgYiwgYSk7CisgICAgT3B0aW9uYWxS
R0JBKHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yKGNvbG9yKSkuZ2V0UkdCQShyLCBnLCBiLCBh
KTsKICAgICBtX2NvbnRleHQzRC0+dW5pZm9ybTRmKHByb2dyYW0tPmNvbG9yTG9jYXRpb24oKSwg
ciwgZywgYiwgYSk7CiAgICAgbV9jb250ZXh0M0QtPmxpbmVXaWR0aCh3aWR0aCk7CiAKQEAgLTMx
MCw3ICszMTAsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd0JvcmRlcihjb25zdCBDb2xv
ciYgY29sb3IsIGZsb2F0IHdpZHRoLCBjb25zdCBGbG9hdFJlYwogfQogCiAvLyBGSVhNRTogZHJh
d051bWJlcigpIHNob3VsZCBzYXZlIGEgbnVtYmVyIHRleHR1cmUtYXRsYXMgYW5kIHJlLXVzZSB3
aGVuZXZlciBwb3NzaWJsZS4KLXZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3TnVtYmVyKGludCBu
dW1iZXIsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgpCit2b2lkIFRleHR1
cmVNYXBwZXJHTDo6ZHJhd051bWJlcihpbnQgbnVtYmVyLCBjb25zdCBPcHRpb25hbFJHQkEmIGNv
bG9yLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1vZGVsVmlld01hdHJpeCkKIHsKICAgICBpbnQgcG9pbnRTaXplID0gODsKIApAQCAt
NDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVGaWx0ZXJQcm9ncmFtKFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtKiBwcm9ncmFtLCBjb25zdCBGaWx0CiAgICAgICAgIGNhc2UgMToK
ICAgICAgICAgICAgIC8vIFNlY29uZCBwYXNzOiB3ZSBuZWVkIHRoZSBzaGFkb3cgY29sb3IgYW5k
IHRoZSBjb250ZW50IHRleHR1cmUgZm9yIGNvbXBvc2l0aW5nLgogICAgICAgICAgICAgZmxvYXQg
ciwgZywgYiwgYTsKLSAgICAgICAgICAgIENvbG9yKHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9y
KHNoYWRvdy5jb2xvcigpKSkuZ2V0UkdCQShyLCBnLCBiLCBhKTsKKyAgICAgICAgICAgIE9wdGlv
bmFsUkdCQShwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcihzaGFkb3cuY29sb3IoKSkpLmdldFJH
QkEociwgZywgYiwgYSk7CiAgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNGYocHJvZ3JhbS0+
Y29sb3JMb2NhdGlvbigpLCByLCBnLCBiLCBhKTsKICAgICAgICAgICAgIGNvbnRleHQtPnVuaWZv
cm0yZihwcm9ncmFtLT5ibHVyUmFkaXVzTG9jYXRpb24oKSwgMCwgc2hhZG93LnN0ZERldmlhdGlv
bigpIC8gZmxvYXQoc2l6ZS5oZWlnaHQoKSkpOwogICAgICAgICAgICAgY29udGV4dC0+dW5pZm9y
bTJmKHByb2dyYW0tPnNoYWRvd09mZnNldExvY2F0aW9uKCksIDAsIDApOwpAQCAtNTM0LDcgKzUz
NCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0
IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJCiAgICAgZHJhd1RleHR1cmVkUXVhZFdpdGhQ
cm9ncmFtKHByb2dyYW0uZ2V0KCksIHRleHR1cmUsIGZsYWdzLCB0ZXh0dXJlU2l6ZSwgdGFyZ2V0
UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVy
R0w6OmRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1hdHJpeCwgY29uc3QgQ29sb3ImIGNvbG9yKQordm9pZCBUZXh0dXJlTWFw
cGVyR0w6OmRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvcikKIHsKICAg
ICBGbGFncyBmbGFncyA9IDA7CiAgICAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wdGlv
bnMgb3B0aW9ucyA9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpTb2xpZENvbG9yOwpAQCAt
NTQ3LDcgKzU0Nyw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3U29saWRDb2xvcihjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uCiAgICAgbV9jb250ZXh0M0Qt
PnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbUlEKCkpOwogCiAgICAgZmxvYXQgciwgZywgYiwg
YTsKLSAgICBDb2xvcihwcmVtdWx0aXBsaWVkQVJHQkZyb21Db2xvcihjb2xvcikpLmdldFJHQkEo
ciwgZywgYiwgYSk7CisgICAgT3B0aW9uYWxSR0JBKHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9y
KGNvbG9yKSkuZ2V0UkdCQShyLCBnLCBiLCBhKTsKICAgICBtX2NvbnRleHQzRC0+dW5pZm9ybTRm
KHByb2dyYW0tPmNvbG9yTG9jYXRpb24oKSwgciwgZywgYiwgYSk7CiAgICAgaWYgKGEgPCAxKQog
ICAgICAgICBmbGFncyB8PSBTaG91bGRCbGVuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAppbmRleCBiZDli
ZjU1MmYyNjg3NWUxMDJiOTRjOWUxMmIzNjhiZTBlZWVkY2EwLi5iZTc3NWU2MzYwMWNhMGNiNDEw
MmNhZTRjNjFkY2U4ZWQ2ZDRlOWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCkBAIC05OCwxMSArOTgs
MTEgQEAgcHVibGljOgogICAgIHR5cGVkZWYgaW50IEZsYWdzOwogCiAgICAgLy8gVGV4dHVyZU1h
cHBlciBpbXBsZW1lbnRhdGlvbgotICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENv
bG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdOdW1iZXIoaW50
IG51bWJlciwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihjb25z
dCBPcHRpb25hbFJHQkEmLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJh
d051bWJlcihpbnQgbnVtYmVyLCBjb25zdCBPcHRpb25hbFJHQkEmLCBjb25zdCBGbG9hdFBvaW50
JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3Nl
ZEVkZ2VzKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoUGxhdGZvcm0z
RE9iamVjdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVs
Vmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRn
ZXMpOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgY29uc3QgT3B0aW9uYWxSR0JBJikgb3ZlcnJpZGU7CiAKICAgICB2
aXJ0dWFsIHZvaWQgYmluZFN1cmZhY2UoQml0bWFwVGV4dHVyZSogc3VyZmFjZSkgb3ZlcnJpZGU7
CiAgICAgQml0bWFwVGV4dHVyZSogY3VycmVudFN1cmZhY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHAKaW5kZXggMzQ1NTM5ODcwMjRhNmU3NWZkOWQxZTM5MDY4MTc4YjllZDcyM2EyYi4u
NjY1YjQxOTMxYjVhMjUwNTA5N2Q4MzA0MzMzNGM3NjI0MDcwMjNmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5jcHAKQEAgLTg0LDEzICs4NCwxMyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXll
cjo6cGFpbnQoKQogICAgIHBhaW50UmVjdXJzaXZlKG9wdGlvbnMpOwogfQogCi1zdGF0aWMgQ29s
b3IgYmxlbmRXaXRoT3BhY2l0eShjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IG9wYWNpdHkpCitz
dGF0aWMgT3B0aW9uYWxSR0JBIGJsZW5kV2l0aE9wYWNpdHkoY29uc3QgT3B0aW9uYWxSR0JBJiBj
b2xvciwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBSR0JBMzIgcmdiYSA9IGNvbG9yLnJnYigpOwot
ICAgIC8vIFNlZSBDb2xvcjo6Z2V0UkdCQSgpIHRvIGtub3cgaG93IHRvIGV4dHJhY3QgYWxwaGEg
ZnJvbSBjb2xvci4KKyAgICAvLyBTZWUgT3B0aW9uYWxSR0JBOjpnZXRSR0JBKCkgdG8ga25vdyBo
b3cgdG8gZXh0cmFjdCBhbHBoYSBmcm9tIGNvbG9yLgogICAgIGZsb2F0IGFscGhhID0gYWxwaGFD
aGFubmVsKHJnYmEpIC8gMjU1LjsKICAgICBmbG9hdCBlZmZlY3RpdmVBbHBoYSA9IGFscGhhICog
b3BhY2l0eTsKLSAgICByZXR1cm4gQ29sb3IoY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShyZ2JhLCBl
ZmZlY3RpdmVBbHBoYSkpOworICAgIHJldHVybiBPcHRpb25hbFJHQkEoY29sb3JXaXRoT3ZlcnJp
ZGVBbHBoYShyZ2JhLCBlZmZlY3RpdmVBbHBoYSkpOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJM
YXllcjo6Y29tcHV0ZVBhdHRlcm5UcmFuc2Zvcm1JZk5lZWRlZCgpCkBAIC01OTIsNyArNTkyLDcg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKICAg
ICBtX3N0YXRlLm9wYWNpdHkgPSBvcGFjaXR5OwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJMYXll
cjo6c2V0U29saWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit2b2lkIFRleHR1cmVNYXBwZXJM
YXllcjo6c2V0U29saWRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yKQogewogICAgIG1f
c3RhdGUuc29saWRDb2xvciA9IGNvbG9yOwogfQpAQCAtNjAyLDcgKzYwMiw3IEBAIHZvaWQgVGV4
dHVyZU1hcHBlckxheWVyOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRl
cnMpCiAgICAgbV9zdGF0ZS5maWx0ZXJzID0gZmlsdGVyczsKIH0KIAotdm9pZCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OnNldERlYnVnVmlzdWFscyhib29sIHNob3dEZWJ1Z0JvcmRlcnMsIGNvbnN0IENv
bG9yJiBkZWJ1Z0JvcmRlckNvbG9yLCBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoLCBib29sIHNob3dS
ZXBhaW50Q291bnRlcikKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXREZWJ1Z1Zpc3VhbHMo
Ym9vbCBzaG93RGVidWdCb3JkZXJzLCBjb25zdCBPcHRpb25hbFJHQkEmIGRlYnVnQm9yZGVyQ29s
b3IsIGZsb2F0IGRlYnVnQm9yZGVyV2lkdGgsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKQogewog
ICAgIG1fc3RhdGUuc2hvd0RlYnVnQm9yZGVycyA9IHNob3dEZWJ1Z0JvcmRlcnM7CiAgICAgbV9z
dGF0ZS5kZWJ1Z0JvcmRlckNvbG9yID0gZGVidWdCb3JkZXJDb2xvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
TGF5ZXIuaAppbmRleCAwYzlkYTcxYmIxOTVjYjRkY2Q3MWYxNTBmN2ZlN2EyZTI2M2FjYWQyLi4y
MzFjNjFjMDMzYmZiMTgzZDNjYjAyMmQxNmVhMzAwZTEyMGQyYWJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29udGVu
dHNPcGFxdWUoYm9vbCk7CiAgICAgdm9pZCBzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCk7CiAg
ICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0KTsKLSAgICB2b2lkIHNldFNvbGlkQ29sb3IoY29uc3Qg
Q29sb3ImKTsKKyAgICB2b2lkIHNldFNvbGlkQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJik7CiAg
ICAgdm9pZCBzZXRDb250ZW50c1RpbGVTaXplKGNvbnN0IEZsb2F0U2l6ZSYpOwogICAgIHZvaWQg
c2V0Q29udGVudHNUaWxlUGhhc2UoY29uc3QgRmxvYXRTaXplJik7CiAgICAgdm9pZCBzZXRGaWx0
ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiAhbV9jdXJyZW50RmlsdGVycy5pc0VtcHR5KCk7CiAgICAgfQogCi0g
ICAgdm9pZCBzZXREZWJ1Z1Zpc3VhbHMoYm9vbCBzaG93RGVidWdCb3JkZXJzLCBjb25zdCBDb2xv
ciYgZGVidWdCb3JkZXJDb2xvciwgZmxvYXQgZGVidWdCb3JkZXJXaWR0aCwgYm9vbCBzaG93UmVw
YWludENvdW50ZXIpOworICAgIHZvaWQgc2V0RGVidWdWaXN1YWxzKGJvb2wgc2hvd0RlYnVnQm9y
ZGVycywgY29uc3QgT3B0aW9uYWxSR0JBJiBkZWJ1Z0JvcmRlckNvbG9yLCBmbG9hdCBkZWJ1Z0Jv
cmRlcldpZHRoLCBib29sIHNob3dSZXBhaW50Q291bnRlcik7CiAgICAgYm9vbCBpc1Nob3dpbmdS
ZXBhaW50Q291bnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvd1JlcGFpbnRDb3VudGVy
OyB9CiAgICAgdm9pZCBzZXRSZXBhaW50Q291bnQoaW50KTsKICAgICB2b2lkIHNldENvbnRlbnRz
TGF5ZXIoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIqKTsKQEAgLTIxMiw5ICsyMTIsOSBAQCBw
cml2YXRlOgogICAgICAgICBGbG9hdFNpemUgY29udGVudHNUaWxlUGhhc2U7CiAgICAgICAgIFRl
eHR1cmVNYXBwZXJMYXllciogbWFza0xheWVyOwogICAgICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIq
IHJlcGxpY2FMYXllcjsKLSAgICAgICAgQ29sb3Igc29saWRDb2xvcjsKKyAgICAgICAgT3B0aW9u
YWxSR0JBIHNvbGlkQ29sb3I7CiAgICAgICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAg
ICAgICAgQ29sb3IgZGVidWdCb3JkZXJDb2xvcjsKKyAgICAgICAgT3B0aW9uYWxSR0JBIGRlYnVn
Qm9yZGVyQ29sb3I7CiAgICAgICAgIGZsb2F0IGRlYnVnQm9yZGVyV2lkdGg7CiAgICAgICAgIGlu
dCByZXBhaW50Q291bnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgK
aW5kZXggMjQ4MmUwZTk0M2Q3MWYxY2QwMTE2Mzc1YWRkZTdmMDRiZThhNGExZC4uMDNlOTRiMTQy
Y2Y3YzgwZDEyNjdjODQ3NmE3YjUyNjA0NmYyZWRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
flRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgZmxvYXQgb3BhY2l0eSA9IDEuMCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVm
ZmVycygpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKFRleHR1cmVNYXBwZXIqIHRl
eHR1cmVNYXBwZXIsIGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5z
Zm9ybSkKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJl
TWFwcGVyLCBjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtKQogICAgIHsKICAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihjb2xvciwg
Ym9yZGVyV2lkdGgsIHRhcmdldFJlY3QsIHRyYW5zZm9ybSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxl
ZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCAzNjI1YzE0ODY0MzFk
NDQ1YTJhOTkxMzIwZWY1MTAxZjQ1ZmUxNmVlLi44NDcyNWIwMmNjOWE0MTkyYjFjZDUxNWRjNzI2
ODkzMzE2MjAxOWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlLmNwcApAQCAtNTUsMTQgKzU1LDE0IEBAIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlCiAg
ICAgICAgIHRpbGUucGFpbnQodGV4dHVyZU1hcHBlciwgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNp
dHksIGNhbGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMocmVjdCgpLCB0aWxlLnJlY3QoKSkpOwogfQog
Ci12b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJhd0JvcmRlcihUZXh0dXJl
TWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGZsb2F0IGJv
cmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0pCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9y
ZTo6ZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBPcHRpb25h
bFJHQkEmIGJvcmRlckNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQogewogICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtICogYWRq
dXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOwogICAgIGZvciAoYXV0byYgdGlsZSA6
IG1fdGlsZXMpCiAgICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIoYm9yZGVyQ29sb3Is
IGJvcmRlcldpZHRoLCB0aWxlLnJlY3QoKSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOwogfQogCi12b2lk
IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1
cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGludCByZXBhaW50Q291bnQsIGNvbnN0IENvbG9yJiBi
b3JkZXJDb2xvciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtKQordm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3Rv
cmU6OmRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBpbnQg
cmVwYWludENvdW50LCBjb25zdCBPcHRpb25hbFJHQkEmIGJvcmRlckNvbG9yLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0p
CiB7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zv
cm0gKiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7CiAgICAgZm9yIChhdXRv
JiB0aWxlIDogbV90aWxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5n
U3RvcmUuaAppbmRleCA0ZjNjY2U4OGNhYmRmZDI0NDQ2ODFkNWE3ZmMxMjJiZWJjMzRhZGIwLi41
YTQwMDQ5ZGYzN2UxNDQxMjliYmZhM2UzNmRjZTUwYzYwMjg4YzE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC0zOSw4ICszOSw4IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1h
cHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxv
YXQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKFRleHR1cmVNYXBwZXIq
LCBjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3
UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciosIGludCByZXBhaW50Q291bnQsIGNvbnN0IENv
bG9yJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiwgY29uc3Qg
T3B0aW9uYWxSR0JBJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdS
ZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiwgaW50IHJlcGFpbnRDb3VudCwgY29uc3QgT3B0
aW9uYWxSR0JBJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
KSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBJbWFn
ZSosIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRh
dGVDb250ZW50c0ZsYWcpOwogICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlcios
IEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbnRSZWN0JiwgQml0bWFw
VGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCAwYzM3NmUwNGRlYmVh
MzlhODNmYzU1N2ZmODNjYjY1Njk1YTI0ZDJiLi4xNjk3ZGZlNGFjMjE2ZjQwY2I2YTk3YjZhMWZm
NWE2NWYxMjhiOTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtNDIzLDcgKzQyMyw3IEBAIGJvb2wgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG5ld0Zp
bHRlcnMpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgT3B0
aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICBpZiAobV9sYXllclN0YXRlLnNvbGlkQ29sb3IgPT0g
Y29sb3IpCiAgICAgICAgIHJldHVybjsKQEAgLTY3MCw3ICs2NzAsNyBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6c3luY0xheWVyU3RhdGUoKQogICAgICAgICB1cGRhdGVEZWJ1Z0lu
ZGljYXRvcnMoKTsKIH0KIAotdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldERlYnVn
Qm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCit2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6c2V0RGVidWdCb3JkZXIoY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvciwg
ZmxvYXQgd2lkdGgpCiB7CiAgICAgQVNTRVJUKG1fbGF5ZXJTdGF0ZS5zaG93RGVidWdCb3JkZXJz
KTsKICAgICBpZiAobV9sYXllclN0YXRlLmRlYnVnQm9yZGVyQ29sb3IgIT0gY29sb3IpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApp
bmRleCBmMDU0YWY1ZDc1YjkxMjA3NWQ0YjA0NzA2NWYxNDFmZmNjNmIwNjc4Li4yYjYzYjM1MTJk
YjI4ZDA4Y2U0N2Q5Yjk3YzY1ZTAzYmM2ZjYzNTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC04OCw3ICs4OCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUaWxlUGhhc2UoY29uc3QgRmxvYXRT
aXplJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVGlsZVNpemUoY29u
c3QgRmxvYXRTaXplJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9J
bWFnZShJbWFnZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvU29s
aWRDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250
ZW50c1RvU29saWRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBi
b29sIHNob3VsZERpcmVjdGx5Q29tcG9zaXRlSW1hZ2UoSW1hZ2UqKSBjb25zdCBvdmVycmlkZTsK
QEAgLTE2MSw3ICsxNjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlUGxhdGZvcm1MYXll
cklmTmVlZGVkKCk7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlcihj
b25zdCBDb2xvciYsIGZsb2F0IHdpZHRoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
RGVidWdCb3JkZXIoY29uc3QgT3B0aW9uYWxSR0JBJiwgZmxvYXQgd2lkdGgpIG92ZXJyaWRlOwog
CiAgICAgYm9vbCBmaXhlZFRvVmlld3BvcnQoKSBjb25zdCB7IHJldHVybiBtX2ZpeGVkVG9WaWV3
cG9ydDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc1N0YXRlLmgKaW5kZXggMTRmMmI3NzUwNDY3OGYwOTc2Mjc4MTgwMjJkZmJlZmEyNzI0MmRm
Ni4uMTIwYWY3NDY5NWYxYzRkMjhiZGM0ZjE2OTJiMTZlMDYxMTUwYjhiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaApAQCAtMTQy
LDggKzE0Miw4IEBAIHN0cnVjdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSB7CiAgICAg
RmxvYXRTaXplIGNvbnRlbnRzVGlsZVBoYXNlOwogICAgIEZsb2F0U2l6ZSBjb250ZW50c1RpbGVT
aXplOwogICAgIGZsb2F0IG9wYWNpdHk7Ci0gICAgQ29sb3Igc29saWRDb2xvcjsKLSAgICBDb2xv
ciBkZWJ1Z0JvcmRlckNvbG9yOworICAgIE9wdGlvbmFsUkdCQSBzb2xpZENvbG9yOworICAgIE9w
dGlvbmFsUkdCQSBkZWJ1Z0JvcmRlckNvbG9yOwogICAgIGZsb2F0IGRlYnVnQm9yZGVyV2lkdGg7
CiAgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwogICAgIFRleHR1cmVNYXBwZXJBbmltYXRp
b25zIGFuaW1hdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tp
bmdTdG9yZUNsaWVudC5oCmluZGV4IGFlOTQ1MWZiNjBlOWFiODgyN2ZjNjZhZjQ4MWFjZDY5Yjg0
MTk3NzMuLjhjNzg4NmExNGU1MWZkZDAzZTkyYzY2M2RlMzY3MTkyMzIyYjQ4ZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9U
aWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oCkBAIC0y
Niw3ICsyNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKIAotY2xhc3MgQ29sb3I7CitjbGFzcyBPcHRpb25hbFJHQkE7CiBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CiBjbGFzcyBTdXJmYWNlVXBkYXRlSW5mbzsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0
bGFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9VcGRhdGVBdGxhcy5jcHAKaW5kZXggNWZmNjEyNWY0MWU1NjJlNTZjZjlhNWQ2MzE1NTVk
ZWVkOGQwYzI1YS4uOTMyNjI4NTMwZTA0ODc3MjMyY2NhNDM0M2VkMTMyNTkyMjMxOGY1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL1VwZGF0ZUF0bGFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIGlmIChtX3N1cHBvcnRzQWxwaGEpIHsKICAgICAgICAgICAg
IGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9zaXplKSwg
Q29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9zaXplKSwgT3B0aW9u
YWxSR0JBOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgICAgICBj
b250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAg
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dENHV2luLmNwcAppbmRleCBjNDkwYjExMTYxZmQ4ZTI3MjNhYTk2NjJkMWI1MDAzOTQ2MzE2Njhi
Li5mMDYzZTJkODE1NzU5YThhMTA4Yjg0MGUwMDJiYjQwMjA1MTVhZmJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcApAQCAtMTgy
LDcgKzE4Miw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsCiAKICAgICBGbG9hdFNpemUgc2hh
ZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXI7Ci0gICAgQ29sb3Igc2hhZG93Q29sb3I7
CisgICAgT3B0aW9uYWxSR0JBIHNoYWRvd0NvbG9yOwogICAgIENvbG9yU3BhY2Ugc2hhZG93Q29s
b3JTcGFjZTsKICAgICBncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNo
YWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKIApAQCAtMTkwLDkgKzE5
MCw5IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsCiAgICAgaWYgKGhhc1NpbXBsZVNoYWRvdykg
ewogICAgICAgICAvLyBQYWludCBzaW1wbGUgc2hhZG93cyBvdXJzZWx2ZXMgaW5zdGVhZCBvZiBy
ZWx5aW5nIG9uIENHIHNoYWRvd3MsIHRvIGF2b2lkIGxvc2luZyBzdWJwaXhlbCBhbnRpYWxpYXNp
bmcuCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICAgICAgQ29s
b3IgZmlsbENvbG9yID0gZ3JhcGhpY3NDb250ZXh0LT5maWxsQ29sb3IoKTsKKyAgICAgICAgT3B0
aW9uYWxSR0JBIGZpbGxDb2xvciA9IGdyYXBoaWNzQ29udGV4dC0+ZmlsbENvbG9yKCk7CiAgICAg
ICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2UgPSBncmFwaGljc0NvbnRleHQtPmZpbGxDb2xv
clNwYWNlKCk7Ci0gICAgICAgIENvbG9yIHNoYWRvd0ZpbGxDb2xvcihzaGFkb3dDb2xvci5yZWQo
KSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hhZG93Q29sb3IuYmx1ZSgpLCBzaGFkb3dDb2xvci5h
bHBoYSgpICogZmlsbENvbG9yLmFscGhhKCkgLyAyNTUpOworICAgICAgICBPcHRpb25hbFJHQkEg
c2hhZG93RmlsbENvbG9yKHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigpLCBz
aGFkb3dDb2xvci5ibHVlKCksIHNoYWRvd0NvbG9yLmFscGhhKCkgKiBmaWxsQ29sb3IuYWxwaGEo
KSAvIDI1NSk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0RmlsbENvbG9yKHNoYWRvd0Zp
bGxDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CiAgICAgICAgIGZsb2F0IHNoYWRvd1RleHRYID0g
cG9pbnQueCgpICsgdHJhbnNsYXRpb24ud2lkdGgoKSArIHNoYWRvd09mZnNldC53aWR0aCgpOwog
ICAgICAgICAvLyBJZiBzaGFkb3dzIGFyZSBpZ25vcmluZyB0cmFuc2Zvcm1zLCB0aGVuIHdlIGhh
dmVuJ3QgYXBwbGllZCB0aGUgWSBjb29yZGluYXRlIGZsaXAgeWV0LCBzbyBkb3duIGlzIG5lZ2F0
aXZlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dENHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAKaW5kZXggMjc0MjI3Yjk2YWVkZjA4YTM0MWI0
YzIzMDgxY2MwM2I4YjZlNDE3OC4uZjc1OTk1ZTE1MDVlODJiNWRjMzk0Y2QyODRjNzY0OTIxN2Q1
ZmNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dENHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCkBAIC0xMzAsMTQgKzEzMCwxNCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpbmRvd3NCaXRtYXAoV2luZG93c0JpdG1hcCogaW1h
Z2UsIGNvbnN0IEludFBvaW50JiBwbwogICAgIENHQ29udGV4dERyYXdJbWFnZShtX2RhdGEtPm1f
Y2dDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKHBvaW50LngoKSwgcG9pbnQueSgpLCBpbWFnZS0+
c2l6ZSgpLndpZHRoKCksIGltYWdlLT5zaXplKCkuaGVpZ2h0KCkpLCBjZ0ltYWdlLmdldCgpKTsg
ICAKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYg
cGF0aCwgaW50IHdpZHRoLCBpbnQgb2Zmc2V0LCBjb25zdCBDb2xvciYgY29sb3IpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRoJiBwYXRoLCBpbnQgd2lkdGgs
IGludCBvZmZzZXQsIGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IpCiB7CiAgICAgLy8gRklYTUU6
IGltcGxlbWVudAogfQogCiAvLyBGSVhNRTogVGhpcyBpcyBuZWFybHkgaWRlbnRpY2FsIHRvIHRo
ZSBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcgZnVuY3Rpb24gaW4gR3JhcGhpY3NDb250
ZXh0TWFjLm1tLgogLy8gVGhlIGNvZGUgY291bGQgbW92ZSB0byBHcmFwaGljc0NvbnRleHRDRy5j
cHAgYW5kIGJlIHNoYXJlZC4KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNv
bnN0IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB3aWR0aCwgaW50IG9mZnNldCwgY29uc3Qg
Q29sb3ImIGNvbG9yKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3Qg
VmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50IHdpZHRoLCBpbnQgb2Zmc2V0LCBjb25zdCBPcHRp
b25hbFJHQkEmIGNvbG9yKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTE2NSwyMCArMTY1LDIwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB3aWR0aCwgaW50CiB9
CiAKIC8vIFB1bGxlZCBmcm9tIEdyYXBoaWNzQ29udGV4dENHCi1zdGF0aWMgdm9pZCBzZXRDR1N0
cm9rZUNvbG9yKENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDb2xvciYgY29sb3IpCitzdGF0
aWMgdm9pZCBzZXRDR1N0cm9rZUNvbG9yKENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBPcHRp
b25hbFJHQkEmIGNvbG9yKQogewogICAgIENHRmxvYXQgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGE7
CiAgICAgY29sb3IuZ2V0UkdCQShyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CiAgICAgQ0dDb250
ZXh0U2V0UkdCU3Ryb2tlQ29sb3IoY29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwog
fQogCi1zdGF0aWMgY29uc3QgQ29sb3ImIHNwZWxsaW5nUGF0dGVybkNvbG9yKCkgewotICAgIHN0
YXRpYyBjb25zdCBDb2xvciBzcGVsbGluZ0NvbG9yKDI1NSwgMCwgMCk7CitzdGF0aWMgY29uc3Qg
T3B0aW9uYWxSR0JBJiBzcGVsbGluZ1BhdHRlcm5Db2xvcigpIHsKKyAgICBzdGF0aWMgY29uc3Qg
T3B0aW9uYWxSR0JBIHNwZWxsaW5nQ29sb3IoMjU1LCAwLCAwKTsKICAgICByZXR1cm4gc3BlbGxp
bmdDb2xvcjsKIH0KIAotc3RhdGljIGNvbnN0IENvbG9yJiBncmFtbWFyUGF0dGVybkNvbG9yKCkg
ewotICAgIHN0YXRpYyBjb25zdCBDb2xvciBncmFtbWFyQ29sb3IoMCwgMTI4LCAwKTsKK3N0YXRp
YyBjb25zdCBPcHRpb25hbFJHQkEmIGdyYW1tYXJQYXR0ZXJuQ29sb3IoKSB7CisgICAgc3RhdGlj
IGNvbnN0IE9wdGlvbmFsUkdCQSBncmFtbWFyQ29sb3IoMCwgMTI4LCAwKTsKICAgICByZXR1cm4g
Z3JhbW1hckNvbG9yOwogfQogCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdMaW5lRm9yRG9jdW1lbnRNYXJrZXIoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZs
b2F0IHcKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAg
IENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CiAKLSAgICBjb25zdCBDb2xvciYgcGF0dGVy
bkNvbG9yID0gc3R5bGUgPT0gRG9jdW1lbnRNYXJrZXJHcmFtbWFyTGluZVN0eWxlID8gZ3JhbW1h
clBhdHRlcm5Db2xvcigpIDogc3BlbGxpbmdQYXR0ZXJuQ29sb3IoKTsKKyAgICBjb25zdCBPcHRp
b25hbFJHQkEmIHBhdHRlcm5Db2xvciA9IHN0eWxlID09IERvY3VtZW50TWFya2VyR3JhbW1hckxp
bmVTdHlsZSA/IGdyYW1tYXJQYXR0ZXJuQ29sb3IoKSA6IHNwZWxsaW5nUGF0dGVybkNvbG9yKCk7
CiAgICAgc2V0Q0dTdHJva2VDb2xvcihjb250ZXh0LCBwYXR0ZXJuQ29sb3IpOwogCiAgICAgd2tT
ZXRQYXR0ZXJuUGhhc2VJblVzZXJTcGFjZShjb250ZXh0LCBwb2ludCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcAppbmRleCA1OThjNDQ0MzA4ZWM1NjY5N2E5
ZjVkZTJkNWFmYzE5M2JlOWUzZjgwLi5kMWY5MDc4N2YzMDIwZmFmNzM4NWY2Mjg2ZDZjYzE5NDI0
ZmIxZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAK
QEAgLTU2LDkgKzU2LDkgQEAgU3RyaW5nIERyYWdEYXRhOjphc1BsYWluVGV4dCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fcGxhdGZvcm1EcmFnRGF0YS0+dGV4dCgpOwogfQogCi1Db2xvciBEcmFnRGF0
YTo6YXNDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgRHJhZ0RhdGE6OmFzQ29sb3IoKSBjb25z
dAogewotICAgIHJldHVybiBDb2xvcigpOworICAgIHJldHVybiBPcHRpb25hbFJHQkEoKTsKIH0K
IAogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLmgKaW5kZXggNDRiYWJj
Y2M0OTBiZjg0OWFmMTk5YmVjZGM0MmJjNGFiMjFjODVhNy4uYmE2Y2NkNDVhMzI5ZTE0YzQzMGEy
Mjc3OTE5NDBmMDhhMDA4OTgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0xlZ2FjeVRpbGVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9M
ZWdhY3lUaWxlQ2FjaGUuaApAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKICAgICBGbG9hdFJl
Y3QgdmlzaWJsZVJlY3RJbkxheWVyKENBTGF5ZXIgKikgY29uc3Q7CiAgICAgQ0FMYXllciogaG9z
dExheWVyKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgdGlsZUNhcGFjaXR5Rm9yR3JpZChMZWdhY3lU
aWxlR3JpZCopOwotICAgIENvbG9yIGNvbG9yRm9yR3JpZFRpbGVCb3JkZXIoTGVnYWN5VGlsZUdy
aWQqKSBjb25zdDsKKyAgICBPcHRpb25hbFJHQkEgY29sb3JGb3JHcmlkVGlsZUJvcmRlcihMZWdh
Y3lUaWxlR3JpZCopIGNvbnN0OwogICAgIHZvaWQgc2V0T3ZlcnJpZGVWaXNpYmxlUmVjdChPcHRp
b25hbDxGbG9hdFJlY3Q+KTsKIAogICAgIHZvaWQgZG9QZW5kaW5nUmVwYWludHMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCmluZGV4IDkyN2U5
YThiN2I0MzBlYjIxNzBiMGU5Y2RhYTIwMjg0MWI3YjI4YjIuLjkyZGEwZDc4ZTAzNzViMThmMWEy
ZjhhZDYwNGZlNWY1NmIzNzZmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L0xlZ2FjeVRpbGVDYWNoZS5tbQpAQCAtNDcyLDEyICs0NzIsMTIgQEAgdW5zaWduZWQgTGVnYWN5
VGlsZUNhY2hlOjp0aWxlQ2FwYWNpdHlGb3JHcmlkKExlZ2FjeVRpbGVHcmlkKiBncmlkKQogICAg
IHJldHVybiBncmlkQ2FwYWNpdHkgKiAzIC8gNDsKIH0KIAotQ29sb3IgTGVnYWN5VGlsZUNhY2hl
Ojpjb2xvckZvckdyaWRUaWxlQm9yZGVyKExlZ2FjeVRpbGVHcmlkKiBncmlkKSBjb25zdAorT3B0
aW9uYWxSR0JBIExlZ2FjeVRpbGVDYWNoZTo6Y29sb3JGb3JHcmlkVGlsZUJvcmRlcihMZWdhY3lU
aWxlR3JpZCogZ3JpZCkgY29uc3QKIHsKICAgICBpZiAoZ3JpZCA9PSBtX3pvb21lZE91dFRpbGVH
cmlkLmdldCgpKQotICAgICAgICByZXR1cm4gQ29sb3IoLjNmLCAuMGYsIDAuNGYsIDAuNWYpOwor
ICAgICAgICByZXR1cm4gT3B0aW9uYWxSR0JBKC4zZiwgLjBmLCAwLjRmLCAwLjVmKTsKIAotICAg
IHJldHVybiBDb2xvciguMGYsIC4wZiwgMC40ZiwgMC41Zik7CisgICAgcmV0dXJuIE9wdGlvbmFs
UkdCQSguMGYsIC4wZiwgMC40ZiwgMC41Zik7CiB9CiAKIHN0YXRpYyBib29sIHNob3VsZFJlcGFp
bnRJblBpZWNlcyhjb25zdCBDR1JlY3QmIGRpcnR5UmVjdCwgQ0dTUmVnaW9uT2JqIGRpcnR5UmVn
aW9uLCBDR0Zsb2F0IGNvbnRlbnRzU2NhbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCBmYTI1NmU2NDZlN2UyMTRj
NWY1MDg0ZDk2YzFiYjI4NjZlZWQxZDUzLi4yMjM3ZWM2MTNkZDBiNjMyMDJkYWU3OTRiMjA2MTI3
NjA1Y2FhYjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTEwMCw5ICsxMDAsOSBAQCBTdHJpbmcgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYpCiAgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQogCi1Db2xvciBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNvbG9yKCkKK09wdGlvbmFsUkdC
QSBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNvbG9yKCkKIHsKLSAgICByZXR1cm4gQ29sb3IoKTsKKyAg
ICByZXR1cm4gT3B0aW9uYWxSR0JBKCk7CiB9CiAKIFVSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnVy
bCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCA4ZjBiZTVlNGViM2NkN2M3
ZWU5YWZmNjIyNTcyMGU2M2RhMzQzYTdkLi44ZjQ3ODQ2Yjg4ZDEzN2E5NzdiMTM0YjM2ZTM5ODEx
YTEwMGM2YjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTE2NSw3ICsx
NjUsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRTZXR1
cEZ1bGxzY3JlZW4oKQogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gdmlkZW9GdWxs
c2NyZWVuTGF5ZXIgPSBbbV92aWRlb0Z1bGxzY3JlZW5WaWV3IGxheWVyXTsKICAgICBXZWJUaHJl
YWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXMsIHZpZGVvRnVsbHNjcmVlbkxheWVyXSB7Ci0gICAgICAg
IFt2aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihX
ZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnQsIFdlYkNvcmU6OkNvbG9yU3BhY2VEZXZpY2VSR0Ip
XTsKKyAgICAgICAgW3ZpZGVvRnVsbHNjcmVlbkxheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNo
ZWRDR0NvbG9yKFdlYkNvcmU6Ok9wdGlvbmFsUkdCQTo6dHJhbnNwYXJlbnQsIFdlYkNvcmU6OkNv
bG9yU3BhY2VEZXZpY2VSR0IpXTsKICAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIuZ2V0KCkpOwogICAgICAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpc10gewogICAgICAg
ICAgICAgbV9pbnRlcmZhY2UtPmVudGVyRnVsbHNjcmVlbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCmluZGV4IDljYjIwOGEwMjI1ZDk2NzMyZTZjZjNiMTll
MWY4OTIzNWViM2FjMjIuLjgwMjI4OTFjZjA4MmZlMWU4NjNkMThkNTYzMWY0MjA3YWFkN2IzMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KQEAgLTExNiw3
ICsxMTYsNyBAQCBTdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KCkgY29uc3QKICAgICByZXR1
cm4gWyhOU1N0cmluZyAqKXN0cmluZyBwcmVjb21wb3NlZFN0cmluZ1dpdGhDYW5vbmljYWxNYXBw
aW5nXTsKIH0KIAotQ29sb3IgRHJhZ0RhdGE6OmFzQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JB
IERyYWdEYXRhOjphc0NvbG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jb2xvcihtX3Bhc3RlYm9hcmROYW1lKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9h
cmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJk
TWFjLm1tCmluZGV4IGU4MjI5OWZmYzlhNWJmOGM2MjQxYzE4NmU2M2MwYTg4OGEzMmQzNDMuLjE5
MTM3MWZjMzc5MzgxYTlhNjRlMmFlZDhmY2I0MWY2ZmMwNWY4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtODIs
NyArODIsNyBAQCBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1bmlxdWVOYW1lKCkKICAgICBy
ZXR1cm4gW1tOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhVbmlxdWVOYW1lXSBuYW1lXTsKIH0K
IAotQ29sb3IgUGxhdGZvcm1QYXN0ZWJvYXJkOjpjb2xvcigpCitPcHRpb25hbFJHQkEgUGxhdGZv
cm1QYXN0ZWJvYXJkOjpjb2xvcigpCiB7CiAgICAgTlNDb2xvciAqY29sb3IgPSBbTlNDb2xvciBj
b2xvckZyb21QYXN0ZWJvYXJkOm1fcGFzdGVib2FyZC5nZXQoKV07CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oCmluZGV4IGRjZDg2MTll
YmM0MDVjZTcxZTM3NmViZjZiYjQ4MWMxMTNjYWZjNjEuLjI1ODBiZTJkZDQxZmZlZTZjNDI4MjRk
Mjk4ZDIzYzgxMWI2NzA2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxiYXJUaGVtZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxiYXJUaGVtZU1hYy5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCBzZXRJc0N1cnJlbnRseURyYXdpbmdJbnRvTGF5ZXIoYm9vbCk7CiAKICNpZiBFTkFCTEUo
UlVCQkVSX0JBTkRJTkcpCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0VXBPdmVy
aGFuZ0FyZWFCYWNrZ3JvdW5kKENBTGF5ZXIgKiwgY29uc3QgQ29sb3ImIGN1c3RvbUJhY2tncm91
bmRDb2xvciA9IENvbG9yKCkpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFVw
T3ZlcmhhbmdBcmVhQmFja2dyb3VuZChDQUxheWVyICosIGNvbnN0IE9wdGlvbmFsUkdCQSYgY3Vz
dG9tQmFja2dyb3VuZENvbG9yID0gT3B0aW9uYWxSR0JBKCkpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyB2b2lkIHJlbW92ZU92ZXJoYW5nQXJlYUJhY2tncm91bmQoQ0FMYXllciAqKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFVwT3ZlcmhhbmdBcmVhU2hhZG93KENB
TGF5ZXIgKik7CkBAIC04OSw3ICs4OSw3IEBAIHByb3RlY3RlZDoKICAgICBpbnQgc2Nyb2xsYmFy
UGFydFRvSElQcmVzc2VkU3RhdGUoU2Nyb2xsYmFyUGFydCk7CiAKICNpZiBFTkFCTEUoUlVCQkVS
X0JBTkRJTkcpCi0gICAgdmlydHVhbCB2b2lkIHNldFVwT3ZlcmhhbmdBcmVhc0xheWVyQ29udGVu
dHMoR3JhcGhpY3NMYXllciosIGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIHNldFVwT3ZlcmhhbmdBcmVhc0xheWVyQ29udGVudHMoR3JhcGhpY3NMYXllciosIGNvbnN0
IE9wdGlvbmFsUkdCQSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRVcENvbnRlbnRT
aGFkb3dMYXllcihHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAjZW5kaWYKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KaW5kZXggNzdm
MmQ4MDhjYzY0ODU3MTFiMWE5MmVjOGY4YmNiOTdjMzhjNjg2Ni4uOTFjODJkYWE0MTU0NjBmYTQ0
ODI0ZjU0NDYwZTI0YjU1OGZiZTkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQpAQCAtNTQwLDcgKzU0MCw3IEBAIHN0YXRpYyBSZXRh
aW5QdHI8Q0dDb2xvclJlZj4gbGluZW5CYWNrZ3JvdW5kQ29sb3IoKQogICAgIHJldHVybiBhZG9w
dENGKENHQ29sb3JDcmVhdGVXaXRoUGF0dGVybihjb2xvclNwYWNlLmdldCgpLCBwYXR0ZXJuLmdl
dCgpLCAmYWxwaGEpKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6c2V0VXBPdmVyaGFu
Z0FyZWFCYWNrZ3JvdW5kKENBTGF5ZXIgKmxheWVyLCBjb25zdCBDb2xvciYgY3VzdG9tQmFja2dy
b3VuZENvbG9yKQordm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6c2V0VXBPdmVyaGFuZ0FyZWFCYWNr
Z3JvdW5kKENBTGF5ZXIgKmxheWVyLCBjb25zdCBPcHRpb25hbFJHQkEmIGN1c3RvbUJhY2tncm91
bmRDb2xvcikKIHsKICAgICBzdGF0aWMgQ0dDb2xvclJlZiBjYWNoZWRMaW5lbkJhY2tncm91bmRD
b2xvciA9IGxpbmVuQmFja2dyb3VuZENvbG9yKCkubGVha1JlZigpOwogICAgIC8vIFdlIG9wZXJh
dGUgb24gdGhlIENBTGF5ZXIgZGlyZWN0bHkgaGVyZSwgc2luY2UgR3JhcGhpY3NMYXllciBkb2Vz
bid0IGhhdmUgdGhlIGNvbmNlcHQKQEAgLTU3Niw3ICs1NzYsNyBAQCB2b2lkIFNjcm9sbGJhclRo
ZW1lTWFjOjpyZW1vdmVPdmVyaGFuZ0FyZWFTaGFkb3coQ0FMYXllciAqbGF5ZXIpCiAgICAgbGF5
ZXIuc2hhZG93T3BhY2l0eSA9IDA7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnNldFVw
T3ZlcmhhbmdBcmVhc0xheWVyQ29udGVudHMoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwg
Y29uc3QgQ29sb3ImIGN1c3RvbUJhY2tncm91bmRDb2xvcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVN
YWM6OnNldFVwT3ZlcmhhbmdBcmVhc0xheWVyQ29udGVudHMoR3JhcGhpY3NMYXllciogZ3JhcGhp
Y3NMYXllciwgY29uc3QgT3B0aW9uYWxSR0JBJiBjdXN0b21CYWNrZ3JvdW5kQ29sb3IpCiB7CiAg
ICAgU2Nyb2xsYmFyVGhlbWVNYWM6OnNldFVwT3ZlcmhhbmdBcmVhQmFja2dyb3VuZChncmFwaGlj
c0xheWVyLT5wbGF0Zm9ybUxheWVyKCksIGN1c3RvbUJhY2tncm91bmRDb2xvcik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAK
aW5kZXggOTk1NDQ3YjU2ODAxMDM4Y2ZmZTMzMTU4OWM3NzY0MGJjZmZjODE0YS4uNGU3ZjQzYWZk
YzZjZGVlYzlhNDcxZWU3NjhkNjQ3MjRlOTYwMTlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcApAQCAtNDQsMTMgKzQ0LDEz
IEBAIGludCBTY3JvbGxiYXJUaGVtZU1vY2s6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJD
b250cm9sU2l6ZSBjb250cm9sU2l6ZSkKIAogdm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50
VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3Jv
bGxiYXIsIGNvbnN0IEludFJlY3QmIHRyYWNrUmVjdCkKIHsKLSAgICBjb250ZXh0LmZpbGxSZWN0
KHRyYWNrUmVjdCwgc2Nyb2xsYmFyLmVuYWJsZWQoKSA/IENvbG9yOjpsaWdodEdyYXkgOiBDb2xv
cigweEZGRTBFMEUwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5maWxsUmVj
dCh0cmFja1JlY3QsIHNjcm9sbGJhci5lbmFibGVkKCkgPyBPcHRpb25hbFJHQkE6OmxpZ2h0R3Jh
eSA6IE9wdGlvbmFsUkdCQSgweEZGRTBFMEUwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiB9CiAK
IHZvaWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRodW1iUmVjdCkKIHsK
ICAgICBpZiAoc2Nyb2xsYmFyLmVuYWJsZWQoKSkKLSAgICAgICAgY29udGV4dC5maWxsUmVjdCh0
aHVtYlJlY3QsIENvbG9yOjpkYXJrR3JheSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
IGNvbnRleHQuZmlsbFJlY3QodGh1bWJSZWN0LCBPcHRpb25hbFJHQkE6OmRhcmtHcmF5LCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9E
cmFnRGF0YVdpbi5jcHAKaW5kZXggNzAwNTcwYWQ1NDA4NTI0OThkYTEwNmM2ZTY1YTZmOTlmM2Qw
ZjUyNi4uNWY2MDgxZTQxMmVhNDFlMjUwYzM1YmU3MzYxYjVhMDc1ZGJmNDM0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCkBAIC0yMDIsOSArMjAyLDkg
QEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiAgICAg
ICAgIHx8IGNvbnRhaW5zQ29sb3IoKTsKIH0KIAotQ29sb3IgRHJhZ0RhdGE6OmFzQ29sb3IoKSBj
b25zdAorT3B0aW9uYWxSR0JBIERyYWdEYXRhOjphc0NvbG9yKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gQ29sb3IoKTsKKyAgICByZXR1cm4gT3B0aW9uYWxSR0JBKCk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKaW5kZXggNWUwZGQ2YTVhYzRh
YzAzMDIzM2I3MWNiMTE5OWQ4ODQxOTAzMjJlNC4uZGVlZjNiMTZkZWE4YmRkZWI0OGFjZTIxYjJk
ZmJhYzcyMmFlY2YyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdJbWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFn
ZVdpbi5jcHAKQEAgLTE4OSwxNCArMTg5LDE0IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1h
Z2VGb3JMaW5rKFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGluTGFiZWwsIEZvbnRSZW5kZXJpCiAg
ICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQoY29udGV4dFJlZik7CiAgICAgLy8gT24gTWFjIGFs
cGhhIGlzIHswLjcsIDAuNywgMC43LCAwLjh9LCBob3dldmVyIHdlIGNhbid0IGNvbnRyb2wgYWxw
aGEKICAgICAvLyBmb3IgZHJhZyBpbWFnZXMgb24gd2luLCBzbyB3ZSB1c2UgMQotICAgIHN0YXRp
YyBjb25zdCBDb2xvciBiYWNrZ3JvdW5kQ29sb3IoMTQwLCAxNDAsIDE0MCk7CisgICAgc3RhdGlj
IGNvbnN0IE9wdGlvbmFsUkdCQSBiYWNrZ3JvdW5kQ29sb3IoMTQwLCAxNDAsIDE0MCk7CiAgICAg
c3RhdGljIGNvbnN0IEludFNpemUgcmFkaWkoRHJhZ0xhYmVsUmFkaXVzLCBEcmFnTGFiZWxSYWRp
dXMpOwogICAgIEludFJlY3QgcmVjdCgwLCAwLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXpl
LmhlaWdodCgpKTsKICAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0
KHJlY3QsIHJhZGlpLCByYWRpaSwgcmFkaWksIHJhZGlpKSwgYmFja2dyb3VuZENvbG9yLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKICAKICAgICAvLyBEcmF3IHRoZSB0ZXh0Ci0gICAgc3RhdGljIGNv
bnN0IENvbG9yIHRvcENvbG9yKDAsIDAsIDAsIDI1NSk7IC8vIG9yaWdpbmFsIGFscGhhID0gMC43
NQotICAgIHN0YXRpYyBjb25zdCBDb2xvciBib3R0b21Db2xvcigyNTUsIDI1NSwgMjU1LCAxMjcp
OyAvLyBvcmlnaW5hbCBhbHBoYSA9IDAuNQorICAgIHN0YXRpYyBjb25zdCBPcHRpb25hbFJHQkEg
dG9wQ29sb3IoMCwgMCwgMCwgMjU1KTsgLy8gb3JpZ2luYWwgYWxwaGEgPSAwLjc1CisgICAgc3Rh
dGljIGNvbnN0IE9wdGlvbmFsUkdCQSBib3R0b21Db2xvcigyNTUsIDI1NSwgMjU1LCAxMjcpOyAv
LyBvcmlnaW5hbCBhbHBoYSA9IDAuNQogICAgIGlmIChkcmF3VVJMU3RyaW5nKSB7CiAgICAgICAg
IGlmIChjbGlwVVJMU3RyaW5nKQogICAgICAgICAgICAgdXJsU3RyaW5nID0gU3RyaW5nVHJ1bmNh
dG9yOjpyaWdodFRydW5jYXRlKHVybFN0cmluZywgaW1hZ2VTaXplLndpZHRoKCkgLSAoRHJhZ0xh
YmVsQm9yZGVyWCAqIDIuMGYpLCAqdXJsRm9udCwgU3RyaW5nVHJ1bmNhdG9yOjpFbmFibGVSb3Vu
ZGluZ0hhY2tzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1
cE1lbnVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5j
cHAKaW5kZXggMTk2N2ZhZWQ0NDBmMjZiZTE2ZDEwNzk2ZGUwYjE1YjM0YzIzOGJkNS4uY2RkN2Y4
NGY0ZDM3YTBiNTdiMjUyNTA4OTMyNmQ0MWM1Y2M3MDQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAKQEAgLTYxNSw3ICs2MTUsNyBAQCB2b2lkIFBv
cHVwTWVudVdpbjo6cGFpbnQoY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgSERDIGhkYykKICAg
ICBmb3IgKGludCB5ID0gbGlzdFJlY3QueSgpOyB5IDwgbGlzdFJlY3QubWF4WSgpOyB5ICs9IG1f
aXRlbUhlaWdodCkgewogICAgICAgICBpbnQgaW5kZXggPSB5IC8gbV9pdGVtSGVpZ2h0OwogCi0g
ICAgICAgIENvbG9yIG9wdGlvbkJhY2tncm91bmRDb2xvciwgb3B0aW9uVGV4dENvbG9yOworICAg
ICAgICBPcHRpb25hbFJHQkEgb3B0aW9uQmFja2dyb3VuZENvbG9yLCBvcHRpb25UZXh0Q29sb3I7
CiAgICAgICAgIFBvcHVwTWVudVN0eWxlIGl0ZW1TdHlsZSA9IGNsaWVudCgpLT5pdGVtU3R5bGUo
aW5kZXgpOwogICAgICAgICBpZiAoaW5kZXggPT0gZm9jdXNlZEluZGV4KCkpIHsKICAgICAgICAg
ICAgIG9wdGlvbkJhY2tncm91bmRDb2xvciA9IFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+
YWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwCmluZGV4IDk0ZTA5
NDkxMGUyOGYzMDllMDNjNWUwMzMzZWFiMWQ0ZjQ4ZjBjNmMuLjM2MDZjYzA1ODE5MmEwNzFhZDhi
ZmJmZTM4NTdmMWUxY2EyNGU0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIGJv
b2wgaXNPbmVMZWZ0VG9SaWdodFJ1bihjb25zdCBUZXh0UnVuJiBydW4pCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0YXRpYyB2b2lkIGRvRHJhd1RleHRBdFBvaW50KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBJbnRQb2ludCYgcG9pbnQsIGNvbnN0
IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBDb2xvciYgY29sb3IsIGludCB1bmRlcmxpbmVkSW5k
ZXgpCitzdGF0aWMgdm9pZCBkb0RyYXdUZXh0QXRQb2ludChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgSW50UG9pbnQmIHBvaW50LCBjb25zdCBGb250
Q2FzY2FkZSYgZm9udCwgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvciwgaW50IHVuZGVybGluZWRJ
bmRleCkKIHsKICAgICBUZXh0UnVuIHJ1bih0ZXh0KTsKIApAQCAtNzYsNyArNzYsNyBAQCBzdGF0
aWMgdm9pZCBkb0RyYXdUZXh0QXRQb2ludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgdGV4dCwgY29ucwogICAgIH0KIH0KIAotdm9pZCBXZWJDb3JlRHJhd0RvdWJsZWRU
ZXh0QXRQb2ludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGV4dCwg
Y29uc3QgSW50UG9pbnQmIHBvaW50LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgQ29s
b3ImIHRvcENvbG9yLCBjb25zdCBDb2xvciYgYm90dG9tQ29sb3IsIGludCB1bmRlcmxpbmVkSW5k
ZXgpCit2b2lkIFdlYkNvcmVEcmF3RG91YmxlZFRleHRBdFBvaW50KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBJbnRQb2ludCYgcG9pbnQsIGNvbnN0
IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBPcHRpb25hbFJHQkEmIHRvcENvbG9yLCBjb25zdCBP
cHRpb25hbFJHQkEmIGJvdHRvbUNvbG9yLCBpbnQgdW5kZXJsaW5lZEluZGV4KQogewogICAgIGNv
bnRleHQuc2F2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
V2ViQ29yZVRleHRSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNv
cmVUZXh0UmVuZGVyZXIuaAppbmRleCBiODQzZjc2MGJmMGNkNDU5ODNjZjBhODViMzcxOTJlNDhl
Y2QyZDc2Li5jMDMzMzU4NDQ4ZTllNTg5NWE0MmU4MmYxY2FkMjc2OGY1OTgyNGY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmgKQEAg
LTMwLDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBDb2xv
cjsKKyAgICBjbGFzcyBPcHRpb25hbFJHQkE7CiAgICAgY2xhc3MgRm9udENhc2NhZGU7CiAgICAg
Y2xhc3MgR3JhcGhpY3NDb250ZXh0OwogICAgIGNsYXNzIEludFBvaW50OwogCi0gICAgdm9pZCBX
ZWJDb3JlRHJhd0RvdWJsZWRUZXh0QXRQb2ludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgQ29sb3ImIHRv
cENvbG9yLCBjb25zdCBDb2xvciYgYm90dG9tQ29sb3IsIGludCB1bmRlcmxpbmVkSW5kZXggPSAt
MSk7CisgICAgdm9pZCBXZWJDb3JlRHJhd0RvdWJsZWRUZXh0QXRQb2ludChHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEZvbnRDYXNjYWRlJiwg
Y29uc3QgT3B0aW9uYWxSR0JBJiB0b3BDb2xvciwgY29uc3QgT3B0aW9uYWxSR0JBJiBib3R0b21D
b2xvciwgaW50IHVuZGVybGluZWRJbmRleCA9IC0xKTsKICAgICBmbG9hdCBXZWJDb3JlVGV4dEZs
b2F0V2lkdGgoY29uc3QgU3RyaW5nJiwgY29uc3QgRm9udENhc2NhZGUmKTsKIAogICAgIHZvaWQg
V2ViQ29yZVNldFNob3VsZFVzZUZvbnRTbW9vdGhpbmcoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQm9yZGVyRWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQm9yZGVyRWRnZS5jcHAKaW5kZXggZTYxMmRlNWY2ZDQ3ZTJmMDBiNDk5NDI0OWNkMjI4
NzM5MDllNWIyMS4uNWE0YmVkM2QxNjFmYzA4N2FlMWM5NjdlMDRjNzI5ZjUyNGMwZTc2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JvcmRlckVkZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Cb3JkZXJFZGdlLmNwcApAQCAtMzMsNyArMzMsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUJvcmRlckVkZ2U6OkJvcmRlckVkZ2UoTGF5b3V0VW5p
dCBlZGdlV2lkdGgsIENvbG9yIGVkZ2VDb2xvciwgRUJvcmRlclN0eWxlIGVkZ2VTdHlsZSwgYm9v
bCBlZGdlSXNUcmFuc3BhcmVudCwgYm9vbCBlZGdlSXNQcmVzZW50LCBmbG9hdCBkZXZpY2VQaXhl
bFJhdGlvKQorQm9yZGVyRWRnZTo6Qm9yZGVyRWRnZShMYXlvdXRVbml0IGVkZ2VXaWR0aCwgT3B0
aW9uYWxSR0JBIGVkZ2VDb2xvciwgRUJvcmRlclN0eWxlIGVkZ2VTdHlsZSwgYm9vbCBlZGdlSXNU
cmFuc3BhcmVudCwgYm9vbCBlZGdlSXNQcmVzZW50LCBmbG9hdCBkZXZpY2VQaXhlbFJhdGlvKQog
ICAgIDogbV93aWR0aChlZGdlV2lkdGgpCiAgICAgLCBtX2NvbG9yKGVkZ2VDb2xvcikKICAgICAs
IG1fc3R5bGUoZWRnZVN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0JvcmRlckVkZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Cb3JkZXJFZGdlLmgKaW5k
ZXggOWQzY2QzZDlhOTIyNWMxN2RmODhjZjMzZmVhYmJlNWU2MWVjNmFjOS4uNzRhMTYwNjI2NzMx
MmIzNmY0ZjYyNzZkMmIwYTNiYjQxYjJhODYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0JvcmRlckVkZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQm9y
ZGVyRWRnZS5oCkBAIC00NiwxMiArNDYsMTIgQEAgcHVibGljOgogICAgIH07CiAKICAgICBCb3Jk
ZXJFZGdlKCk7Ci0gICAgQm9yZGVyRWRnZShMYXlvdXRVbml0IGVkZ2VXaWR0aCwgQ29sb3IgZWRn
ZUNvbG9yLCBFQm9yZGVyU3R5bGUgZWRnZVN0eWxlLCBib29sIGVkZ2VJc1RyYW5zcGFyZW50LCBi
b29sIGVkZ2VJc1ByZXNlbnQsIGZsb2F0IGRldmljZVBpeGVsUmF0aW8pOworICAgIEJvcmRlckVk
Z2UoTGF5b3V0VW5pdCBlZGdlV2lkdGgsIE9wdGlvbmFsUkdCQSBlZGdlQ29sb3IsIEVCb3JkZXJT
dHlsZSBlZGdlU3R5bGUsIGJvb2wgZWRnZUlzVHJhbnNwYXJlbnQsIGJvb2wgZWRnZUlzUHJlc2Vu
dCwgZmxvYXQgZGV2aWNlUGl4ZWxSYXRpbyk7CiAKICAgICBzdGF0aWMgdm9pZCBnZXRCb3JkZXJF
ZGdlSW5mbyhCb3JkZXJFZGdlIGVkZ2VzW10sIGNvbnN0IFJlbmRlclN0eWxlJiwgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wg
aW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UgPSB0cnVlKTsKIAogICAgIEVCb3JkZXJTdHlsZSBzdHls
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGU7IH0KLSAgICBDb2xvciBjb2xvcigpIGNvbnN0IHsg
cmV0dXJuIG1fY29sb3I7IH0KKyAgICBPcHRpb25hbFJHQkEgY29sb3IoKSBjb25zdCB7IHJldHVy
biBtX2NvbG9yOyB9CiAgICAgYm9vbCBpc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9p
c1RyYW5zcGFyZW50OyB9CiAgICAgYm9vbCBpc1ByZXNlbnQoKSBjb25zdCB7IHJldHVybiBtX2lz
UHJlc2VudDsgfQogCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgaW5saW5lIGZsb2F0
IGJvcmRlcldpZHRoSW5EZXZpY2VQaXhlbChpbnQgbG9naWNhbFBpeGVscykgY29uc3QgeyByZXR1
cm4gTGF5b3V0VW5pdChsb2dpY2FsUGl4ZWxzIC8gbV9kZXZpY2VQaXhlbFJhdGlvKS50b0Zsb2F0
KCk7IH0KIAogICAgIExheW91dFVuaXQgbV93aWR0aDsKLSAgICBDb2xvciBtX2NvbG9yOworICAg
IE9wdGlvbmFsUkdCQSBtX2NvbG9yOwogICAgIEVCb3JkZXJTdHlsZSBtX3N0eWxlOwogICAgIGJv
b2wgbV9pc1RyYW5zcGFyZW50OwogICAgIGJvb2wgbV9pc1ByZXNlbnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcAppbmRleCA0NjlmN2VmZWU4N2Y3NTIxNDIyNTI2ZGM2
NjVhNmM0MTZkNGVmODM1Li5iY2VjOTVlZGIyZDkzYjc4OGNkZTVkZmMyMjkzNjRhNjU3NTlmYTU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAKQEAgLTQ0LDcgKzQ0
LDcgQEAgdm9pZCBFbGxpcHNpc0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGEKIHsKICAgICBHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQgPSBwYWludEluZm8uY29udGV4dDsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0
eWxlID0gdGhpcy0+bGluZVN0eWxlKCk7Ci0gICAgQ29sb3IgdGV4dENvbG9yID0gbGluZVN0eWxl
LnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IpOwor
ICAgIE9wdGlvbmFsUkdCQSB0ZXh0Q29sb3IgPSBsaW5lU3R5bGUudmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcik7CiAgICAgaWYgKHRleHRDb2xvciAh
PSBjb250ZXh0LT5maWxsQ29sb3IoKSkKICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKHRl
eHRDb2xvciwgbGluZVN0eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgYm9vbCBzZXRTaGFkb3cgPSBm
YWxzZTsKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBFbGxpcHNpc0JveDo6cGFpbnQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGEKICAgICAgICAg
cGFpbnRTZWxlY3Rpb24oY29udGV4dCwgcGFpbnRPZmZzZXQsIGxpbmVTdHlsZSwgZm9udCk7CiAK
ICAgICAgICAgLy8gU2VsZWN0IHRoZSBjb3JyZWN0IGNvbG9yIGZvciBwYWludGluZyB0aGUgdGV4
dC4KLSAgICAgICAgQ29sb3IgZm9yZWdyb3VuZCA9IHBhaW50SW5mby5mb3JjZVRleHRDb2xvcigp
ID8gcGFpbnRJbmZvLmZvcmNlZFRleHRDb2xvcigpIDogYmxvY2tGbG93KCkuc2VsZWN0aW9uRm9y
ZWdyb3VuZENvbG9yKCk7CisgICAgICAgIE9wdGlvbmFsUkdCQSBmb3JlZ3JvdW5kID0gcGFpbnRJ
bmZvLmZvcmNlVGV4dENvbG9yKCkgPyBwYWludEluZm8uZm9yY2VkVGV4dENvbG9yKCkgOiBibG9j
a0Zsb3coKS5zZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKTsKICAgICAgICAgaWYgKGZvcmVncm91
bmQuaXNWYWxpZCgpICYmIGZvcmVncm91bmQgIT0gdGV4dENvbG9yKQogICAgICAgICAgICAgY29u
dGV4dC0+c2V0RmlsbENvbG9yKGZvcmVncm91bmQsIGxpbmVTdHlsZS5jb2xvclNwYWNlKCkpOwog
ICAgIH0KQEAgLTEyMSwxNSArMTIxLDE1IEBAIEludFJlY3QgRWxsaXBzaXNCb3g6OnNlbGVjdGlv
blJlY3QoKQogCiB2b2lkIEVsbGlwc2lzQm94OjpwYWludFNlbGVjdGlvbihHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCkKIHsKLSAgICBDb2xvciB0ZXh0
Q29sb3IgPSBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcik7Ci0g
ICAgQ29sb3IgYyA9IGJsb2NrRmxvdygpLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOworICAg
IE9wdGlvbmFsUkdCQSB0ZXh0Q29sb3IgPSBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlDb2xvcik7CisgICAgT3B0aW9uYWxSR0JBIGMgPSBibG9ja0Zsb3coKS5zZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3IoKTsKICAgICBpZiAoIWMuaXNWYWxpZCgpIHx8ICFjLmFscGhhKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElmIHRoZSB0ZXh0IGNvbG9yIGVuZHMgdXAgYmVp
bmcgdGhlIHNhbWUgYXMgdGhlIHNlbGVjdGlvbiBiYWNrZ3JvdW5kLCBpbnZlcnQgdGhlIHNlbGVj
dGlvbgogICAgIC8vIGJhY2tncm91bmQuCiAgICAgaWYgKHRleHRDb2xvciA9PSBjKQotICAgICAg
ICBjID0gQ29sb3IoMHhmZiAtIGMucmVkKCksIDB4ZmYgLSBjLmdyZWVuKCksIDB4ZmYgLSBjLmJs
dWUoKSk7CisgICAgICAgIGMgPSBPcHRpb25hbFJHQkEoMHhmZiAtIGMucmVkKCksIDB4ZmYgLSBj
LmdyZWVuKCksIDB4ZmYgLSBjLmJsdWUoKSk7CiAKICAgICBjb25zdCBSb290SW5saW5lQm94JiBy
b290Qm94ID0gcm9vdCgpOwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Rmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAK
aW5kZXggMmQ2ZmI2OTQ0OGY4ZjFiYjU5NDRjMTBiYTU0OTAxMTU2N2Q2NzczNy4uNWRhYmQ3MDUx
MzE3MjI3NWM3MjA3ZmE1Y2RlMjgxNzNlODliMDg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVGbG93Qm94LmNwcApAQCAtMTE5NSw3ICsxMTk1LDcgQEAgdm9pZCBJbmxpbmVG
bG93Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0LAogICAgIH0KIH0KIAotdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXll
cnMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjb25zdCBGaWxs
TGF5ZXIqIGZpbGxMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3Igb3ApCit2b2lkIElubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVycyhjb25zdCBQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgT3B0aW9uYWxSR0JBJiBjLCBjb25zdCBGaWxsTGF5ZXIqIGZp
bGxMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7
CiAgICAgaWYgKCFmaWxsTGF5ZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMTIsNyArMTIxMiw3
IEBAIGJvb2wgSW5saW5lRmxvd0JveDo6Ym94U2hhZG93Q2FuQmVBcHBsaWVkVG9CYWNrZ3JvdW5k
KGNvbnN0IEZpbGxMYXllciYgbGFzdEJhY2tnCiAgICAgcmV0dXJuICghaGFzRmlsbEltYWdlICYm
ICFyZW5kZXJlcigpLnN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkpIHx8ICghcHJldkxpbmVCb3go
KSAmJiAhbmV4dExpbmVCb3goKSkgfHwgIXBhcmVudCgpOwogfQogCi12b2lkIElubGluZUZsb3dC
b3g6OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xv
ciYgYywgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXll
cihjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgT3B0aW9uYWxSR0JBJiBjLCBjb25z
dCBGaWxsTGF5ZXIqIGZpbGxMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3Igb3ApCiB7CiAgICAgU3R5bGVJbWFnZSogaW1nID0gZmlsbExheWVyLT5pbWFnZSgp
OwogICAgIGJvb2wgaGFzRmlsbEltYWdlID0gaW1nICYmIGltZy0+Y2FuUmVuZGVyKCZyZW5kZXJl
cigpLCByZW5kZXJlcigpLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsKQEAgLTEzNDMsNyArMTM0
Myw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgaWYgKCFyZW5kZXJlcigpLmJveFNo
YWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChhZGp1c3RlZFBhaW50b2Zmc2V0LCBCYWNr
Z3JvdW5kQmxlZWROb25lLCB0aGlzKSkKICAgICAgICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZv
LCBsaW5lU3R5bGUsIE5vcm1hbCwgcGFpbnRSZWN0KTsKIAotICAgIENvbG9yIGMgPSBsaW5lU3R5
bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKKyAg
ICBPcHRpb25hbFJHQkEgYyA9IGxpbmVTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8sIGMs
IGxpbmVTdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCksIHBhaW50UmVjdCk7CiAgICAgcGFpbnRCb3hT
aGFkb3cocGFpbnRJbmZvLCBsaW5lU3R5bGUsIEluc2V0LCBwYWludFJlY3QpOwogCkBAIC0xNDIy
LDcgKzE0MjIsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50TWFzayhQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2ZmcwogICAgIH0KIAogICAgIExheW91
dFJlY3QgcGFpbnRSZWN0ID0gTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBmcmFtZVJl
Y3Quc2l6ZSgpKTsKLSAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBDb2xvcigpLCByZW5k
ZXJlcigpLnN0eWxlKCkubWFza0xheWVycygpLCBwYWludFJlY3QsIGNvbXBvc2l0ZU9wKTsKKyAg
ICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBPcHRpb25hbFJHQkEoKSwgcmVuZGVyZXIoKS5z
dHlsZSgpLm1hc2tMYXllcnMoKSwgcGFpbnRSZWN0LCBjb21wb3NpdGVPcCk7CiAgICAgCiAgICAg
Ym9vbCBoYXNCb3hJbWFnZSA9IG1hc2tCb3hJbWFnZSAmJiBtYXNrQm94SW1hZ2UtPmNhblJlbmRl
cigmcmVuZGVyZXIoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CiAgICAg
aWYgKCFoYXNCb3hJbWFnZSB8fCAhbWFza0JveEltYWdlLT5pc0xvYWRlZCgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAppbmRleCBhZjc4NDc0ZGM0MTFhMDIzOTAx
ZDhlOTJiMzQ0ODFlY2QzOGI5MjM4Li5mMTc3ZGUwOTQyZjM1ZDdjZTg1MDEyYWM0YzdjNGMxMTVm
NTEyZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0Jv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKQEAgLTEx
Niw4ICsxMTYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMoUGFp
bnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICB2b2lkIHBhaW50TWFzayhQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwotICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJzKGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgY29uc3QgTGF5b3V0
UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7Ci0gICAgdm9p
ZCBwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZp
bGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0
ZVNvdXJjZU92ZXIpOworICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IE9wdGlvbmFsUkdCQSYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3Qm
LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIHZvaWQgcGFp
bnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgT3B0aW9uYWxSR0JBJiwgY29uc3Qg
RmlsbExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9z
aXRlU291cmNlT3Zlcik7CiAgICAgdm9pZCBwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8m
LCBjb25zdCBSZW5kZXJTdHlsZSYsIFNoYWRvd1N0eWxlLCBjb25zdCBMYXlvdXRSZWN0Jik7CiAg
ICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgTGF5
b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1
bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExh
eW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRV
bml0IGxpbmVCb3R0b20sIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDQwYjRkMmUzOTljZjQwNmNlYmU4MzE2
OTZjMmRkMzIwNDFkN2M5NGEuLjNjNDc4MTRiNWNmNzEwYjExMzJhMDRlZDI4MDgyZjE4MjMyYzBj
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTY3
NSw3ICs2NzUsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnNlbGVjdGlvblN0YXJ0RW5kKGludCYg
c1BvcywgaW50JiBlUG9zKQogICAgIGVQb3MgPSBzdGQ6Om1pbihlbmRQb3MgLSBtX3N0YXJ0LCAo
aW50KW1fbGVuKTsKIH0KIAotdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgQ29sb3IgdGV4dENv
bG9yKQordm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgT3B0aW9uYWxSR0JBIHRleHRDb2xvcikK
IHsKICNpZiBFTkFCTEUoVEVYVF9TRUxFQ1RJT04pCiAgICAgaWYgKGNvbnRleHQucGFpbnRpbmdE
aXNhYmxlZCgpKQpAQCAtNjg3LDE0ICs2ODcsMTQgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWlu
dFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGIK
ICAgICBpZiAoc1BvcyA+PSBlUG9zKQogICAgICAgICByZXR1cm47CiAKLSAgICBDb2xvciBjID0g
cmVuZGVyZXIoKS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICBPcHRpb25hbFJHQkEg
YyA9IHJlbmRlcmVyKCkuc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7CiAgICAgaWYgKCFjLmlz
VmFsaWQoKSB8fCBjLmFscGhhKCkgPT0gMCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSWYg
dGhlIHRleHQgY29sb3IgZW5kcyB1cCBiZWluZyB0aGUgc2FtZSBhcyB0aGUgc2VsZWN0aW9uIGJh
Y2tncm91bmQsIGludmVydCB0aGUgc2VsZWN0aW9uCiAgICAgLy8gYmFja2dyb3VuZC4KICAgICBp
ZiAodGV4dENvbG9yID09IGMpCi0gICAgICAgIGMgPSBDb2xvcigweGZmIC0gYy5yZWQoKSwgMHhm
ZiAtIGMuZ3JlZW4oKSwgMHhmZiAtIGMuYmx1ZSgpKTsKKyAgICAgICAgYyA9IE9wdGlvbmFsUkdC
QSgweGZmIC0gYy5yZWQoKSwgMHhmZiAtIGMuZ3JlZW4oKSwgMHhmZiAtIGMuYmx1ZSgpKTsKIAog
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICB1
cGRhdGVHcmFwaGljc0NvbnRleHQoY29udGV4dCwgVGV4dFBhaW50U3R5bGUoYywgc3R5bGUuY29s
b3JTcGFjZSgpKSk7IC8vIERvbid0IGRyYXcgdGV4dCBhdCBhbGwhCkBAIC03NDQsNyArNzQ0LDcg
QEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uQmFja2dyb3VuZChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEYKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIENvbG9yIGNvbXBv
c2l0aW9uQ29sb3IgPSBDb2xvcjo6Y29tcG9zaXRpb25GaWxsOworICAgIE9wdGlvbmFsUkdCQSBj
b21wb3NpdGlvbkNvbG9yID0gT3B0aW9uYWxSR0JBOjpjb21wb3NpdGlvbkZpbGw7CiAgICAgdXBk
YXRlR3JhcGhpY3NDb250ZXh0KGNvbnRleHQsIFRleHRQYWludFN0eWxlKGNvbXBvc2l0aW9uQ29s
b3IsIHN0eWxlLmNvbG9yU3BhY2UoKSkpOyAvLyBEb24ndCBkcmF3IHRleHQgYXQgYWxsIQogCiAg
ICAgTGF5b3V0VW5pdCBkZWx0YVkgPSByZW5kZXJlcigpLnN0eWxlKCkuaXNGbGlwcGVkTGluZXNX
cml0aW5nTW9kZSgpID8gc2VsZWN0aW9uQm90dG9tKCkgLSBsb2dpY2FsQm90dG9tKCkgOiBsb2dp
Y2FsVG9wKCkgLSBzZWxlY3Rpb25Ub3AoKTsKQEAgLTkxMSw3ICs5MTEsNyBAQCB2b2lkIElubGlu
ZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UG9pbnQmCiAgICAgfQogICAgIAogICAgIC8vIEdldCB0aGUgdGV4dCBkZWNvcmF0aW9u
IGNvbG9ycy4KLSAgICBDb2xvciB1bmRlcmxpbmVDb2xvciwgb3ZlcmxpbmVDb2xvciwgbGluZXRo
cm91Z2hDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgdW5kZXJsaW5lQ29sb3IsIG92ZXJsaW5lQ29s
b3IsIGxpbmV0aHJvdWdoQ29sb3I7CiAgICAgVGV4dERlY29yYXRpb25TdHlsZSB1bmRlcmxpbmVT
dHlsZSwgb3ZlcmxpbmVTdHlsZSwgbGluZXRocm91Z2hTdHlsZTsKICAgICByZW5kZXJlcigpLmdl
dFRleHREZWNvcmF0aW9uQ29sb3JzQW5kU3R5bGVzKGRlY29yYXRpb24sIHVuZGVybGluZUNvbG9y
LCBvdmVybGluZUNvbG9yLCBsaW5ldGhyb3VnaENvbG9yLCB1bmRlcmxpbmVTdHlsZSwgb3Zlcmxp
bmVTdHlsZSwgbGluZXRocm91Z2hTdHlsZSk7CiAgICAgaWYgKGlzRmlyc3RMaW5lKCkpCkBAIC0x
MTQ2LDcgKzExNDYsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFya2Vy
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQbwogICAgIAogICAgIC8vIE9w
dGlvbmFsbHkgaGlnaGxpZ2h0IHRoZSB0ZXh0CiAgICAgaWYgKHJlbmRlcmVyKCkuZnJhbWUoKS5l
ZGl0b3IoKS5tYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKCkpIHsKLSAgICAgICAgQ29s
b3IgY29sb3IgPSBtYXJrZXIuYWN0aXZlTWF0Y2goKSA/IHJlbmRlcmVyKCkudGhlbWUoKS5wbGF0
Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIDogcmVuZGVyZXIoKS50aGVtZSgp
LnBsYXRmb3JtSW5hY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKTsKKyAgICAgICAgT3B0
aW9uYWxSR0JBIGNvbG9yID0gbWFya2VyLmFjdGl2ZU1hdGNoKCkgPyByZW5kZXJlcigpLnRoZW1l
KCkucGxhdGZvcm1BY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSA6IHJlbmRlcmVyKCku
dGhlbWUoKS5wbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCk7CiAgICAg
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICAg
ICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KGNvbnRleHQsIFRleHRQYWludFN0eWxlKGNvbG9yLCBz
dHlsZS5jb2xvclNwYWNlKCkpKTsgLy8gRG9uJ3QgZHJhdyB0ZXh0IGF0IGFsbCEKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKaW5kZXggNzQwOWQ2ZDA0ZGZmZDgyYTMx
NTcxZDE5NGQzYWQ1YjVlNTgwMDRlYS4uZDE3NDUyZDVhMzM4MTRjZGJjMzE0N2VjZjhlZjVjZjU2
MzJiMzI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRC
b3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCkBAIC0x
NjAsNyArMTYwLDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHZvaWQgcGFpbnREZWNv
cmF0aW9uKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgVGV4
dERlY29yYXRpb24sIGNvbnN0IFNoYWRvd0RhdGEqLCBUZXh0UGFpbnRlciYpOwotICAgIHZvaWQg
cGFpbnRTZWxlY3Rpb24oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3Jp
Z2luLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnRDYXNjYWRlJiwgQ29sb3IgdGV4dENv
bG9yKTsKKyAgICB2b2lkIHBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UG9pbnQmIGJveE9yaWdpbiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGb250Q2FzY2Fk
ZSYsIE9wdGlvbmFsUkdCQSB0ZXh0Q29sb3IpOwogICAgIHZvaWQgcGFpbnREb2N1bWVudE1hcmtl
cihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIFJlbmRlcmVk
RG9jdW1lbnRNYXJrZXImLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnRDYXNjYWRlJiwg
Ym9vbCBncmFtbWFyKTsKICAgICB2b2lkIHBhaW50VGV4dE1hdGNoTWFya2VyKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgUmVuZGVyZWREb2N1bWVudE1hcmtl
ciYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udENhc2NhZGUmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1BhaW50SW5mby5oCmluZGV4IDE1YjFmMjQxMjgyNzQ0ZGM1YmQ2ZGI1YzJmOWNk
ZjE3ODg1Yjg5ODQuLmIxYTZlYTYyNmYyZjcyZTcyZjhjOWUxNzM4NGEyNzRlNzE5OTg4MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKQEAgLTgzLDcgKzgzLDcgQEAgc3RydWN0
IFBhaW50SW5mbyB7CiAgICAgYm9vbCBmb3JjZVRleHRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIGZv
cmNlQmxhY2tUZXh0KCkgfHwgZm9yY2VXaGl0ZVRleHQoKTsgfQogICAgIGJvb2wgZm9yY2VCbGFj
a1RleHQoKSBjb25zdCB7IHJldHVybiBwYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckZvcmNl
QmxhY2tUZXh0OyB9CiAgICAgYm9vbCBmb3JjZVdoaXRlVGV4dCgpIGNvbnN0IHsgcmV0dXJuIHBh
aW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yRm9yY2VXaGl0ZVRleHQ7IH0KLSAgICBDb2xvciBm
b3JjZWRUZXh0Q29sb3IoKSBjb25zdCB7IHJldHVybiAoZm9yY2VCbGFja1RleHQoKSkgPyBDb2xv
cjo6YmxhY2sgOiBDb2xvcjo6d2hpdGU7IH0KKyAgICBPcHRpb25hbFJHQkEgZm9yY2VkVGV4dENv
bG9yKCkgY29uc3QgeyByZXR1cm4gKGZvcmNlQmxhY2tUZXh0KCkpID8gT3B0aW9uYWxSR0JBOjpi
bGFjayA6IE9wdGlvbmFsUkdCQTo6d2hpdGU7IH0KIAogICAgIGJvb2wgc2tpcFJvb3RCYWNrZ3Jv
dW5kKCkgY29uc3QgeyByZXR1cm4gcGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3JTa2lwUm9v
dEJhY2tncm91bmQ7IH0KICAgICBib29sIHBhaW50Um9vdEJhY2tncm91bmRPbmx5KCkgY29uc3Qg
eyByZXR1cm4gcGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3JSb290QmFja2dyb3VuZE9ubHk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNWFjZWE2OTJiOTZl
ZGViYjM3YmY3MzAzYTM3YjNjZmRlMTRjMDZmZC4uZWRlODdjMzkxNjY4YjQwOTdhYzc2NTI3ZDU1
MjEzNGYxNTViOTQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAg
LTEyMzUsNyArMTIzNSw3IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludFJvb3RCb3hGaWxsTGF5ZXJz
KGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvKQogICAgIGF1dG8mIHJvb3RCYWNrZ3JvdW5kUmVu
ZGVyZXIgPSByZW5kZXJlckZvclJvb3RCYWNrZ3JvdW5kKCk7CiAgICAgCiAgICAgY29uc3QgRmls
bExheWVyKiBiZ0xheWVyID0gcm9vdEJhY2tncm91bmRSZW5kZXJlci5zdHlsZSgpLmJhY2tncm91
bmRMYXllcnMoKTsKLSAgICBDb2xvciBiZ0NvbG9yID0gcm9vdEJhY2tncm91bmRSZW5kZXJlci5z
dHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7
CisgICAgT3B0aW9uYWxSR0JBIGJnQ29sb3IgPSByb290QmFja2dyb3VuZFJlbmRlcmVyLnN0eWxl
KCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKIAog
ICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8sIGJnQ29sb3IsIGJnTGF5ZXIsIHZpZXcoKS5i
YWNrZ3JvdW5kUmVjdCgpLCBCYWNrZ3JvdW5kQmxlZWROb25lLCBDb21wb3NpdGVTb3VyY2VPdmVy
LCAmcm9vdEJhY2tncm91bmRSZW5kZXJlcik7CiB9CkBAIC0xMzYxLDcgKzEzNjEsNyBAQCBib29s
IFJlbmRlckJveDo6Z2V0QmFja2dyb3VuZFBhaW50ZWRFeHRlbnQoY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0LCBMYXlvdQogICAgIEFTU0VSVChoYXNCYWNrZ3JvdW5kKCkpOwogICAgIExh
eW91dFJlY3QgYmFja2dyb3VuZFJlY3QgPSBzbmFwcGVkSW50UmVjdChib3JkZXJCb3hSZWN0KCkp
OwogCi0gICAgQ29sb3IgYmFja2dyb3VuZENvbG9yID0gc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOworICAgIE9wdGlvbmFsUkdCQSBiYWNr
Z3JvdW5kQ29sb3IgPSBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvcik7CiAgICAgaWYgKGJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkgJiYgYmFj
a2dyb3VuZENvbG9yLmFscGhhKCkpIHsKICAgICAgICAgcGFpbnRlZEV4dGVudCA9IGJhY2tncm91
bmRSZWN0OwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEzODIsNyArMTM4Miw3IEBAIGJvb2wg
UmVuZGVyQm94OjpiYWNrZ3JvdW5kSXNLbm93blRvQmVPcGFxdWVJblJlY3QoY29uc3QgTGF5b3V0
UmVjdCYgbG9jYWxSZWN0KSBjCiAgICAgaWYgKGlzQm9keSgpICYmIHNraXBCb2R5QmFja2dyb3Vu
ZCh0aGlzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ29sb3IgYmFja2dyb3VuZENv
bG9yID0gc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IpOworICAgIE9wdGlvbmFsUkdCQSBiYWNrZ3JvdW5kQ29sb3IgPSBzdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgaWYgKCFi
YWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpIHx8IGJhY2tncm91bmRDb2xvci5oYXNBbHBoYSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE1MDcsNyArMTUwNyw3IEBAIGJvb2wgUmVuZGVy
Qm94OjpiYWNrZ3JvdW5kSGFzT3BhcXVlVG9wTGF5ZXIoKSBjb25zdAogCiAgICAgLy8gSWYgdGhl
cmUgaXMgb25seSBvbmUgbGF5ZXIgYW5kIG5vIGltYWdlLCBjaGVjayB3aGV0aGVyIHRoZSBiYWNr
Z3JvdW5kIGNvbG9yIGlzIG9wYXF1ZQogICAgIGlmICghZmlsbExheWVyLT5uZXh0KCkgJiYgIWZp
bGxMYXllci0+aGFzSW1hZ2UoKSkgewotICAgICAgICBDb2xvciBiZ0NvbG9yID0gc3R5bGUoKS52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOworICAgICAg
ICBPcHRpb25hbFJHQkEgYmdDb2xvciA9IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENT
U1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKICAgICAgICAgaWYgKGJnQ29sb3IuaXNWYWxpZCgp
ICYmIGJnQ29sb3IuYWxwaGEoKSA9PSAyNTUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CkBAIC0xNTMwLDcgKzE1MzAsNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRDbGlwcGluZ01h
c2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludAogICAgICAg
ICByZXR1cm47CiAKICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QocGFpbnRP
ZmZzZXQsIHNpemUoKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJ
bnRSZWN0KHBhaW50UmVjdCksIENvbG9yOjpibGFjaywgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwor
ICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdChzbmFwcGVkSW50UmVjdChwYWludFJlY3Qp
LCBPcHRpb25hbFJHQkE6OmJsYWNrLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiB9CiAKIHZvaWQg
UmVuZGVyQm94OjpwYWludE1hc2tJbWFnZXMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFJlY3QmIHBhaW50UmVjdCkKQEAgLTE1NjEsNyArMTU2MSw3IEBAIHZvaWQgUmVu
ZGVyQm94OjpwYWludE1hc2tJbWFnZXMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFJlY3QmIHBhCiAgICAgfQogCiAgICAgaWYgKGFsbE1hc2tJbWFnZXNMb2FkZWQpIHsK
LSAgICAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgQ29sb3IoKSwgc3R5bGUoKS5tYXNr
TGF5ZXJzKCksIHBhaW50UmVjdCwgQmFja2dyb3VuZEJsZWVkTm9uZSwgY29tcG9zaXRlT3ApOwor
ICAgICAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBPcHRpb25hbFJHQkEoKSwgc3R5bGUo
KS5tYXNrTGF5ZXJzKCksIHBhaW50UmVjdCwgQmFja2dyb3VuZEJsZWVkTm9uZSwgY29tcG9zaXRl
T3ApOwogICAgICAgICBwYWludE5pbmVQaWVjZUltYWdlKHBhaW50SW5mby5jb250ZXh0LCBwYWlu
dFJlY3QsIHN0eWxlKCksIHN0eWxlKCkubWFza0JveEltYWdlKCksIGNvbXBvc2l0ZU9wKTsKICAg
ICB9CiAgICAgCkBAIC0xNTkyLDcgKzE1OTIsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJveDo6bWFz
a0NsaXBSZWN0KGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi12b2lkIFJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIs
IGNvbnN0IExheW91dFJlY3QmIHJlY3QsCit2b2lkIFJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJz
KGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBPcHRpb25hbFJHQkEmIGMsIGNvbnN0
IEZpbGxMYXllciogZmlsbExheWVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LAogICAgIEJhY2tn
cm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3As
IFJlbmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmplY3QpCiB7CiAgICAgVmVjdG9yPGNvbnN0IEZp
bGxMYXllciosIDg+IGxheWVyczsKQEAgLTE2MzcsNyArMTYzNyw3IEBAIHZvaWQgUmVuZGVyQm94
OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9y
JiBjLCBjb25zCiAgICAgICAgIGNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiB9CiAK
LXZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgQ29sb3ImIGMsIGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyLCBjb25zdCBMYXlv
dXRSZWN0JiByZWN0LAordm9pZCBSZW5kZXJCb3g6OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBPcHRpb25hbFJHQkEmIGMsIGNvbnN0IEZpbGxMYXllciog
ZmlsbExheWVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LAogICAgIEJhY2tncm91bmRCbGVlZEF2
b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFJlbmRlckVsZW1l
bnQqIGJhY2tncm91bmRPYmplY3QsIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2FnZSBiYXNlQmdDb2xv
clVzYWdlKQogewogICAgIHBhaW50RmlsbExheWVyRXh0ZW5kZWQocGFpbnRJbmZvLCBjLCBmaWxs
TGF5ZXIsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBudWxscHRyLCBMYXlvdXRTaXplKCksIG9wLCBi
YWNrZ3JvdW5kT2JqZWN0LCBiYXNlQmdDb2xvclVzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guaAppbmRleCBlNWMwMzNiNGY0NjFiYmE5OWY0Y2ZiOGYxZjY1OTc4NmJkNjFkMTk1
Li45ZWUyNTYwNmI0NTMwNzc2ZTNmZjA5Y2YwNzQ0YzVmMjhjNmNmMmE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC02NDQsOCArNjQ0LDggQEAgcHJvdGVjdGVkOgogCiAg
ICAgdm9pZCBwYWludEJhY2tncm91bmQoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UmVj
dCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSA9IEJhY2tncm91bmRCbGVlZE5vbmUpOwogICAg
IAotICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3Im
LCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZv
aWRhbmNlLCBDb21wb3NpdGVPcGVyYXRvciwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVj
dCwgQmFzZUJhY2tncm91bmRDb2xvclVzYWdlID0gQmFzZUJhY2tncm91bmRDb2xvclVzZSk7Ci0g
ICAgdm9pZCBwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3ImLCBj
b25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZvaWRh
bmNlID0gQmFja2dyb3VuZEJsZWVkTm9uZSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVT
b3VyY2VPdmVyLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0ID0gbnVsbHB0cik7Cisg
ICAgdm9pZCBwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mLCBjb25zdCBPcHRpb25hbFJH
QkEmLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVk
QXZvaWRhbmNlLCBDb21wb3NpdGVPcGVyYXRvciwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9i
amVjdCwgQmFzZUJhY2tncm91bmRDb2xvclVzYWdlID0gQmFzZUJhY2tncm91bmRDb2xvclVzZSk7
CisgICAgdm9pZCBwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgT3B0aW9u
YWxSR0JBJiwgY29uc3QgRmlsbExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRC
bGVlZEF2b2lkYW5jZSA9IEJhY2tncm91bmRCbGVlZE5vbmUsIENvbXBvc2l0ZU9wZXJhdG9yID0g
Q29tcG9zaXRlU291cmNlT3ZlciwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCA9IG51
bGxwdHIpOwogCiAgICAgdm9pZCBwYWludE1hc2tJbWFnZXMoY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UmVjdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBhNWFjMzQ5ODgwNzhhMGMxMzhiNDY2NDY5OTliYzA4
YzBhZjUzNWQxLi42NjI0MzEwNjA2NjAxY2ZiOTFlZWJiNDVlNzIxM2VjMTYwZjNlN2MyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAK
QEAgLTYyNyw3ICs2MjcsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE1hc2tG
b3JUZXh0RmlsbEJveChJbWFnZUJ1ZmZlciogbWFza0ltYWdlLCBjb25zdAogICAgIH0KIH0KIAot
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGaWxsTGF5ZXIq
IGJnTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsCit2b2lkIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBPcHRpb25hbFJHQkEmIGNvbG9yLCBjb25zdCBGaWxsTGF5ZXIqIGJnTGF5ZXIsIGNvbnN0
IExheW91dFJlY3QmIHJlY3QsCiAgICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZv
aWRhbmNlLCBJbmxpbmVGbG93Qm94KiBib3gsIGNvbnN0IExheW91dFNpemUmIGJveFNpemUsIENv
bXBvc2l0ZU9wZXJhdG9yIG9wLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0LCBCYXNl
QmFja2dyb3VuZENvbG9yVXNhZ2UgYmFzZUJnQ29sb3JVc2FnZSkKIHsKICAgICBHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKQEAgLTY0Miw3ICs2NDIsNyBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgIGJvb2wgaXNCb3JkZXJGaWxsID0gYmdMYXllci0+
Y2xpcCgpID09IEJvcmRlckZpbGxCb3g7CiAgICAgYm9vbCBpc1Jvb3QgPSB0aGlzLT5pc1Jvb3Qo
KTsKIAotICAgIENvbG9yIGJnQ29sb3IgPSBjb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgYmdDb2xv
ciA9IGNvbG9yOwogICAgIFN0eWxlSW1hZ2UqIGJnSW1hZ2UgPSBiZ0xheWVyLT5pbWFnZSgpOwog
ICAgIGJvb2wgc2hvdWxkUGFpbnRCYWNrZ3JvdW5kSW1hZ2UgPSBiZ0ltYWdlICYmIGJnSW1hZ2Ut
PmNhblJlbmRlcih0aGlzLCBzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgCkBAIC02NjUs
NyArNjY1LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRl
bmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgLy8gTm90ZSB0aGF0
IHdlIGNhbid0IHJldXNlIHRoaXMgdmFyaWFibGUgYmVsb3cgYmVjYXVzZSB0aGUgYmdDb2xvciBt
aWdodCBiZSBjaGFuZ2VkCiAgICAgICAgIGJvb2wgc2hvdWxkUGFpbnRCYWNrZ3JvdW5kQ29sb3Ig
PSAhYmdMYXllci0+bmV4dCgpICYmIGJnQ29sb3IuaXNWYWxpZCgpICYmIGJnQ29sb3IuYWxwaGEo
KTsKICAgICAgICAgaWYgKHNob3VsZFBhaW50QmFja2dyb3VuZEltYWdlIHx8IHNob3VsZFBhaW50
QmFja2dyb3VuZENvbG9yKSB7Ci0gICAgICAgICAgICBiZ0NvbG9yID0gQ29sb3I6OndoaXRlOwor
ICAgICAgICAgICAgYmdDb2xvciA9IE9wdGlvbmFsUkdCQTo6d2hpdGU7CiAgICAgICAgICAgICBz
aG91bGRQYWludEJhY2tncm91bmRJbWFnZSA9IGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAt
ODEyLDcgKzgxMiw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVy
RXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAgICAgICAg
YmFja2dyb3VuZFJlY3QuaW50ZXJzZWN0KHBhaW50SW5mby5yZWN0KTsKIAogICAgICAgICAgICAg
Ly8gSWYgd2UgaGF2ZSBhbiBhbHBoYSBhbmQgd2UgYXJlIHBhaW50aW5nIHRoZSByb290IGVsZW1l
bnQsIGJsZW5kIHdpdGggdGhlIGJhc2UgYmFja2dyb3VuZCBjb2xvci4KLSAgICAgICAgICAgIENv
bG9yIGJhc2VDb2xvcjsKKyAgICAgICAgICAgIE9wdGlvbmFsUkdCQSBiYXNlQ29sb3I7CiAgICAg
ICAgICAgICBib29sIHNob3VsZENsZWFyQmFja2dyb3VuZCA9IGZhbHNlOwogICAgICAgICAgICAg
aWYgKChiYXNlQmdDb2xvclVzYWdlICE9IEJhc2VCYWNrZ3JvdW5kQ29sb3JTa2lwKSAmJiBpc09w
YXF1ZVJvb3QpIHsKICAgICAgICAgICAgICAgICBiYXNlQ29sb3IgPSB2aWV3KCkuZnJhbWVWaWV3
KCkuYmFzZUJhY2tncm91bmRDb2xvcigpOwpAQCAtMTQ0MCw3ICsxNDQwLDcgQEAgc3RhdGljIGJv
b2wgam9pblJlcXVpcmVzTWl0cmUoQm94U2lkZSBzaWRlLCBCb3hTaWRlIGFkamFjZW50U2lkZSwg
Y29uc3QgQm9yZGVyRWQKIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRPbmVCb3Jk
ZXJTaWRlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUsIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJl
Y3QmIGlubmVyQm9yZGVyLAogICAgIGNvbnN0IExheW91dFJlY3QmIHNpZGVSZWN0LCBCb3hTaWRl
IHNpZGUsIEJveFNpZGUgYWRqYWNlbnRTaWRlMSwgQm94U2lkZSBhZGphY2VudFNpZGUyLCBjb25z
dCBCb3JkZXJFZGdlIGVkZ2VzW10sIGNvbnN0IFBhdGgqIHBhdGgsCi0gICAgQmFja2dyb3VuZEJs
ZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2Us
IGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzLCBjb25zdCBDb2xv
ciogb3ZlcnJpZGVDb2xvcikKKyAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9p
ZGFuY2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJp
Z2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMsIGNvbnN0IE9wdGlvbmFsUkdCQSogb3ZlcnJpZGVDb2xv
cikKIHsKICAgICBjb25zdCBCb3JkZXJFZGdlJiBlZGdlVG9SZW5kZXIgPSBlZGdlc1tzaWRlXTsK
ICAgICBBU1NFUlQoZWRnZVRvUmVuZGVyLndpZHRoRm9yUGFpbnRpbmcoKSk7CkBAIC0xNDUzLDcg
KzE0NTMsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE9uZUJvcmRlclNpZGUo
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgYm9vbCBhZGphY2VudFNpZGUx
U3R5bGVzTWF0Y2ggPSBjb2xvcnNNYXRjaEF0Q29ybmVyKHNpZGUsIGFkamFjZW50U2lkZTEsIGVk
Z2VzKTsKICAgICBib29sIGFkamFjZW50U2lkZTJTdHlsZXNNYXRjaCA9IGNvbG9yc01hdGNoQXRD
b3JuZXIoc2lkZSwgYWRqYWNlbnRTaWRlMiwgZWRnZXMpOwogCi0gICAgY29uc3QgQ29sb3ImIGNv
bG9yVG9QYWludCA9IG92ZXJyaWRlQ29sb3IgPyAqb3ZlcnJpZGVDb2xvciA6IGVkZ2VUb1JlbmRl
ci5jb2xvcigpOworICAgIGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3JUb1BhaW50ID0gb3ZlcnJp
ZGVDb2xvciA/ICpvdmVycmlkZUNvbG9yIDogZWRnZVRvUmVuZGVyLmNvbG9yKCk7CiAKICAgICBp
ZiAocGF0aCkgewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
KmdyYXBoaWNzQ29udGV4dCk7CkBAIC0xNTAyLDcgKzE1MDIsNyBAQCBzdGF0aWMgTGF5b3V0UmVj
dCBjYWxjdWxhdGVTaWRlUmVjdChjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0
IEJvcmRlcgogCiB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlclNpZGVzKEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVy
Qm9yZGVyLAogICAgIGNvbnN0IEludFBvaW50JiBpbm5lckJvcmRlckFkanVzdG1lbnQsIGNvbnN0
IEJvcmRlckVkZ2UgZWRnZXNbXSwgQm9yZGVyRWRnZUZsYWdzIGVkZ2VTZXQsIEJhY2tncm91bmRC
bGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwKLSAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVm
dEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzLCBjb25z
dCBDb2xvciogb3ZlcnJpZGVDb2xvcikKKyAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2Us
IGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzLCBjb25zdCBPcHRp
b25hbFJHQkEqIG92ZXJyaWRlQ29sb3IpCiB7CiAgICAgYm9vbCByZW5kZXJSYWRpaSA9IG91dGVy
Qm9yZGVyLmlzUm91bmRlZCgpOwogCkBAIC0xNTU3LDcgKzE1NTcsNyBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludFRyYW5zbHVjZW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljcwogCiAgICAgd2hpbGUgKGVkZ2VzVG9EcmF3KSB7CiAgICAgICAgIC8vIEZpbmQg
dW5kcmF3biBlZGdlcyBzaGFyaW5nIGEgY29sb3IuCi0gICAgICAgIENvbG9yIGNvbW1vbkNvbG9y
OworICAgICAgICBPcHRpb25hbFJHQkEgY29tbW9uQ29sb3I7CiAgICAgICAgIAogICAgICAgICBC
b3JkZXJFZGdlRmxhZ3MgY29tbW9uQ29sb3JFZGdlU2V0ID0gMDsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplb2YocGFpbnRPcmRlcikgLyBzaXplb2YocGFpbnRPcmRlclswXSk7
ICsraSkgewpAQCAtMTU3OSw3ICsxNTc5LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3MKICAg
ICAgICAgYm9vbCB1c2VUcmFuc3BhcmVuY3lMYXllciA9IGluY2x1ZGVzQWRqYWNlbnRFZGdlcyhj
b21tb25Db2xvckVkZ2VTZXQpICYmIGNvbW1vbkNvbG9yLmhhc0FscGhhKCk7CiAgICAgICAgIGlm
ICh1c2VUcmFuc3BhcmVuY3lMYXllcikgewogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5i
ZWdpblRyYW5zcGFyZW5jeUxheWVyKHN0YXRpY19jYXN0PGZsb2F0Pihjb21tb25Db2xvci5hbHBo
YSgpKSAvIDI1NSk7Ci0gICAgICAgICAgICBjb21tb25Db2xvciA9IENvbG9yKGNvbW1vbkNvbG9y
LnJlZCgpLCBjb21tb25Db2xvci5ncmVlbigpLCBjb21tb25Db2xvci5ibHVlKCkpOworICAgICAg
ICAgICAgY29tbW9uQ29sb3IgPSBPcHRpb25hbFJHQkEoY29tbW9uQ29sb3IucmVkKCksIGNvbW1v
bkNvbG9yLmdyZWVuKCksIGNvbW1vbkNvbG9yLmJsdWUoKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBwYWludEJvcmRlclNpZGVzKGdyYXBoaWNzQ29udGV4dCwgc3R5bGUsIG91dGVyQm9yZGVyLCBp
bm5lckJvcmRlciwgaW5uZXJCb3JkZXJBZGp1c3RtZW50LCBlZGdlcywgY29tbW9uQ29sb3JFZGdl
U2V0LCBibGVlZEF2b2lkYW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2lj
YWxSaWdodEVkZ2UsIGFudGlhbGlhcywgJmNvbW1vbkNvbG9yKTsKQEAgLTE3NjIsNyArMTc2Miw3
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5m
byYgaW5mbywgY29uc3QgTGF5b3V0UmVjdCYKIH0KIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
Y29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwgY29uc3QgUGF0aCYgYm9yZGVyUGF0aCwgY29u
c3QgQm9yZGVyRWRnZSBlZGdlc1tdLAotICAgIGZsb2F0IHRoaWNrbmVzcywgZmxvYXQgZHJhd1Ro
aWNrbmVzcywgQm94U2lkZSBzaWRlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIENvbG9yIGNv
bG9yLCBFQm9yZGVyU3R5bGUgYm9yZGVyU3R5bGUsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBi
bGVlZEF2b2lkYW5jZSwKKyAgICBmbG9hdCB0aGlja25lc3MsIGZsb2F0IGRyYXdUaGlja25lc3Ms
IEJveFNpZGUgc2lkZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBPcHRpb25hbFJHQkEgY29s
b3IsIEVCb3JkZXJTdHlsZSBib3JkZXJTdHlsZSwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJs
ZWVkQXZvaWRhbmNlLAogICAgIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSkKIHsKICAgICBpZiAodGhpY2tuZXNzIDw9IDApCkBAIC0yMjAy
LDcgKzIyMDIsNyBAQCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpib3hTaGFkb3dTaG91bGRC
ZUFwcGxpZWRUb0JhY2tncm91bmQoY29uc3QgTGF5b3V0UG9pbgogICAgIGlmICghaGFzT25lTm9y
bWFsQm94U2hhZG93KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDb2xvciBiYWNrZ3Jv
dW5kQ29sb3IgPSBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvcik7CisgICAgT3B0aW9uYWxSR0JBIGJhY2tncm91bmRDb2xvciA9IHN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKICAgICBp
ZiAoIWJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkgfHwgYmFja2dyb3VuZENvbG9yLmhhc0FscGhh
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjI2OCw3ICsyMjY4LDcgQEAgdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZv
LCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgaWYgKHNoYWRvd09mZnNldC5pc1plcm8oKSAmJiAh
c2hhZG93UmFkaXVzICYmICFzaGFkb3dTcHJlYWQpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgCi0gICAgICAgIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciA9IHNoYWRvdy0+Y29sb3Io
KTsKKyAgICAgICAgY29uc3QgT3B0aW9uYWxSR0JBJiBzaGFkb3dDb2xvciA9IHNoYWRvdy0+Y29s
b3IoKTsKIAogICAgICAgICBpZiAoc2hhZG93LT5zdHlsZSgpID09IE5vcm1hbCkgewogICAgICAg
ICAgICAgUm91bmRlZFJlY3QgZmlsbFJlY3QgPSBib3JkZXI7CkBAIC0yMzEwLDEyICsyMzEwLDEy
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50
SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgICAgICAgICAgICAgaW5mbHVlbmNlUmVj
dC5leHBhbmRSYWRpaSgyICogc2hhZG93UGFpbnRpbmdFeHRlbnQgKyBzaGFkb3dTcHJlYWQpOwog
CiAgICAgICAgICAgICAgICAgaWYgKGFsbENvcm5lcnNDbGlwcGVkT3V0KGluZmx1ZW5jZVJlY3Qs
IGluZm8ucmVjdCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVs
U25hcHBlZEZpbGxSZWN0LnJlY3QoKSwgQ29sb3I6OmJsYWNrLCBzdHlsZS5jb2xvclNwYWNlKCkp
OworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChwaXhlbFNuYXBwZWRGaWxs
UmVjdC5yZWN0KCksIE9wdGlvbmFsUkdCQTo6YmxhY2ssIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAg
ICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHBpeGVsU25hcHBlZEZp
bGxSZWN0LmV4cGFuZFJhZGlpKHNoYWRvd1NwcmVhZCk7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICghcGl4ZWxTbmFwcGVkRmlsbFJlY3QuaXNSZW5kZXJhYmxlKCkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBwaXhlbFNuYXBwZWRGaWxsUmVjdC5hZGp1c3RSYWRpaSgpOwotICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QsIENv
bG9yOjpibGFjaywgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+ZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LCBPcHRpb25hbFJHQkE6
OmJsYWNrLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGJveCBpcyBvcGFxdWUsIGl0
IGlzIHVubmVjZXNzYXJ5IHRvIGNsaXAgaXQgb3V0LiBIb3dldmVyLCBkb2luZyBzbyBzYXZlcyB0
aW1lCkBAIC0yMzMyLDcgKzIzMzIsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlYwogCiAgICAg
ICAgICAgICAgICAgaWYgKCFyZWN0VG9DbGlwT3V0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+Y2xpcE91dChyZWN0VG9DbGlwT3V0LnJlY3QoKSk7Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVjdCgpLCBDb2xv
cjo6YmxhY2ssIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
ZmlsbFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVjdCgpLCBPcHRpb25hbFJHQkE6OmJsYWNr
LCBzdHlsZS5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgLy8gSW5zZXQgc2hhZG93LgpAQCAtMjM2NCw3ICsyMzY0LDcgQEAgdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZv
LCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgICAgICAgICAgcGl4ZWxTbmFwcGVkSG9sZVJl
Y3Quc2V0SGVpZ2h0KHBpeGVsU25hcHBlZEhvbGVSZWN0LmhlaWdodCgpIC0gc3RkOjptaW4oc2hh
ZG93T2Zmc2V0LmhlaWdodCgpLCAwKSArIHNoYWRvd1BhaW50aW5nRXh0ZW50KTsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgQ29sb3IgZmlsbENvbG9yKHNoYWRvd0NvbG9yLnJlZCgpLCBz
aGFkb3dDb2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCksIDI1NSk7CisgICAgICAgICAg
ICBPcHRpb25hbFJHQkEgZmlsbENvbG9yKHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5n
cmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCksIDI1NSk7CiAKICAgICAgICAgICAgIEZsb2F0UmVj
dCBwaXhlbFNuYXBwZWRPdXRlclJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGFyZWFDYXN0
aW5nU2hhZG93SW5Ib2xlKExheW91dFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyUmVjdC5yZWN0KCkp
LCBzaGFkb3dQYWludGluZ0V4dGVudCwgc2hhZG93U3ByZWFkLCBzaGFkb3dPZmZzZXQpLCBkZXZp
Y2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IHBpeGVsU25hcHBl
ZFJvdW5kZWRIb2xlID0gRmxvYXRSb3VuZGVkUmVjdChwaXhlbFNuYXBwZWRIb2xlUmVjdCwgcGl4
ZWxTbmFwcGVkQm9yZGVyUmVjdC5yYWRpaSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5kZXggZWMyODU4Nzk5YjNkMmU1YjJkMTY2NDE2
MGM0Njg5NzY2MWRkMjFjOS4uM2ZlNzc5YjhiMjJkMzA4MGZmNDYxMjhjZWUzNjFkMzM4OTZkMzE5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmgKQEAgLTIxMiw3ICsyMTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWludEJvcmRlcihjb25z
dCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBCYWNr
Z3JvdW5kQmxlZWRBdm9pZGFuY2UgPSBCYWNrZ3JvdW5kQmxlZWROb25lLCBib29sIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1
ZSk7CiAgICAgYm9vbCBwYWludE5pbmVQaWVjZUltYWdlKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IE5pbmVQaWVjZUltYWdlJiwg
Q29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICB2b2lkIHBhaW50
Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5k
ZXJTdHlsZSYsIFNoYWRvd1N0eWxlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVl
LCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1ZSk7Ci0gICAgdm9pZCBwYWludEZp
bGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmls
bExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgSW5s
aW5lRmxvd0JveCogPSBudWxscHRyLCBjb25zdCBMYXlvdXRTaXplJiA9IExheW91dFNpemUoKSwg
Q29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBSZW5kZXJFbGVtZW50KiBi
YWNrZ3JvdW5kT2JqZWN0ID0gbnVsbHB0ciwgQmFzZUJhY2tncm91bmRDb2xvclVzYWdlID0gQmFz
ZUJhY2tncm91bmRDb2xvclVzZSk7CisgICAgdm9pZCBwYWludEZpbGxMYXllckV4dGVuZGVkKGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IE9wdGlvbmFsUkdCQSYsIGNvbnN0IEZpbGxMYXllciosIGNv
bnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gq
ID0gbnVsbHB0ciwgY29uc3QgTGF5b3V0U2l6ZSYgPSBMYXlvdXRTaXplKCksIENvbXBvc2l0ZU9w
ZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9i
amVjdCA9IG51bGxwdHIsIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5k
Q29sb3JVc2UpOwogCiAgICAgdmlydHVhbCBib29sIGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRv
QmFja2dyb3VuZChjb25zdCBMYXlvdXRQb2ludCYgYWJzb2x1dGVQYWludFBvc3Rpb24sIEJhY2tn
cm91bmRCbGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCogPSBudWxscHRyKSBjb25zdDsKIApA
QCAtMzE3LDE1ICszMTcsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsaXBCb3JkZXJTaWRlRm9y
Q29tcGxleElubmVyUGF0aChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSb3VuZGVkUmVjdCYsIGNv
bnN0IFJvdW5kZWRSZWN0JiwgQm94U2lkZSwgY29uc3QgQm9yZGVyRWRnZVtdKTsKICAgICB2b2lk
IHBhaW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSYs
IGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVy
Qm9yZGVyLAogICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBzaWRlUmVjdCwgQm94U2lkZSwgQm94
U2lkZSBhZGphY2VudFNpZGUxLCBCb3hTaWRlIGFkamFjZW50U2lkZTIsIGNvbnN0IEJvcmRlckVk
Z2VbXSwKLSAgICAgICAgY29uc3QgUGF0aCosIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgYm9v
bCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBi
b29sIGFudGlhbGlhcywgY29uc3QgQ29sb3IqIG92ZXJyaWRlQ29sb3IgPSBudWxscHRyKTsKKyAg
ICAgICAgY29uc3QgUGF0aCosIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRl
TG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBib29sIGFudGlh
bGlhcywgY29uc3QgT3B0aW9uYWxSR0JBKiBvdmVycmlkZUNvbG9yID0gbnVsbHB0cik7CiAgICAg
dm9pZCBwYWludFRyYW5zbHVjZW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
UmVuZGVyU3R5bGUmLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5k
ZWRSZWN0JiBpbm5lckJvcmRlciwgY29uc3QgSW50UG9pbnQmIGlubmVyQm9yZGVyQWRqdXN0bWVu
dCwKICAgICAgICAgY29uc3QgQm9yZGVyRWRnZVtdLCBCb3JkZXJFZGdlRmxhZ3MsIEJhY2tncm91
bmRCbGVlZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlLCBib29sIGFudGlhbGlhcyA9IGZhbHNlKTsKICAgICB2b2lkIHBh
aW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25z
dCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRl
ciwKICAgICAgICAgY29uc3QgSW50UG9pbnQmIGlubmVyQm9yZGVyQWRqdXN0bWVudCwgY29uc3Qg
Qm9yZGVyRWRnZVtdLCBCb3JkZXJFZGdlRmxhZ3MsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwK
LSAgICAgICAgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlLCBib29sIGFudGlhbGlhcyA9IGZhbHNlLCBjb25zdCBDb2xvciogb3ZlcnJpZGVD
b2xvciA9IG51bGxwdHIpOworICAgICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJv
b2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzID0gZmFsc2UsIGNvbnN0
IE9wdGlvbmFsUkdCQSogb3ZlcnJpZGVDb2xvciA9IG51bGxwdHIpOwogICAgIHZvaWQgZHJhd0Jv
eFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3Qg
UGF0aCYsIGNvbnN0IEJvcmRlckVkZ2VbXSwKICAgICAgICAgZmxvYXQgdGhpY2tuZXNzLCBmbG9h
dCBkcmF3VGhpY2tuZXNzLCBCb3hTaWRlLCBjb25zdCBSZW5kZXJTdHlsZSYsCi0gICAgICAgIENv
bG9yLCBFQm9yZGVyU3R5bGUsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRl
TG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKKyAgICAgICAg
T3B0aW9uYWxSR0JBLCBFQm9yZGVyU3R5bGUsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgYm9v
bCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsK
ICAgICB2b2lkIHBhaW50TWFza0ZvclRleHRGaWxsQm94KEltYWdlQnVmZmVyKiwgY29uc3QgSW50
UmVjdCYsIElubGluZUZsb3dCb3gqLCBjb25zdCBMYXlvdXRSZWN0Jik7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAKaW5kZXggY2Vm
MzRkMjk4MGJiMGJkODc4MDA4YmU4MDg2MDJiOTc5NDQ2ZGI1NS4uMjA2ODdjOGYwYWRmNWU2ZDgw
ODE5ZjE2ZTQxODBiNWNlMjBkMTk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgUmVuZGVy
RGV0YWlsc01hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mCiAgICAgaWYgKCFwYWludEluZm8ucmVjdC5pbnRlcnNlY3RzKHNuYXBwZWRJ
bnRSZWN0KG92ZXJmbG93UmVjdCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBDb2xv
ciBjb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSk7
CisgICAgY29uc3QgT3B0aW9uYWxSR0JBIGNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tl
Q29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKICAgICBwYWludEluZm8uY29udGV4
dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5z
ZXRTdHJva2VUaGlja25lc3MoMS4wZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5jcHAKaW5kZXggNDY1NDlmZTI3OWM5OTMyYTQ0OWFlZjhmZjg5NDJmZWI2NGIwZGJm
YS4uMGI2YjIwMzAxMzM0YjhiMjBhY2ExZjkzYWQ1NzhlOWU2NGExZGJkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMTU5MCwxNiArMTU5MCwxNiBA
QCBSZW5kZXJCbG9jayogUmVuZGVyRWxlbWVudDo6Y29udGFpbmluZ0Jsb2NrRm9yT2JqZWN0SW5G
bG93KCkgY29uc3QKICAgICByZXR1cm4gY29uc3RfY2FzdDxSZW5kZXJCbG9jayo+KGRvd25jYXN0
PFJlbmRlckJsb2NrPihvYmplY3QpKTsKIH0KIAotQ29sb3IgUmVuZGVyRWxlbWVudDo6c2VsZWN0
aW9uQ29sb3IoaW50IGNvbG9yUHJvcGVydHkpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyRWxl
bWVudDo6c2VsZWN0aW9uQ29sb3IoaW50IGNvbG9yUHJvcGVydHkpIGNvbnN0CiB7CiAgICAgLy8g
SWYgdGhlIGVsZW1lbnQgaXMgdW5zZWxlY3RhYmxlLCBvciB3ZSBhcmUgb25seSBwYWludGluZyB0
aGUgc2VsZWN0aW9uLAogICAgIC8vIGRvbid0IG92ZXJyaWRlIHRoZSBmb3JlZ3JvdW5kIGNvbG9y
IHdpdGggdGhlIHNlbGVjdGlvbiBmb3JlZ3JvdW5kIGNvbG9yLgogICAgIGlmIChzdHlsZSgpLnVz
ZXJTZWxlY3QoKSA9PSBTRUxFQ1RfTk9ORQogICAgICAgICB8fCAodmlldygpLmZyYW1lVmlldygp
LnBhaW50QmVoYXZpb3IoKSAmIChQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seSB8IFBhaW50QmVo
YXZpb3JTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkpKSkKLSAgICAgICAgcmV0dXJuIENvbG9y
KCk7CisgICAgICAgIHJldHVybiBPcHRpb25hbFJHQkEoKTsKIAogICAgIGlmIChSZWZQdHI8UmVu
ZGVyU3R5bGU+IHBzZXVkb1N0eWxlID0gc2VsZWN0aW9uUHNldWRvU3R5bGUoKSkgewotICAgICAg
ICBDb2xvciBjb2xvciA9IHBzZXVkb1N0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoY29sb3JQ
cm9wZXJ0eSk7CisgICAgICAgIE9wdGlvbmFsUkdCQSBjb2xvciA9IHBzZXVkb1N0eWxlLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoY29sb3JQcm9wZXJ0eSk7CiAgICAgICAgIGlmICghY29sb3IuaXNW
YWxpZCgpKQogICAgICAgICAgICAgY29sb3IgPSBwc2V1ZG9TdHlsZS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5Q29sb3IpOwogICAgICAgICByZXR1cm4gY29sb3I7CkBAIC0xNjI1
LDIwICsxNjI1LDIwIEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlckVsZW1lbnQ6OnNl
bGVjdGlvblBzZXVkb1N0eWxlKCkgY29uc3QKICAgICByZXR1cm4gZ2V0VW5jYWNoZWRQc2V1ZG9T
dHlsZShQc2V1ZG9TdHlsZVJlcXVlc3QoU0VMRUNUSU9OKSk7CiB9CiAKLUNvbG9yIFJlbmRlckVs
ZW1lbnQ6OnNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVu
ZGVyRWxlbWVudDo6c2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIHsKICAgICByZXR1
cm4gc2VsZWN0aW9uQ29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yKTsKIH0KIAot
Q29sb3IgUmVuZGVyRWxlbWVudDo6c2VsZWN0aW9uRW1waGFzaXNNYXJrQ29sb3IoKSBjb25zdAor
T3B0aW9uYWxSR0JBIFJlbmRlckVsZW1lbnQ6OnNlbGVjdGlvbkVtcGhhc2lzTWFya0NvbG9yKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gc2VsZWN0aW9uQ29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXNDb2xvcik7CiB9CiAKLUNvbG9yIFJlbmRlckVsZW1lbnQ6OnNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyRWxlbWVudDo6c2VsZWN0aW9u
QmFja2dyb3VuZENvbG9yKCkgY29uc3QKIHsKICAgICBpZiAoc3R5bGUoKS51c2VyU2VsZWN0KCkg
PT0gU0VMRUNUX05PTkUpCi0gICAgICAgIHJldHVybiBDb2xvcigpOworICAgICAgICByZXR1cm4g
T3B0aW9uYWxSR0JBKCk7CiAKICAgICBpZiAoZnJhbWUoKS5zZWxlY3Rpb24oKS5zaG91bGRTaG93
QmxvY2tDdXJzb3IoKSAmJiBmcmFtZSgpLnNlbGVjdGlvbigpLmlzQ2FyZXQoKSkKICAgICAgICAg
cmV0dXJuIHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLmJs
ZW5kV2l0aFdoaXRlKCk7CkBAIC0xNzg0LDcgKzE3ODQsNyBAQCBjb25zdCBSZW5kZXJFbGVtZW50
KiBSZW5kZXJFbGVtZW50OjplbmNsb3NpbmdSZW5kZXJlcldpdGhUZXh0RGVjb3JhdGlvbihUZXh0
RGVjbwogICAgIHJldHVybiBjdXJyZW50OwogfQogCi12b2lkIFJlbmRlckVsZW1lbnQ6OmRyYXdM
aW5lRm9yQm94U2lkZShHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBCb3hTaWRlIHNpZGUsIENvbG9yIGNvbG9yLCBFQm9yZGVyU3R5bGUgYm9y
ZGVyU3R5bGUsIGZsb2F0IGFkamFjZW50V2lkdGgxLCBmbG9hdCBhZGphY2VudFdpZHRoMiwgYm9v
bCBhbnRpYWxpYXMpIGNvbnN0Cit2b2lkIFJlbmRlckVsZW1lbnQ6OmRyYXdMaW5lRm9yQm94U2lk
ZShHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBCb3hTaWRlIHNpZGUsIE9wdGlvbmFsUkdCQSBjb2xvciwgRUJvcmRlclN0eWxlIGJvcmRlclN0
eWxlLCBmbG9hdCBhZGphY2VudFdpZHRoMSwgZmxvYXQgYWRqYWNlbnRXaWR0aDIsIGJvb2wgYW50
aWFsaWFzKSBjb25zdAogewogICAgIGZsb2F0IHgxID0gcmVjdC54KCk7CiAgICAgZmxvYXQgeDIg
PSByZWN0Lm1heFgoKTsKQEAgLTIwODMsNyArMjA4Myw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6
cGFpbnRPdXRsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiBwYWlu
dFJlCiAgICAgICAgIHJldHVybjsKIAogICAgIEVCb3JkZXJTdHlsZSBvdXRsaW5lU3R5bGUgPSBz
dHlsZVRvVXNlLm91dGxpbmVTdHlsZSgpOwotICAgIENvbG9yIG91dGxpbmVDb2xvciA9IHN0eWxl
VG9Vc2UudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKTsKKyAg
ICBPcHRpb25hbFJHQkEgb3V0bGluZUNvbG9yID0gc3R5bGVUb1VzZS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBn
cmFwaGljc0NvbnRleHQgPSAqcGFpbnRJbmZvLmNvbnRleHQ7CiAgICAgYm9vbCB1c2VUcmFuc3Bh
cmVuY3lMYXllciA9IG91dGxpbmVDb2xvci5oYXNBbHBoYSgpOwpAQCAtMjA5OCw3ICsyMDk4LDcg
QEAgdm9pZCBSZW5kZXJFbGVtZW50OjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFJlY3QmIHBhaW50UmUKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgICAgICBncmFwaGljc0NvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihzdGF0aWNf
Y2FzdDxmbG9hdD4ob3V0bGluZUNvbG9yLmFscGhhKCkpIC8gMjU1KTsKLSAgICAgICAgb3V0bGlu
ZUNvbG9yID0gQ29sb3Iob3V0bGluZUNvbG9yLnJlZCgpLCBvdXRsaW5lQ29sb3IuZ3JlZW4oKSwg
b3V0bGluZUNvbG9yLmJsdWUoKSk7CisgICAgICAgIG91dGxpbmVDb2xvciA9IE9wdGlvbmFsUkdC
QShvdXRsaW5lQ29sb3IucmVkKCksIG91dGxpbmVDb2xvci5ncmVlbigpLCBvdXRsaW5lQ29sb3Iu
Ymx1ZSgpKTsKICAgICB9CiAKICAgICBpbnQgbGVmdE91dGVyID0gb3V0ZXIueCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKaW5kZXggODk2MWUwY2VkZmE4NDM5YjUz
ZDI0YTAwOTVjNDZmOTFkM2IzNmNmMi4uMzM1MGUxYzQ0MTdiZGI4ZDhiMTUwMjVjMjY5ODcyMzBm
YmJmMTk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCkBAIC03
NCwxMyArNzQsMTMgQEAgcHVibGljOgogICAgIFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2tG
b3JBYnNvbHV0ZVBvc2l0aW9uKCkgY29uc3Q7CiAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdC
bG9ja0Zvck9iamVjdEluRmxvdygpIGNvbnN0OwogCi0gICAgQ29sb3Igc2VsZWN0aW9uQ29sb3Io
aW50IGNvbG9yUHJvcGVydHkpIGNvbnN0OworICAgIE9wdGlvbmFsUkdCQSBzZWxlY3Rpb25Db2xv
cihpbnQgY29sb3JQcm9wZXJ0eSkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
c2VsZWN0aW9uUHNldWRvU3R5bGUoKSBjb25zdDsKIAogICAgIC8vIE9idGFpbnMgdGhlIHNlbGVj
dGlvbiBjb2xvcnMgdGhhdCBzaG91bGQgYmUgdXNlZCB3aGVuIHBhaW50aW5nIGEgc2VsZWN0aW9u
LgotICAgIENvbG9yIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0OwotICAgIENvbG9y
IHNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0OwotICAgIENvbG9yIHNlbGVjdGlvbkVt
cGhhc2lzTWFya0NvbG9yKCkgY29uc3Q7CisgICAgT3B0aW9uYWxSR0JBIHNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcigpIGNvbnN0OworICAgIE9wdGlvbmFsUkdCQSBzZWxlY3Rpb25Gb3JlZ3JvdW5k
Q29sb3IoKSBjb25zdDsKKyAgICBPcHRpb25hbFJHQkEgc2VsZWN0aW9uRW1waGFzaXNNYXJrQ29s
b3IoKSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiBNYWtlIHRoZXNlIHN0YW5kYWxvbmUgYW5kIG1v
dmUgdG8gcmVsZXZhbnQgZmlsZXMuCiAgICAgYm9vbCBpc1JlbmRlckxheWVyTW9kZWxPYmplY3Qo
KSBjb25zdDsKQEAgLTIwOCw3ICsyMDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0NTU0Fu
aW1hdGluZyhib29sIGIpIHsgbV9pc0NTU0FuaW1hdGluZyA9IGI7IH0KICAgICAKICAgICBjb25z
dCBSZW5kZXJFbGVtZW50KiBlbmNsb3NpbmdSZW5kZXJlcldpdGhUZXh0RGVjb3JhdGlvbihUZXh0
RGVjb3JhdGlvbiwgYm9vbCBmaXJzdExpbmUpIGNvbnN0OwotICAgIHZvaWQgZHJhd0xpbmVGb3JC
b3hTaWRlKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIEJveFNpZGUsIENvbG9y
LCBFQm9yZGVyU3R5bGUsIGZsb2F0IGFkamFjZW50V2lkdGgxLCBmbG9hdCBhZGphY2VudFdpZHRo
MiwgYm9vbCBhbnRpYWxpYXMgPSBmYWxzZSkgY29uc3Q7CisgICAgdm9pZCBkcmF3TGluZUZvckJv
eFNpZGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgQm94U2lkZSwgT3B0aW9u
YWxSR0JBLCBFQm9yZGVyU3R5bGUsIGZsb2F0IGFkamFjZW50V2lkdGgxLCBmbG9hdCBhZGphY2Vu
dFdpZHRoMiwgYm9vbCBhbnRpYWxpYXMgPSBmYWxzZSkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAg
ICBlbnVtIEJhc2VUeXBlRmxhZ3MgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKaW5kZXggMzE1ZGMxNDVkZGZiODUwMTQ1Y2EyMGJkOWYw
YTE1MGExYjY1N2VlNC4uOTk1YjYyMGVjZTQzMmJiMDhkY2FkMDRhNjkzNmFjZGVhMTIxNjkxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
Y3BwCkBAIC03MiwyNyArNzIsMjcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHJlcGxhY2VtZW50QXJy
b3dMZWZ0TWFyZ2luID0gLTQ7CiBzdGF0aWMgY29uc3QgZmxvYXQgcmVwbGFjZW1lbnRBcnJvd1Bh
ZGRpbmcgPSA0Owogc3RhdGljIGNvbnN0IGZsb2F0IHJlcGxhY2VtZW50QXJyb3dDaXJjbGVQYWRk
aW5nID0gMzsKIAotc3RhdGljIGNvbnN0IENvbG9yJiByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVj
dFByZXNzZWRDb2xvcigpCitzdGF0aWMgY29uc3QgT3B0aW9uYWxSR0JBJiByZXBsYWNlbWVudFRl
eHRSb3VuZGVkUmVjdFByZXNzZWRDb2xvcigpCiB7Ci0gICAgc3RhdGljIGNvbnN0IENvbG9yIHBy
ZXNzZWQoMTA1LCAxMDUsIDEwNSwgMjQyKTsKKyAgICBzdGF0aWMgY29uc3QgT3B0aW9uYWxSR0JB
IHByZXNzZWQoMTA1LCAxMDUsIDEwNSwgMjQyKTsKICAgICByZXR1cm4gcHJlc3NlZDsKIH0KIAot
c3RhdGljIGNvbnN0IENvbG9yJiByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdENvbG9yKCkKK3N0
YXRpYyBjb25zdCBPcHRpb25hbFJHQkEmIHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0Q29sb3Io
KQogewotICAgIHN0YXRpYyBjb25zdCBDb2xvciBzdGFuZGFyZCgxMjUsIDEyNSwgMTI1LCAyNDIp
OworICAgIHN0YXRpYyBjb25zdCBPcHRpb25hbFJHQkEgc3RhbmRhcmQoMTI1LCAxMjUsIDEyNSwg
MjQyKTsKICAgICByZXR1cm4gc3RhbmRhcmQ7CiB9CiAKLXN0YXRpYyBjb25zdCBDb2xvciYgcmVw
bGFjZW1lbnRUZXh0Q29sb3IoKQorc3RhdGljIGNvbnN0IE9wdGlvbmFsUkdCQSYgcmVwbGFjZW1l
bnRUZXh0Q29sb3IoKQogewotICAgIHN0YXRpYyBjb25zdCBDb2xvciBzdGFuZGFyZCgyNDAsIDI0
MCwgMjQwLCAyNTUpOworICAgIHN0YXRpYyBjb25zdCBPcHRpb25hbFJHQkEgc3RhbmRhcmQoMjQw
LCAyNDAsIDI0MCwgMjU1KTsKICAgICByZXR1cm4gc3RhbmRhcmQ7CiB9CiAKLXN0YXRpYyBjb25z
dCBDb2xvciYgdW5hdmFpbGFibGVQbHVnaW5Cb3JkZXJDb2xvcigpCitzdGF0aWMgY29uc3QgT3B0
aW9uYWxSR0JBJiB1bmF2YWlsYWJsZVBsdWdpbkJvcmRlckNvbG9yKCkKIHsKLSAgICBzdGF0aWMg
Y29uc3QgQ29sb3Igc3RhbmRhcmQoMjU1LCAyNTUsIDI1NSwgMjE2KTsKKyAgICBzdGF0aWMgY29u
c3QgT3B0aW9uYWxSR0JBIHN0YW5kYXJkKDI1NSwgMjU1LCAyNTUsIDIxNik7CiAgICAgcmV0dXJu
IHN0YW5kYXJkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnJhbWVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0
LmNwcAppbmRleCAzMzMxNzc2YWM0M2M4NGI4ODQ4YjMyYzQyM2U3NGU5ZTcxZmRjNjA0Li5lOGQ0
MmE2ODlhNzE1NGFkYTQyMjQ3ZmVkNDIyOWFjNGNhM2JmZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAKQEAgLTY3LDE5ICs2NywxOSBAQCBSZW5kZXJG
cmFtZVNldDo6R3JpZEF4aXM6OkdyaWRBeGlzKCkKIHsKIH0KIAotc3RhdGljIENvbG9yIGJvcmRl
clN0YXJ0RWRnZUNvbG9yKCkKK3N0YXRpYyBPcHRpb25hbFJHQkEgYm9yZGVyU3RhcnRFZGdlQ29s
b3IoKQogewotICAgIHJldHVybiBDb2xvcigxNzAsIDE3MCwgMTcwKTsKKyAgICByZXR1cm4gT3B0
aW9uYWxSR0JBKDE3MCwgMTcwLCAxNzApOwogfQogCi1zdGF0aWMgQ29sb3IgYm9yZGVyRW5kRWRn
ZUNvbG9yKCkKK3N0YXRpYyBPcHRpb25hbFJHQkEgYm9yZGVyRW5kRWRnZUNvbG9yKCkKIHsKLSAg
ICByZXR1cm4gQ29sb3I6OmJsYWNrOworICAgIHJldHVybiBPcHRpb25hbFJHQkE6OmJsYWNrOwog
fQogCi1zdGF0aWMgQ29sb3IgYm9yZGVyRmlsbENvbG9yKCkKK3N0YXRpYyBPcHRpb25hbFJHQkEg
Ym9yZGVyRmlsbENvbG9yKCkKIHsKLSAgICByZXR1cm4gQ29sb3IoMjA4LCAyMDgsIDIwOCk7Cisg
ICAgcmV0dXJuIE9wdGlvbmFsUkdCQSgyMDgsIDIwOCwgMjA4KTsKIH0KIAogdm9pZCBSZW5kZXJG
cmFtZVNldDo6cGFpbnRDb2x1bW5Cb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IEludFJlY3QmIGJvcmRlclJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnVsbFNjcmVlbi5jcHAKaW5kZXggMmNmOTk1NDI5YjZhNjE1MjAwYTk4MjIyMzg5MGFjZWFm
YzFlNTAzYS4uZjc4MmFlN2Q3Y2RhMmYzMzE1OTMxZTUxMjY0ZWEzZmY5NDkxMjMwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcApAQCAtOTksNyAr
OTksNyBAQCBzdGF0aWMgUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVGdWxsU2NyZWVuU3R5bGUoKQog
ICAgIGZ1bGxzY3JlZW5TdHlsZS5nZXQoKS5zZXRMZWZ0KExlbmd0aCgwLCBXZWJDb3JlOjpGaXhl
ZCkpOwogICAgIGZ1bGxzY3JlZW5TdHlsZS5nZXQoKS5zZXRUb3AoTGVuZ3RoKDAsIFdlYkNvcmU6
OkZpeGVkKSk7CiAgICAgCi0gICAgZnVsbHNjcmVlblN0eWxlLmdldCgpLnNldEJhY2tncm91bmRD
b2xvcihDb2xvcjo6YmxhY2spOworICAgIGZ1bGxzY3JlZW5TdHlsZS5nZXQoKS5zZXRCYWNrZ3Jv
dW5kQ29sb3IoT3B0aW9uYWxSR0JBOjpibGFjayk7CiAKICAgICByZXR1cm4gZnVsbHNjcmVlblN0
eWxlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggMjk4
NGQ1N2NhYjdmMzA3ZDk5ZjhmZTAwMDYyNzE3MTA2MjExMDNiZC4uMTkyZGQ3ZjMzMTIzN2ViOWFj
NWYwZGMwMDhiZGQ2YmFkN2UzOTVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwCkBAIC0zOTIsOCArMzkyLDggQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBs
YWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKIAog
ICAgICAgICAgICAgLy8gRHJhdyBhbiBvdXRsaW5lIHJlY3Qgd2hlcmUgdGhlIGltYWdlIHNob3Vs
ZCBiZS4KICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsK
LSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yOjpsaWdodEdyYXksIHN0
eWxlKCkuY29sb3JTcGFjZSgpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihD
b2xvcjo6dHJhbnNwYXJlbnQsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPnNldFN0cm9rZUNvbG9yKE9wdGlvbmFsUkdCQTo6bGlnaHRHcmF5LCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoT3B0aW9uYWxS
R0JBOjp0cmFuc3BhcmVudCwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgY29u
dGV4dC0+ZHJhd1JlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zm
c2V0LngoKSArIGxlZnRCb3JkZXIgKyBsZWZ0UGFkLCBwYWludE9mZnNldC55KCkgKyB0b3BCb3Jk
ZXIgKyB0b3BQYWQsIGNXaWR0aCwgY0hlaWdodCksIGRldmljZVNjYWxlRmFjdG9yKSwgYm9yZGVy
V2lkdGgpOwogCiAgICAgICAgICAgICBib29sIGVycm9yUGljdHVyZURyYXduID0gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDQ5ZDQ1MjA1YzBh
OWM4YjFkNjE0NTAyNTYyZTU1YmYwYTgzNDYzYzUuLjI3MjdmYmMzZjcxNmEzMTMyYzI2ODZhY2I0
YWRmZTM1ZmRjY2YxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwCkBAIC0xNTc4LDExICsxNTc4LDExIEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxp
bmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAgICAg
fQogICAgIHJlY3RzLmFwcGVuZChMYXlvdXRSZWN0KCkpOwogCi0gICAgQ29sb3Igb3V0bGluZUNv
bG9yID0gc3R5bGVUb1VzZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlPdXRsaW5l
Q29sb3IpOworICAgIE9wdGlvbmFsUkdCQSBvdXRsaW5lQ29sb3IgPSBzdHlsZVRvVXNlLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcik7CiAgICAgYm9vbCB1c2VU
cmFuc3BhcmVuY3lMYXllciA9IG91dGxpbmVDb2xvci5oYXNBbHBoYSgpOwogICAgIGlmICh1c2VU
cmFuc3BhcmVuY3lMYXllcikgewogICAgICAgICBncmFwaGljc0NvbnRleHQtPmJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXIoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG91dGxpbmVDb2xvci5hbHBoYSgpKSAvIDI1
NSk7Ci0gICAgICAgIG91dGxpbmVDb2xvciA9IENvbG9yKG91dGxpbmVDb2xvci5yZWQoKSwgb3V0
bGluZUNvbG9yLmdyZWVuKCksIG91dGxpbmVDb2xvci5ibHVlKCkpOworICAgICAgICBvdXRsaW5l
Q29sb3IgPSBPcHRpb25hbFJHQkEob3V0bGluZUNvbG9yLnJlZCgpLCBvdXRsaW5lQ29sb3IuZ3Jl
ZW4oKSwgb3V0bGluZUNvbG9yLmJsdWUoKSk7CiAgICAgfQogCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMTsgaSA8IHJlY3RzLnNpemUoKSAtIDE7IGkrKykKQEAgLTE1OTQsNyArMTU5NCw3IEBAIHZv
aWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mCiAKIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmVG
b3JMaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBMYXlvdXRSZWN0JiBsYXN0bGluZSwgY29uc3QgTGF5b3V0UmVjdCYgdGhpc2xpbmUsIGNv
bnN0IExheW91dFJlY3QmIG5leHRsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgQ29sb3Igb3V0bGluZUNvbG9yKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgT3B0aW9uYWxSR0JBIG91dGxpbmVDb2xvcikKIHsKICAg
ICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGVUb1VzZSA9IHN0eWxlKCk7CiAgICAgaW50IG91dGxp
bmVXaWR0aCA9IHN0eWxlVG9Vc2Uub3V0bGluZVdpZHRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmgKaW5kZXggNGUwZmVhOWY0YzBmNTFjYmM3MmYyMTI4NzhmY2NmYWVl
NWYwMjJlYS4uMjhkMzI4NTJiZWRlMTJmNDhlMGY0ZTFjNGNkZTIxMzNmNWFlYTYwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaApAQCAtMTc0LDcgKzE3NCw3IEBAIHBy
aXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlcklubGluZT4gY2xvbmUoKSBjb25zdDsKIAogICAg
IHZvaWQgcGFpbnRPdXRsaW5lRm9yTGluZShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRQ
b2ludCYsIGNvbnN0IExheW91dFJlY3QmIHByZXZMaW5lLCBjb25zdCBMYXlvdXRSZWN0JiB0aGlz
TGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCYgbmV4
dExpbmUsIGNvbnN0IENvbG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
TGF5b3V0UmVjdCYgbmV4dExpbmUsIGNvbnN0IE9wdGlvbmFsUkdCQSk7CiAgICAgUmVuZGVyQm94
TW9kZWxPYmplY3QqIGNvbnRpbnVhdGlvbkJlZm9yZShSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxk
KTsKIAogICAgIFJlbmRlckxpbmVCb3hMaXN0IG1fbGluZUJveGVzOyAgIC8vIEFsbCBvZiB0aGUg
bGluZSBib3hlcyBjcmVhdGVkIGZvciB0aGlzIGlubGluZSBmbG93LiAgRm9yIGV4YW1wbGUsIDxp
PkhlbGxvPGJyPndvcmxkLjwvaT4gd2lsbCBoYXZlIHR3byA8aT4gbGluZSBib3hlcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDgxMGFkYTFjYTU5NTI2NGQ4
ODBmMGYwNWFjZDJjOWFkNTZmZTIxOWYuLmM0M2FhZDU2ZmNmOGVmZmQyNGE1NDAwODUzZTZiNmI3
Njk4OTMyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAt
MTgxNiw3ICsxODE2LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6YmVnaW5UcmFuc3BhcmVuY3lMYXll
cnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclAKICNlbmRpZgogCiAjaWZk
ZWYgUkVWRUFMX1RSQU5TUEFSRU5DWV9MQVlFUlMKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENv
bG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuNWYsIDAuMmYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKE9wdGlvbmFsUkdCQSgwLjBmLCAwLjBmLCAw
LjVmLCAwLjJmKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGNvbnRleHQtPmZpbGxS
ZWN0KHBpeGVsU25hcHBlZENsaXBSZWN0KTsKICNlbmRpZgogICAgIH0KQEAgLTM2MjYsNyArMzYy
Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQmIHBhCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBw
YWludCB3aGl0ZSBpZiB3ZSBoYXZlIG92ZXJsYXkgc2Nyb2xsYmFycywgc2luY2Ugd2UgbmVlZAog
ICAgIC8vIHRvIHNlZSB3aGF0IGlzIGJlaGluZCBpdC4KICAgICBpZiAoIWhhc092ZXJsYXlTY3Jv
bGxiYXJzKCkpCi0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGFic1JlY3QsIENvbG9yOjp3aGl0
ZSwgYm94LT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0
KGFic1JlY3QsIE9wdGlvbmFsUkdCQTo6d2hpdGUsIGJveC0+c3R5bGUoKS5jb2xvclNwYWNlKCkp
OwogfQogCiB2b2lkIFJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiByZXNpemVyQ29ybmVyUmVjdCkK
QEAgLTM2ODgsOSArMzY4OCw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYWluCiAgICAgICAgIGNv
bnRleHQtPmNsaXAoYWJzUmVjdCk7CiAgICAgICAgIExheW91dFJlY3QgbGFyZ2VyQ29ybmVyID0g
YWJzUmVjdDsKICAgICAgICAgbGFyZ2VyQ29ybmVyLnNldFNpemUoTGF5b3V0U2l6ZShsYXJnZXJD
b3JuZXIud2lkdGgoKSArIExheW91dFVuaXQ6OmZyb21QaXhlbCgxKSwgbGFyZ2VyQ29ybmVyLmhl
aWdodCgpICsgTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKDEpKSk7Ci0gICAgICAgIGNvbnRleHQtPnNl
dFN0cm9rZUNvbG9yKENvbG9yKG1ha2VSR0IoMjE3LCAyMTcsIDIxNykpLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoT3B0aW9uYWxSR0JBKG1h
a2VSR0IoMjE3LCAyMTcsIDIxNykpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgY29u
dGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDEuMGYpOwotICAgICAgICBjb250ZXh0LT5zZXRGaWxs
Q29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAg
Y29udGV4dC0+c2V0RmlsbENvbG9yKE9wdGlvbmFsUkdCQTo6dHJhbnNwYXJlbnQsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogICAgICAgICBjb250ZXh0LT5kcmF3UmVjdChzbmFwcGVkSW50UmVjdChs
YXJnZXJDb3JuZXIpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDgzOTBmMDliYzFhMjM1MzVjMzU4YTlhMzQ4NWIy
Mzk3Nzc5MzJkMjYuLjlkODRjZWNkNzE1MGM5NTUyOGIxYjY1ZmM1Yjg3NjY2ZjJlMjg2MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBA
IC0xNjY2LDcgKzE2NjYsNyBAQCBzdGF0aWMgYm9vbCBjYW5DcmVhdGVUaWxlZEltYWdlKGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICBpZiAoZmlsbExheWVyLT5hdHRhY2htZW50KCkgIT0g
U2Nyb2xsQmFja2dyb3VuZEF0dGFjaG1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IENvbG9yIGNvbG9yID0gc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKTsKKyAgICBPcHRpb25hbFJHQkEgY29sb3IgPSBzdHlsZS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgLy8gRklYTUU6
IEFsbG93IGNvbG9yK2ltYWdlIGNvbXBvc2l0aW5nIHdoZW4gaXQgbWFrZXMgc2Vuc2UuCiAgICAg
Ly8gRm9yIG5vdyBiYWlsaW5nIG91dC4KQEAgLTE3MDIsNyArMTcwMiw3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBoYXNQZXJzcGVjdGl2ZU9yUHJlc2VydmVzM0QoY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlKQogICAgIHJldHVybiBzdHlsZS5oYXNQZXJzcGVjdGl2ZSgpIHx8IHN0eWxlLnByZXNlcnZl
czNEKCk7CiB9CiAKLUNvbG9yIFJlbmRlckxheWVyQmFja2luZzo6cmVuZGVyZXJCYWNrZ3JvdW5k
Q29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlckxheWVyQmFja2luZzo6cmVuZGVyZXJC
YWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogewogICAgIGNvbnN0IGF1dG8mIGJhY2tncm91bmRSZW5k
ZXJlciA9IHJlbmRlcmVyKCkuaXNSb290KCkgPyByZW5kZXJlcigpLnJlbmRlcmVyRm9yUm9vdEJh
Y2tncm91bmQoKSA6IHJlbmRlcmVyKCk7CiAgICAgcmV0dXJuIGJhY2tncm91bmRSZW5kZXJlci5z
dHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7
CkBAIC0xNzExLDExICsxNzExLDExIEBAIENvbG9yIFJlbmRlckxheWVyQmFja2luZzo6cmVuZGVy
ZXJCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0
ZURpcmVjdGx5Q29tcG9zaXRlZEJhY2tncm91bmRDb2xvcihib29sIGlzU2ltcGxlQ29udGFpbmVy
LCBib29sJiBkaWRVcGRhdGVDb250ZW50c1JlY3QpCiB7CiAgICAgaWYgKCFpc1NpbXBsZUNvbnRh
aW5lcikgewotICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9Tb2xpZENvbG9y
KENvbG9yKCkpOworICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9Tb2xpZENv
bG9yKE9wdGlvbmFsUkdCQSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIENvbG9y
IGJhY2tncm91bmRDb2xvciA9IHJlbmRlcmVyQmFja2dyb3VuZENvbG9yKCk7CisgICAgT3B0aW9u
YWxSR0JBIGJhY2tncm91bmRDb2xvciA9IHJlbmRlcmVyQmFja2dyb3VuZENvbG9yKCk7CiAKICAg
ICAvLyBBbiB1bnNldCAoaW52YWxpZCkgY29sb3Igd2lsbCByZW1vdmUgdGhlIHNvbGlkIGNvbG9y
LgogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoYmFja2dyb3Vu
ZENvbG9yKTsKQEAgLTE3NjAsMTQgKzE3NjAsMTQgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6
OnVwZGF0ZVJvb3RMYXllckNvbmZpZ3VyYXRpb24oKQogICAgIGlmICghbV91c2luZ1RpbGVkQ2Fj
aGVMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ29sb3IgYmFja2dyb3VuZENvbG9yOwor
ICAgIE9wdGlvbmFsUkdCQSBiYWNrZ3JvdW5kQ29sb3I7CiAgICAgYm9vbCB2aWV3SXNUcmFuc3Bh
cmVudCA9IGNvbXBvc2l0b3IoKS52aWV3SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCZiYWNrZ3Jv
dW5kQ29sb3IpOwogCiAgICAgaWYgKG1fYmFja2dyb3VuZExheWVyUGFpbnRzRml4ZWRSb290QmFj
a2dyb3VuZCAmJiBtX2JhY2tncm91bmRMYXllcikgewogICAgICAgICBtX2JhY2tncm91bmRMYXll
ci0+c2V0QmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xvcik7CiAgICAgICAgIG1fYmFja2dy
b3VuZExheWVyLT5zZXRDb250ZW50c09wYXF1ZSghdmlld0lzVHJhbnNwYXJlbnQpOwogCi0gICAg
ICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yKCkpOworICAgICAg
ICBtX2dyYXBoaWNzTGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihPcHRpb25hbFJHQkEoKSk7CiAg
ICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNPcGFxdWUoZmFsc2UpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKGJhY2tn
cm91bmRDb2xvcik7CkBAIC0yNDMxLDcgKzI0MzEsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2lu
Zzo6c2hvdWxkRHVtcFByb3BlcnR5Rm9yTGF5ZXIoY29uc3QgR3JhcGhpY3NMYXllciogbGF5ZXIs
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8gQmFja2dyb3VuZCBjb2xv
ciBjb3VsZCBiZSBvZiBpbnRlcmVzdCB0byB0ZXN0cyBvciBvdGhlciBkdW1wZXJzIGlmIGl0J3Mg
bm9uLXdoaXRlLgotICAgICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJiYWNrZ3JvdW5k
Q29sb3IiKSAmJiBsYXllci0+YmFja2dyb3VuZENvbG9yKCkgPT0gQ29sb3I6OndoaXRlKQorICAg
ICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJiYWNrZ3JvdW5kQ29sb3IiKSAmJiBsYXll
ci0+YmFja2dyb3VuZENvbG9yKCkgPT0gT3B0aW9uYWxSR0JBOjp3aGl0ZSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgICAgICAvLyBUaGUgcm9vdCB0aWxlIGNhY2hlJ3MgcmVwYWlu
dHMgd2lsbCBzaG93IHVwIGF0IHRoZSB0b3Agd2l0aCBGcmFtZVZpZXcncywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAppbmRleCBkNGQyMjM4OTZkY2Y2
YTUyMjg3ZDMzNmQ2YWUyNDIyN2Q3OTc3OTc2Li41MGE4ZGExYjlmZmZiMmRkNjU1MWMyMTcxMzFl
MDZlYmFlMjRmZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5oCkBAIC0zMTEsNyArMzExLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzRGlyZWN0
bHlDb21wb3NpdGVkSW1hZ2UoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZUltYWdlQ29udGVudHMo
KTsKIAotICAgIENvbG9yIHJlbmRlcmVyQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CisgICAgT3B0
aW9uYWxSR0JBIHJlbmRlcmVyQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRh
dGVEaXJlY3RseUNvbXBvc2l0ZWRCYWNrZ3JvdW5kQ29sb3IoYm9vbCBpc1NpbXBsZUNvbnRhaW5l
ciwgYm9vbCYgZGlkVXBkYXRlQ29udGVudHNSZWN0KTsKICAgICB2b2lkIHVwZGF0ZURpcmVjdGx5
Q29tcG9zaXRlZEJhY2tncm91bmRJbWFnZShib29sIGlzU2ltcGxlQ29udGFpbmVyLCBib29sJiBk
aWRVcGRhdGVDb250ZW50c1JlY3QpOwogICAgIHZvaWQgdXBkYXRlRGlyZWN0bHlDb21wb3NpdGVk
Q29udGVudHMoYm9vbCBpc1NpbXBsZUNvbnRhaW5lciwgYm9vbCYgZGlkVXBkYXRlQ29udGVudHNS
ZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAKaW5kZXggMmMzYmI5ZjNlOTkwMDA0ZjYxOWMyYjIxZjk1MzA2MGUxNDViMDI1Ny4u
ZTM2YTZhMzljMDAxYzU2NmM5MjkzOTdmMGM2NTdmZWJiOTQ3YmFhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTMxOTQs
MTcgKzMxOTQsMTcgQEAgR3JhcGhpY3NMYXllciogUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRh
dGVMYXllckZvckZvb3Rlcihib29sIHdhbnRzTGF5ZXIpCiAKICNlbmRpZgogCi1ib29sIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6dmlld0hhc1RyYW5zcGFyZW50QmFja2dyb3VuZChDb2xvciogYmFj
a2dyb3VuZENvbG9yKSBjb25zdAorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnZpZXdIYXNU
cmFuc3BhcmVudEJhY2tncm91bmQoT3B0aW9uYWxSR0JBKiBiYWNrZ3JvdW5kQ29sb3IpIGNvbnN0
CiB7CiAgICAgaWYgKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5pc1RyYW5zcGFyZW50KCkpIHsK
ICAgICAgICAgaWYgKGJhY2tncm91bmRDb2xvcikKLSAgICAgICAgICAgICpiYWNrZ3JvdW5kQ29s
b3IgPSBDb2xvcigpOyAvLyBSZXR1cm4gYW4gaW52YWxpZCBjb2xvci4KKyAgICAgICAgICAgICpi
YWNrZ3JvdW5kQ29sb3IgPSBPcHRpb25hbFJHQkEoKTsgLy8gUmV0dXJuIGFuIGludmFsaWQgY29s
b3IuCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIENvbG9yIGRvY3VtZW50QmFj
a2dyb3VuZENvbG9yID0gbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmRvY3VtZW50QmFja2dyb3Vu
ZENvbG9yKCk7CisgICAgT3B0aW9uYWxSR0JBIGRvY3VtZW50QmFja2dyb3VuZENvbG9yID0gbV9y
ZW5kZXJWaWV3LmZyYW1lVmlldygpLmRvY3VtZW50QmFja2dyb3VuZENvbG9yKCk7CiAgICAgaWYg
KCFkb2N1bWVudEJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIGRvY3VtZW50QmFj
a2dyb3VuZENvbG9yID0gQ29sb3I6OndoaXRlOworICAgICAgICBkb2N1bWVudEJhY2tncm91bmRD
b2xvciA9IE9wdGlvbmFsUkdCQTo6d2hpdGU7CiAKICAgICBpZiAoYmFja2dyb3VuZENvbG9yKQog
ICAgICAgICAqYmFja2dyb3VuZENvbG9yID0gZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3I7CkBAIC0z
MjE5LDcgKzMyMTksNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cm9vdE9yQm9keVN0
eWxlQ2hhbmdlZChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29ucwogICAgIGlmICghaW5Db21w
b3NpdGluZ01vZGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ29sb3Igb2xkQmFja2dyb3Vu
ZENvbG9yOworICAgIE9wdGlvbmFsUkdCQSBvbGRCYWNrZ3JvdW5kQ29sb3I7CiAgICAgaWYgKG9s
ZFN0eWxlKQogICAgICAgICBvbGRCYWNrZ3JvdW5kQ29sb3IgPSBvbGRTdHlsZS0+dmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKIApAQCAtMzI1MSw3ICsz
MjUxLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJvb3RCYWNrZ3JvdW5kVHJhbnNw
YXJlbmN5Q2hhbmdlZCgpCiAgICAgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyVXBkYXRlKCk7CiB9
CiAKLXZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpzZXRSb290RXh0ZW5kZWRCYWNrZ3JvdW5k
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQordm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNl
dFJvb3RFeHRlbmRlZEJhY2tncm91bmRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yKQog
ewogICAgIGlmIChjb2xvciA9PSBtX3Jvb3RFeHRlbmRlZEJhY2tncm91bmRDb2xvcikKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5oCmluZGV4IGU5YjBlNDhhOWMzZjlmMWIxNmIwMmI5NDI2MDRhMWUxOWViNDAxMTEu
LmZmZDUzOGRiM2ZiMjRhNmYzZGRlOTU5NTYwZTJiYTRhZGI4OTNmY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTI5OCw3ICsy
OTgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNob3VsZFJlZXZhbHVhdGVDb21wb3NpdGlu
Z0FmdGVyTGF5b3V0KCkgeyBtX3JlZXZhbHVhdGVDb21wb3NpdGluZ0FmdGVyTGF5b3V0ID0gdHJ1
ZTsgfQogCi0gICAgYm9vbCB2aWV3SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKENvbG9yKiBiYWNr
Z3JvdW5kQ29sb3IgPSBudWxscHRyKSBjb25zdDsKKyAgICBib29sIHZpZXdIYXNUcmFuc3BhcmVu
dEJhY2tncm91bmQoT3B0aW9uYWxSR0JBKiBiYWNrZ3JvdW5kQ29sb3IgPSBudWxscHRyKSBjb25z
dDsKIAogICAgIGJvb2wgaGFzTm9uTWFpbkxheWVyc1dpdGhUaWxlZEJhY2tpbmcoKSBjb25zdCB7
IHJldHVybiBtX2xheWVyc1dpdGhUaWxlZEJhY2tpbmdDb3VudDsgfQogCkBAIC0zMDksOCArMzA5
LDggQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgZGlkUGFpbnRCYWNraW5nKFJlbmRlckxheWVy
QmFja2luZyopOwogCi0gICAgdm9pZCBzZXRSb290RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoY29u
c3QgQ29sb3ImKTsKLSAgICBDb2xvciByb290RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25z
dCB7IHJldHVybiBtX3Jvb3RFeHRlbmRlZEJhY2tncm91bmRDb2xvcjsgfQorICAgIHZvaWQgc2V0
Um9vdEV4dGVuZGVkQmFja2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYpOworICAgIE9w
dGlvbmFsUkdCQSByb290RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBt
X3Jvb3RFeHRlbmRlZEJhY2tncm91bmRDb2xvcjsgfQogCiAgICAgLy8gRm9yIHRlc3RpbmcuCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydFRyYWNraW5nTGF5ZXJGbHVzaGVzKCk7CkBAIC01
NTcsNyArNTU3LDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9zZWNvbmRhcnlCYWNraW5nU3Rv
cmVCeXRlcyB7IDAgfTsKICNlbmRpZgogCi0gICAgQ29sb3IgbV9yb290RXh0ZW5kZWRCYWNrZ3Jv
dW5kQ29sb3I7CisgICAgT3B0aW9uYWxSR0JBIG1fcm9vdEV4dGVuZGVkQmFja2dyb3VuZENvbG9y
OwogCiAgICAgSGFzaE1hcDxTY3JvbGxpbmdOb2RlSUQsIFJlbmRlckxheWVyKj4gbV9zY3JvbGxp
bmdOb2RlVG9MYXllck1hcDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5jcHAKaW5kZXggOTE2YzJkZTdlYjU3Y2Y1YTcxY2ZmODU0NDQ4OGRiMzVjMTE5Mzc2My4u
NjIxM2U5YWVmOGY3Yzk4YzdmNzBlOTVkNTAyYzE0NzBjMGQ4N2ExYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtMzg3LDcgKzM4Nyw3IEBAIHZvaWQg
UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmCiAgICAgICAgIGl0ZW1UZXh0ID0gZG93bmNhc3Q8SFRNTE9wdEdy
b3VwRWxlbWVudD4oKmxpc3RJdGVtRWxlbWVudCkuZ3JvdXBMYWJlbFRleHQoKTsKICAgICBhcHBs
eVRleHRUcmFuc2Zvcm0oc3R5bGUoKSwgaXRlbVRleHQsICcgJyk7CiAKLSAgICBDb2xvciB0ZXh0
Q29sb3IgPSBpdGVtU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3Ip
OworICAgIE9wdGlvbmFsUkdCQSB0ZXh0Q29sb3IgPSBpdGVtU3R5bGUudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5Q29sb3IpOwogICAgIGlmIChpc09wdGlvbkVsZW1lbnQgJiYgZG93
bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpsaXN0SXRlbUVsZW1lbnQpLnNlbGVjdGVkKCkpIHsK
ICAgICAgICAgaWYgKGZyYW1lKCkuc2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkgJiYg
ZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpID09ICZzZWxlY3RFbGVtZW50KCkpCiAgICAgICAg
ICAgICB0ZXh0Q29sb3IgPSB0aGVtZSgpLmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5k
Q29sb3IoKTsKQEAgLTQyMSw3ICs0MjEsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRl
bUJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JgogICAg
IEhUTUxFbGVtZW50KiBsaXN0SXRlbUVsZW1lbnQgPSBsaXN0SXRlbXNbbGlzdEluZGV4XTsKICAg
ICBSZW5kZXJTdHlsZSYgaXRlbVN0eWxlID0gKmxpc3RJdGVtRWxlbWVudC0+Y29tcHV0ZWRTdHls
ZSgpOwogCi0gICAgQ29sb3IgYmFja0NvbG9yOworICAgIE9wdGlvbmFsUkdCQSBiYWNrQ29sb3I7
CiAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PigqbGlzdEl0ZW1FbGVtZW50KSAmJiBkb3du
Y2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oKmxpc3RJdGVtRWxlbWVudCkuc2VsZWN0ZWQoKSkgewog
ICAgICAgICBpZiAoZnJhbWUoKS5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSAmJiBk
b2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCkgPT0gJnNlbGVjdEVsZW1lbnQoKSkKICAgICAgICAg
ICAgIGJhY2tDb2xvciA9IHRoZW1lKCkuYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRD
b2xvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RN
YXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3Bw
CmluZGV4IDkwMGM4NzAwMzg2MzY3YmJkMDIwZDUzOGQwYjc2Y2U1Njk3MDVkMTQuLjhiMTBmMWE4
YjI2OWE1MmUzZmQ2NTY3MDY1ZTE5YjUzN2EwNjA5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKQEAgLTEyMTIsNyArMTIxMiw3IEBAIHZvaWQg
UmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNlCiAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRS
ZWN0KHNlbFJlY3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgfQogCi0gICAgY29uc3QgQ29sb3IgY29sb3Ioc3R5bGUo
KS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOworICAgIGNvbnN0IE9w
dGlvbmFsUkdCQSBjb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eUNvbG9yKSk7CiAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoY29sb3IsIHN0eWxlKCkuY29s
b3JTcGFjZSgpKTsKICAgICBjb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CiAg
ICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDEuMGYpOwpAQCAtMTIyNCw3ICsxMjI0LDcg
QEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdFbGxp
cHNlKG1hcmtlcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgQ2lyY2xlOgot
ICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgQ29s
b3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoT3B0
aW9uYWxSR0JBOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgICAg
ICBjb250ZXh0LT5kcmF3RWxsaXBzZShtYXJrZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBjYXNlIFNxdWFyZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxp
c3QuY3BwCmluZGV4IGRiOTk0OTljYmRmZjAzYTU1MTAxZDJhZDg2ZTE4Mzc2Y2ZhZmEyOGIuLjk3
ZWE2NGNkNTFkZTk5ZmIzMDJiMWY0MjQ4YWRmNTUxMGUyMjQ3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtNTE4LDcgKzUxOCw3IEBAIFBvcHVw
TWVudVN0eWxlIFJlbmRlck1lbnVMaXN0OjppdGVtU3R5bGUodW5zaWduZWQgbGlzdEluZGV4KSBj
b25zdAogICAgIH0KICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IGxpc3RJdGVtc1tsaXN0SW5k
ZXhdOwogCi0gICAgQ29sb3IgaXRlbUJhY2tncm91bmRDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEg
aXRlbUJhY2tncm91bmRDb2xvcjsKICAgICBib29sIGl0ZW1IYXNDdXN0b21CYWNrZ3JvdW5kQ29s
b3I7CiAgICAgZ2V0SXRlbUJhY2tncm91bmRDb2xvcihsaXN0SW5kZXgsIGl0ZW1CYWNrZ3JvdW5k
Q29sb3IsIGl0ZW1IYXNDdXN0b21CYWNrZ3JvdW5kQ29sb3IpOwogCkBAIC01MjgsNyArNTI4LDcg
QEAgUG9wdXBNZW51U3R5bGUgUmVuZGVyTWVudUxpc3Q6Oml0ZW1TdHlsZSh1bnNpZ25lZCBsaXN0
SW5kZXgpIGNvbnN0CiAgICAgICAgIGl0ZW1IYXNDdXN0b21CYWNrZ3JvdW5kQ29sb3IgPyBQb3B1
cE1lbnVTdHlsZTo6Q3VzdG9tQmFja2dyb3VuZENvbG9yIDogUG9wdXBNZW51U3R5bGU6OkRlZmF1
bHRCYWNrZ3JvdW5kQ29sb3IpOwogfQogCi12b2lkIFJlbmRlck1lbnVMaXN0OjpnZXRJdGVtQmFj
a2dyb3VuZENvbG9yKHVuc2lnbmVkIGxpc3RJbmRleCwgQ29sb3ImIGl0ZW1CYWNrZ3JvdW5kQ29s
b3IsIGJvb2wmIGl0ZW1IYXNDdXN0b21CYWNrZ3JvdW5kQ29sb3IpIGNvbnN0Cit2b2lkIFJlbmRl
ck1lbnVMaXN0OjpnZXRJdGVtQmFja2dyb3VuZENvbG9yKHVuc2lnbmVkIGxpc3RJbmRleCwgT3B0
aW9uYWxSR0JBJiBpdGVtQmFja2dyb3VuZENvbG9yLCBib29sJiBpdGVtSGFzQ3VzdG9tQmFja2dy
b3VuZENvbG9yKSBjb25zdAogewogICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0
SXRlbXMgPSBzZWxlY3RFbGVtZW50KCkubGlzdEl0ZW1zKCk7CiAgICAgaWYgKGxpc3RJbmRleCA+
PSBsaXN0SXRlbXMuc2l6ZSgpKSB7CkBAIC01MzgsNyArNTM4LDcgQEAgdm9pZCBSZW5kZXJNZW51
TGlzdDo6Z2V0SXRlbUJhY2tncm91bmRDb2xvcih1bnNpZ25lZCBsaXN0SW5kZXgsIENvbG9yJiBp
dGVtQmFja2cKICAgICB9CiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBsaXN0SXRlbXNbbGlz
dEluZGV4XTsKIAotICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IGVsZW1lbnQtPmNvbXB1dGVk
U3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
KTsKKyAgICBPcHRpb25hbFJHQkEgYmFja2dyb3VuZENvbG9yID0gZWxlbWVudC0+Y29tcHV0ZWRT
dHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Ip
OwogICAgIGl0ZW1IYXNDdXN0b21CYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3IuaXNW
YWxpZCgpICYmIGJhY2tncm91bmRDb2xvci5hbHBoYSgpOwogICAgIC8vIElmIHRoZSBpdGVtIGhh
cyBhbiBvcGFxdWUgYmFja2dyb3VuZCBjb2xvciwgcmV0dXJuIHRoYXQuCiAgICAgaWYgKCFiYWNr
Z3JvdW5kQ29sb3IuaGFzQWxwaGEoKSkgewpAQCAtNTU0LDcgKzU1NCw3IEBAIHZvaWQgUmVuZGVy
TWVudUxpc3Q6OmdldEl0ZW1CYWNrZ3JvdW5kQ29sb3IodW5zaWduZWQgbGlzdEluZGV4LCBDb2xv
ciYgaXRlbUJhY2tnCiAgICAgfQogCiAgICAgLy8gSWYgdGhlIG1lbnUgYmFja2dyb3VuZCBpcyBu
b3Qgb3BhcXVlLCB0aGVuIGFkZCBhbiBvcGFxdWUgd2hpdGUgYmFja2dyb3VuZCBiZWhpbmQuCi0g
ICAgaXRlbUJhY2tncm91bmRDb2xvciA9IENvbG9yKENvbG9yOjp3aGl0ZSkuYmxlbmQoYmFja2dy
b3VuZENvbG9yKTsKKyAgICBpdGVtQmFja2dyb3VuZENvbG9yID0gT3B0aW9uYWxSR0JBKE9wdGlv
bmFsUkdCQTo6d2hpdGUpLmJsZW5kKGJhY2tncm91bmRDb2xvcik7CiB9CiAKIFBvcHVwTWVudVN0
eWxlIFJlbmRlck1lbnVMaXN0OjptZW51U3R5bGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWVudUxpc3QuaAppbmRleCA3MTNkYzJkNjkyMDE3MGU0ODM5NGUzMDk3N2M2
YjZiODEwOTM4NmIzLi42YzNkMjc1ZDZlMzc3ZjA2MjA0MDYyN2FjNjVlMmY3MWY5MWViODM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaApAQCAtMTI2LDcgKzEy
Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2Vs
aW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVyQmxvY2s6OmZpcnN0TGluZUJhc2Vs
aW5lKCk7IH0KICAgICB2aXJ0dWFsIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShM
aW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRl
ckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKGRpcmVjdGlvbik7IH0KIAotICAgIHZvaWQgZ2V0
SXRlbUJhY2tncm91bmRDb2xvcih1bnNpZ25lZCBsaXN0SW5kZXgsIENvbG9yJiwgYm9vbCYgaXRl
bUhhc0N1c3RvbUJhY2tncm91bmRDb2xvcikgY29uc3Q7CisgICAgdm9pZCBnZXRJdGVtQmFja2dy
b3VuZENvbG9yKHVuc2lnbmVkIGxpc3RJbmRleCwgT3B0aW9uYWxSR0JBJiwgYm9vbCYgaXRlbUhh
c0N1c3RvbUJhY2tncm91bmRDb2xvcikgY29uc3Q7CiAKICAgICB2b2lkIGNyZWF0ZUlubmVyQmxv
Y2soKTsKICAgICB2b2lkIGFkanVzdElubmVyU3R5bGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCmluZGV4IDk0Yzc2NzdkYzkxZGJl
YmEyZjRjZjgxODcyMTZkYWMxYTU0MGRhOWIuLjAxZjViMDk0YzU3M2UxZmI3YTM3NzliMGU5NzVl
MTk1Mzc3ZTQ0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
dWx0aUNvbHVtblNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uU2V0LmNwcApAQCAtNTc4LDcgKzU3OCw3IEBAIHZvaWQgUmVuZGVyTXVsdGlDb2x1
bW5TZXQ6OnBhaW50Q29sdW1uUnVsZXMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvCiAKICAgICBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBtdWx0
aUNvbHVtbkZsb3dUaHJlYWQoKTsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgYmxvY2tTdHlsZSA9
IHBhcmVudCgpLT5zdHlsZSgpOwotICAgIGNvbnN0IENvbG9yJiBydWxlQ29sb3IgPSBibG9ja1N0
eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbHVtblJ1bGVDb2xvcik7Cisg
ICAgY29uc3QgT3B0aW9uYWxSR0JBJiBydWxlQ29sb3IgPSBibG9ja1N0eWxlLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbHVtblJ1bGVDb2xvcik7CiAgICAgYm9vbCBydWxlVHJh
bnNwYXJlbnQgPSBibG9ja1N0eWxlLmNvbHVtblJ1bGVJc1RyYW5zcGFyZW50KCk7CiAgICAgRUJv
cmRlclN0eWxlIHJ1bGVTdHlsZSA9IGJsb2NrU3R5bGUuY29sdW1uUnVsZVN0eWxlKCk7CiAgICAg
TGF5b3V0VW5pdCBydWxlVGhpY2tuZXNzID0gYmxvY2tTdHlsZS5jb2x1bW5SdWxlV2lkdGgoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggZTAwODdlMzg1
NTQ0Zjg1ZDU3NDBlYzlhOWFlNWEzZWFmMWMzOWI3ZS4uN2I3MDY1NmNmYTJlZjg4YzY4MmEwYzNl
NzdiMTg0OGZhMzQ5ZmQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAKQEAgLTE3NTUsOSArMTc1NSw5IEBAIGludCBSZW5kZXJPYmplY3Q6OmlubmVyTGluZUhl
aWdodCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0eWxlKCkuY29tcHV0ZWRMaW5lSGVpZ2h0KCk7CiB9
CiAKLXN0YXRpYyBDb2xvciBkZWNvcmF0aW9uQ29sb3IoUmVuZGVyU3R5bGUqIHN0eWxlKQorc3Rh
dGljIE9wdGlvbmFsUkdCQSBkZWNvcmF0aW9uQ29sb3IoUmVuZGVyU3R5bGUqIHN0eWxlKQogewot
ICAgIENvbG9yIHJlc3VsdDsKKyAgICBPcHRpb25hbFJHQkEgcmVzdWx0OwogICAgIC8vIENoZWNr
IGZvciB0ZXh0IGRlY29yYXRpb24gY29sb3IgZmlyc3QuCiAgICAgcmVzdWx0ID0gc3R5bGUtPnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uQ29sb3Ip
OwogICAgIGlmIChyZXN1bHQuaXNWYWxpZCgpKQpAQCAtMTc3MywxMyArMTc3MywxMyBAQCBzdGF0
aWMgQ29sb3IgZGVjb3JhdGlvbkNvbG9yKFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi12b2lkIFJlbmRlck9iamVjdDo6Z2V0VGV4dERlY29yYXRpb25Db2xvcnNB
bmRTdHlsZXMoaW50IGRlY29yYXRpb25zLCBDb2xvciYgdW5kZXJsaW5lQ29sb3IsIENvbG9yJiBv
dmVybGluZUNvbG9yLCBDb2xvciYgbGluZXRocm91Z2hDb2xvciwKK3ZvaWQgUmVuZGVyT2JqZWN0
OjpnZXRUZXh0RGVjb3JhdGlvbkNvbG9yc0FuZFN0eWxlcyhpbnQgZGVjb3JhdGlvbnMsIE9wdGlv
bmFsUkdCQSYgdW5kZXJsaW5lQ29sb3IsIE9wdGlvbmFsUkdCQSYgb3ZlcmxpbmVDb2xvciwgT3B0
aW9uYWxSR0JBJiBsaW5ldGhyb3VnaENvbG9yLAogICAgIFRleHREZWNvcmF0aW9uU3R5bGUmIHVu
ZGVybGluZVN0eWxlLCBUZXh0RGVjb3JhdGlvblN0eWxlJiBvdmVybGluZVN0eWxlLCBUZXh0RGVj
b3JhdGlvblN0eWxlJiBsaW5ldGhyb3VnaFN0eWxlLCBib29sIGZpcnN0bGluZVN0eWxlKQogewog
ICAgIFJlbmRlck9iamVjdCogY3VycmVudCA9IHRoaXM7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxl
VG9Vc2UgPSBudWxscHRyOwogICAgIFRleHREZWNvcmF0aW9uIGN1cnJEZWNzID0gVGV4dERlY29y
YXRpb25Ob25lOwotICAgIENvbG9yIHJlc3VsdENvbG9yOworICAgIE9wdGlvbmFsUkdCQSByZXN1
bHRDb2xvcjsKICAgICBkbyB7CiAgICAgICAgIHN0eWxlVG9Vc2UgPSBmaXJzdGxpbmVTdHlsZSA/
ICZjdXJyZW50LT5maXJzdExpbmVTdHlsZSgpIDogJmN1cnJlbnQtPnN0eWxlKCk7CiAgICAgICAg
IGN1cnJEZWNzID0gc3R5bGVUb1VzZS0+dGV4dERlY29yYXRpb24oKTsKQEAgLTIxMzAsNyArMjEz
MCw3IEBAIFJlbmRlckZsb3dUaHJlYWQqIFJlbmRlck9iamVjdDo6bG9jYXRlRmxvd1RocmVhZENv
bnRhaW5pbmdCbG9jaygpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnRhaW5pbmdCbG9jayA/IGNvbnRh
aW5pbmdCbG9jay0+Zmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpIDogbnVsbHB0cjsKIH0KIAot
dm9pZCBSZW5kZXJPYmplY3Q6OmNhbGN1bGF0ZUJvcmRlclN0eWxlQ29sb3IoY29uc3QgRUJvcmRl
clN0eWxlJiBzdHlsZSwgY29uc3QgQm94U2lkZSYgc2lkZSwgQ29sb3ImIGNvbG9yKQordm9pZCBS
ZW5kZXJPYmplY3Q6OmNhbGN1bGF0ZUJvcmRlclN0eWxlQ29sb3IoY29uc3QgRUJvcmRlclN0eWxl
JiBzdHlsZSwgY29uc3QgQm94U2lkZSYgc2lkZSwgT3B0aW9uYWxSR0JBJiBjb2xvcikKIHsKICAg
ICBBU1NFUlQoc3R5bGUgPT0gSU5TRVQgfHwgc3R5bGUgPT0gT1VUU0VUKTsKICAgICAvLyBUaGlz
IHZhbHVlcyB3ZXJlIGRlcml2ZWQgZW1waXJpY2FsbHkuCkBAIC0yMTQyLDEwICsyMTQyLDEwIEBA
IHZvaWQgUmVuZGVyT2JqZWN0OjpjYWxjdWxhdGVCb3JkZXJTdHlsZUNvbG9yKGNvbnN0IEVCb3Jk
ZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEJvCiAKICAgICAvLyBIZXJlIHdlIHdpbGwgZGFya2VuIHRo
ZSBib3JkZXIgZGVjb3JhdGlvbiBjb2xvciB3aGVuIG5lZWRlZC4gVGhpcyB3aWxsIHlpZWxkIGEg
c2ltaWxhciBiZWhhdmlvciBhcyBpbiBGRi4KICAgICBpZiAob3BlcmF0aW9uID09IERhcmtlbikg
ewotICAgICAgICBpZiAoZGlmZmVyZW5jZVNxdWFyZWQoY29sb3IsIENvbG9yOjpibGFjaykgPiBk
aWZmZXJlbmNlU3F1YXJlZChiYXNlRGFya0NvbG9yLCBDb2xvcjo6YmxhY2spKQorICAgICAgICBp
ZiAoZGlmZmVyZW5jZVNxdWFyZWQoY29sb3IsIE9wdGlvbmFsUkdCQTo6YmxhY2spID4gZGlmZmVy
ZW5jZVNxdWFyZWQoYmFzZURhcmtDb2xvciwgT3B0aW9uYWxSR0JBOjpibGFjaykpCiAgICAgICAg
ICAgICBjb2xvciA9IGNvbG9yLmRhcmsoKTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoZGlm
ZmVyZW5jZVNxdWFyZWQoY29sb3IsIENvbG9yOjp3aGl0ZSkgPiBkaWZmZXJlbmNlU3F1YXJlZChi
YXNlTGlnaHRDb2xvciwgQ29sb3I6OndoaXRlKSkKKyAgICAgICAgaWYgKGRpZmZlcmVuY2VTcXVh
cmVkKGNvbG9yLCBPcHRpb25hbFJHQkE6OndoaXRlKSA+IGRpZmZlcmVuY2VTcXVhcmVkKGJhc2VM
aWdodENvbG9yLCBPcHRpb25hbFJHQkE6OndoaXRlKSkKICAgICAgICAgICAgIGNvbG9yID0gY29s
b3IubGlnaHQoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKaW5kZXggMWEzYWM5MTBhMzE3NjA5MmExN2NjYjI2OWUxODNhOTJmMWRlYzZjYy4uN2Y1NDNl
NWYzYjQ1ZjBiOGM4NDExMmQzMDBjOTMyMjViNGY4M2FiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaApAQCAtNzEzLDcgKzcxMyw3IEBAIHB1YmxpYzoKICAgICAKICAg
ICB2aXJ0dWFsIEN1cnNvckRpcmVjdGl2ZSBnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmLCBD
dXJzb3ImKSBjb25zdDsKIAotICAgIHZvaWQgZ2V0VGV4dERlY29yYXRpb25Db2xvcnNBbmRTdHls
ZXMoaW50IGRlY29yYXRpb25zLCBDb2xvciYgdW5kZXJsaW5lQ29sb3IsIENvbG9yJiBvdmVybGlu
ZUNvbG9yLCBDb2xvciYgbGluZXRocm91Z2hDb2xvciwKKyAgICB2b2lkIGdldFRleHREZWNvcmF0
aW9uQ29sb3JzQW5kU3R5bGVzKGludCBkZWNvcmF0aW9ucywgT3B0aW9uYWxSR0JBJiB1bmRlcmxp
bmVDb2xvciwgT3B0aW9uYWxSR0JBJiBvdmVybGluZUNvbG9yLCBPcHRpb25hbFJHQkEmIGxpbmV0
aHJvdWdoQ29sb3IsCiAgICAgICAgIFRleHREZWNvcmF0aW9uU3R5bGUmIHVuZGVybGluZVN0eWxl
LCBUZXh0RGVjb3JhdGlvblN0eWxlJiBvdmVybGluZVN0eWxlLCBUZXh0RGVjb3JhdGlvblN0eWxl
JiBsaW5ldGhyb3VnaFN0eWxlLCBib29sIGZpcnN0bGluZVN0eWxlID0gZmFsc2UpOwogCiAgICAg
Ly8gUmV0dXJuIHRoZSBSZW5kZXJMYXllck1vZGVsT2JqZWN0IGluIHRoZSBjb250YWluZXIgY2hh
aW4gd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIHBhaW50aW5nIHRoaXMgb2JqZWN0LCBvciBudWxs
cHRyCkBAIC04NzUsNyArODc1LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCBSZW5kZXJG
bG93VGhyZWFkKiBsb2NhdGVGbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCkgY29uc3Q7CiAgICAg
dm9pZCBpbnZhbGlkYXRlRmxvd1RocmVhZENvbnRhaW5pbmdCbG9ja0luY2x1ZGluZ0Rlc2NlbmRh
bnRzKFJlbmRlckZsb3dUaHJlYWQqID0gbnVsbHB0cik7Ci0gICAgc3RhdGljIHZvaWQgY2FsY3Vs
YXRlQm9yZGVyU3R5bGVDb2xvcihjb25zdCBFQm9yZGVyU3R5bGUmLCBjb25zdCBCb3hTaWRlJiwg
Q29sb3ImKTsKKyAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVCb3JkZXJTdHlsZUNvbG9yKGNvbnN0
IEVCb3JkZXJTdHlsZSYsIGNvbnN0IEJveFNpZGUmLCBPcHRpb25hbFJHQkEmKTsKIAogcHJpdmF0
ZToKICAgICB2b2lkIHJlbW92ZUZyb21SZW5kZXJGbG93VGhyZWFkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCmluZGV4IDQ2MmE4NDdhZGVjMjAwMzg0
MWRhOGRjM2ZiYTk3MTYzMDliNDM4MDQuLjZjZmI1NjcwNmRhYTgyYzk5ZDgzMGM0MTE4N2UxMGU0
OGIyZjgxMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIu
Y3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gUmVuZGVyU2Ny
b2xsYmFyOjpnZXRTY3JvbGxiYXJQc2V1ZG9TdHlsZShTY3JvbGxiYXJQYXJ0IHAKICAgICAvLyBU
aGlzIGlzIGJlY2F1c2UgV2ViS2l0IGFzc3VtZXMgc2Nyb2xsYmFyIHRvIGJlIGFsd2F5cyBwYWlu
dGVkIGFuZCBtaXNzaW5nIGJhY2tncm91bmQKICAgICAvLyBjYXVzZXMgdmlzdWFsIGFydGlmYWN0
IGxpa2Ugbm9uLXJlcGFpbnRlZCBkaXJ0eSByZWdpb24uCiAgICAgaWYgKHJlc3VsdCAmJiBtX293
bmluZ0ZyYW1lICYmIG1fb3duaW5nRnJhbWUtPnZpZXcoKSAmJiAhbV9vd25pbmdGcmFtZS0+dmll
dygpLT5pc1RyYW5zcGFyZW50KCkgJiYgIXJlc3VsdC0+aGFzQmFja2dyb3VuZCgpKQotICAgICAg
ICByZXN1bHQtPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6d2hpdGUpOworICAgICAgICByZXN1
bHQtPnNldEJhY2tncm91bmRDb2xvcihPcHRpb25hbFJHQkE6OndoaXRlKTsKIAogICAgIHJldHVy
biByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2Nyb2xsYmFyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhclRoZW1lLmNwcAppbmRleCAwOWQ5NjUyMThlODc1ZWQ2NzRhNGJjYTM3MmY4YjliNWVhMjgz
NzhhLi4zNDVhNDIzMDZlNTVjNjYwYTM5NjAzMWZjNmY2NzVkZGE5MDNkZTIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKQEAgLTEy
OCw3ICsxMjgsNyBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpkaWRQYWludFNjcm9sbGJh
cihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhcgogdm9pZCBSZW5kZXJTY3JvbGxi
YXJUaGVtZTo6cGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKICAgICAvLyBGSVhNRTogSW1w
bGVtZW50LgotICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0ZSwg
Q29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC0+ZmlsbFJlY3QoY29ybmVyUmVjdCwg
T3B0aW9uYWxSR0JBOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKIHZvaWQgUmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGUuaAppbmRleCA0OWEwZWI4Y2QxMjRmYzViNmRmNGY5MmE1MWJhYjQ2NDRkZjk4
MWMwLi5lMmM4MzUwZjExODYyYmM5Njc2ZmMwMTY0MGRiZjJhMWVhMjczYTU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaApAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGJvcmRlckVu
ZCgpIDogYm9yZGVyU3RhcnQoKTsKICAgICB9CiAKLSAgICBDb2xvciBiZ0NvbG9yKCkgY29uc3Qg
eyByZXR1cm4gc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kQ29sb3IpOyB9CisgICAgT3B0aW9uYWxSR0JBIGJnQ29sb3IoKSBjb25zdCB7IHJldHVybiBz
dHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7
IH0KIAogICAgIGludCBvdXRlckJvcmRlckJlZm9yZSgpIGNvbnN0OwogICAgIGludCBvdXRlckJv
cmRlckFmdGVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZUNlbGwuY3BwCmluZGV4IDA2YTM0NmY0OTNkMzAyZGI5NDUyOTc3YmFlNjkwZTA4ZjExMzkyZmMu
LmQ5M2EwNGY1YWNjOTcwZWFhZTI3NDdkODI2MjEyZjBlYTUyYzMxN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC01MTQsNyArNTE0LDcgQEAg
Ym9vbCBSZW5kZXJUYWJsZUNlbGw6Omhhc0VuZEJvcmRlckFkam9pbmluZ1RhYmxlKCkgY29uc3QK
IAogc3RhdGljIENvbGxhcHNlZEJvcmRlclZhbHVlIGVtcHR5Qm9yZGVyKCkKIHsKLSAgICByZXR1
cm4gQ29sbGFwc2VkQm9yZGVyVmFsdWUoQm9yZGVyVmFsdWUoKSwgQ29sb3IoKSwgQkNFTEwpOwor
ICAgIHJldHVybiBDb2xsYXBzZWRCb3JkZXJWYWx1ZShCb3JkZXJWYWx1ZSgpLCBPcHRpb25hbFJH
QkEoKSwgQkNFTEwpOwogfQogCiBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6
OmNvbGxhcHNlZFN0YXJ0Qm9yZGVyKEluY2x1ZGVCb3JkZXJDb2xvck9yTm90IGluY2x1ZGVDb2xv
cikgY29uc3QKQEAgLTU0MSw3ICs1NDEsNyBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJU
YWJsZUNlbGw6OmNvbXB1dGVDb2xsYXBzZWRTdGFydEJvcmRlcihJbmNsdWRlQm9yZGVyQwogICAg
IC8vICgxKSBPdXIgc3RhcnQgYm9yZGVyLgogICAgIGludCBzdGFydENvbG9yUHJvcGVydHkgPSBp
bmNsdWRlQ29sb3IgPyBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHko
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydENvbG9yLCBzdHlsZUZvckNlbGxGbG93KCkuZGly
ZWN0aW9uKCksIHN0eWxlRm9yQ2VsbEZsb3coKS53cml0aW5nTW9kZSgpKSA6IDA7CiAgICAgaW50
IGVuZENvbG9yUHJvcGVydHkgPSBpbmNsdWRlQ29sb3IgPyBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURp
cmVjdGlvbkF3YXJlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvciwgc3R5
bGVGb3JDZWxsRmxvdygpLmRpcmVjdGlvbigpLCBzdHlsZUZvckNlbGxGbG93KCkud3JpdGluZ01v
ZGUoKSkgOiAwOwotICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIHJlc3VsdChzdHlsZSgpLmJvcmRl
clN0YXJ0KCksIGluY2x1ZGVDb2xvciA/IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKHN0
YXJ0Q29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ0VMTCk7CisgICAgQ29sbGFwc2VkQm9yZGVy
VmFsdWUgcmVzdWx0KHN0eWxlKCkuYm9yZGVyU3RhcnQoKSwgaW5jbHVkZUNvbG9yID8gc3R5bGUo
KS52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3RhcnRDb2xvclByb3BlcnR5KSA6IE9wdGlvbmFsUkdC
QSgpLCBCQ0VMTCk7CiAKICAgICBSZW5kZXJUYWJsZSogdGFibGUgPSB0aGlzLT50YWJsZSgpOwog
ICAgIGlmICghdGFibGUpCkBAIC01NDksNyArNTQ5LDcgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUg
UmVuZGVyVGFibGVDZWxsOjpjb21wdXRlQ29sbGFwc2VkU3RhcnRCb3JkZXIoSW5jbHVkZUJvcmRl
ckMKICAgICAvLyAoMikgVGhlIGVuZCBib3JkZXIgb2YgdGhlIHByZWNlZGluZyBjZWxsLgogICAg
IFJlbmRlclRhYmxlQ2VsbCogY2VsbEJlZm9yZSA9IHRhYmxlLT5jZWxsQmVmb3JlKHRoaXMpOwog
ICAgIGlmIChjZWxsQmVmb3JlKSB7Ci0gICAgICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGNlbGxC
ZWZvcmVBZGpvaW5pbmdCb3JkZXIgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjZWxsQmVmb3JlLT5i
b3JkZXJBZGpvaW5pbmdDZWxsQWZ0ZXIodGhpcyksIGluY2x1ZGVDb2xvciA/IGNlbGxCZWZvcmUt
PnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKGVuZENvbG9yUHJvcGVydHkpIDogQ29sb3Io
KSwgQkNFTEwpOworICAgICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBjZWxsQmVmb3JlQWRqb2lu
aW5nQm9yZGVyID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoY2VsbEJlZm9yZS0+Ym9yZGVyQWRqb2lu
aW5nQ2VsbEFmdGVyKHRoaXMpLCBpbmNsdWRlQ29sb3IgPyBjZWxsQmVmb3JlLT5zdHlsZSgpLnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihlbmRDb2xvclByb3BlcnR5KSA6IE9wdGlvbmFsUkdCQSgpLCBC
Q0VMTCk7CiAgICAgICAgIC8vIHxyZXN1bHR8IHNob3VsZCBiZSB0aGUgMm5kIGFyZ3VtZW50IGFz
IHxjZWxsQmVmb3JlfCBzaG91bGQgd2luIGluIGNhc2Ugb2YgZXF1YWxpdHkgcGVyIENTUyAyLjEg
KEJvcmRlciBjb25mbGljdCByZXNvbHV0aW9uLCBwb2ludCA0KS4KICAgICAgICAgcmVzdWx0ID0g
Y2hvb3NlQm9yZGVyKGNlbGxCZWZvcmVBZGpvaW5pbmdCb3JkZXIsIHJlc3VsdCk7CiAgICAgICAg
IGlmICghcmVzdWx0LmV4aXN0cygpKQpAQCAtNTU5LDEyICs1NTksMTIgQEAgQ29sbGFwc2VkQm9y
ZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb21wdXRlQ29sbGFwc2VkU3RhcnRCb3JkZXIoSW5j
bHVkZUJvcmRlckMKICAgICBib29sIHN0YXJ0Qm9yZGVyQWRqb2luc1RhYmxlID0gaGFzU3RhcnRC
b3JkZXJBZGpvaW5pbmdUYWJsZSgpOwogICAgIGlmIChzdGFydEJvcmRlckFkam9pbnNUYWJsZSkg
ewogICAgICAgICAvLyAoMykgT3VyIHJvdydzIHN0YXJ0IGJvcmRlci4KLSAgICAgICAgcmVzdWx0
ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUocm93KCktPmJvcmRl
ckFkam9pbmluZ1N0YXJ0Q2VsbCh0aGlzKSwgaW5jbHVkZUNvbG9yID8gcGFyZW50KCktPnN0eWxl
KCkudmlzaXRlZERlcGVuZGVudENvbG9yKHN0YXJ0Q29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBC
Uk9XKSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJv
cmRlclZhbHVlKHJvdygpLT5ib3JkZXJBZGpvaW5pbmdTdGFydENlbGwodGhpcyksIGluY2x1ZGVD
b2xvciA/IHBhcmVudCgpLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdGFydENvbG9y
UHJvcGVydHkpIDogT3B0aW9uYWxSR0JBKCksIEJST1cpKTsKICAgICAgICAgaWYgKCFyZXN1bHQu
ZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgICAgIC8vICg0KSBP
dXIgcm93IGdyb3VwJ3Mgc3RhcnQgYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3Jk
ZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShzZWN0aW9uKCktPmJvcmRlckFkam9pbmlu
Z1N0YXJ0Q2VsbCh0aGlzKSwgaW5jbHVkZUNvbG9yID8gc2VjdGlvbigpLT5zdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihzdGFydENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQlJPV0dST1VQ
KSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRl
clZhbHVlKHNlY3Rpb24oKS0+Ym9yZGVyQWRqb2luaW5nU3RhcnRDZWxsKHRoaXMpLCBpbmNsdWRl
Q29sb3IgPyBzZWN0aW9uKCktPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKHN0YXJ0Q29s
b3JQcm9wZXJ0eSkgOiBPcHRpb25hbFJHQkEoKSwgQlJPV0dST1VQKSk7CiAgICAgICAgIGlmICgh
cmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC01
NzUsMTkgKzU3NSwxOSBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNv
bXB1dGVDb2xsYXBzZWRTdGFydEJvcmRlcihJbmNsdWRlQm9yZGVyQwogICAgIGlmIChSZW5kZXJU
YWJsZUNvbCogY29sRWx0ID0gdGFibGUtPmNvbEVsZW1lbnQoY29sKCksICZzdGFydENvbEVkZ2Us
ICZlbmRDb2xFZGdlKSkgewogICAgICAgICBpZiAoY29sRWx0LT5pc1RhYmxlQ29sdW1uR3JvdXAo
KSAmJiBzdGFydENvbEVkZ2UpIHsKICAgICAgICAgICAgIC8vIFRoZSB8Y29sRWx0fCBpcyBhIGNv
bHVtbiBncm91cCBhbmQgaXMgYWxzbyB0aGUgZmlyc3QgY29sZ3JvdXAgKGluIGNhc2Ugb2Ygc3Bh
bm5lZCBjb2xncm91cHMpLgotICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3Vs
dCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0LT5ib3JkZXJBZGpvaW5pbmdDZWxsU3RhcnRC
b3JkZXIodGhpcyksIGluY2x1ZGVDb2xvciA/IGNvbEVsdC0+c3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3Ioc3RhcnRDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJDT0xHUk9VUCkpOworICAg
ICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFs
dWUoY29sRWx0LT5ib3JkZXJBZGpvaW5pbmdDZWxsU3RhcnRCb3JkZXIodGhpcyksIGluY2x1ZGVD
b2xvciA/IGNvbEVsdC0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3RhcnRDb2xvclBy
b3BlcnR5KSA6IE9wdGlvbmFsUkdCQSgpLCBCQ09MR1JPVVApKTsKICAgICAgICAgICAgIGlmICgh
cmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
IH0gZWxzZSBpZiAoIWNvbEVsdC0+aXNUYWJsZUNvbHVtbkdyb3VwKCkpIHsKICAgICAgICAgICAg
IC8vIFdlIGZpcnN0IGNvbnNpZGVyIHRoZSB8Y29sRWx0fCBhbmQgaXJyZXNwZWN0aXZlIG9mIHdo
ZXRoZXIgaXQgaXMgYSBzcGFubmVkIGNvbCBvciBub3QsIHdlIGFwcGx5CiAgICAgICAgICAgICAv
LyBpdHMgc3RhcnQgYm9yZGVyLiBUaGlzIGlzIGFzIHBlciBIVE1MNSB3aGljaCBzdGF0ZXMgdGhh
dDogIkZvciB0aGUgcHVycG9zZXMgb2YgdGhlIENTUyB0YWJsZSBtb2RlbCwKICAgICAgICAgICAg
IC8vIHRoZSBjb2wgZWxlbWVudCBpcyBleHBlY3RlZCB0byBiZSB0cmVhdGVkIGFzIGlmIGl0IHdh
cyBwcmVzZW50IGFzIG1hbnkgdGltZXMgYXMgaXRzIHNwYW4gYXR0cmlidXRlIHNwZWNpZmllcyIu
Ci0gICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZShjb2xFbHQtPmJvcmRlckFkam9pbmluZ0NlbGxTdGFydEJvcmRlcih0aGlzKSwgaW5j
bHVkZUNvbG9yID8gY29sRWx0LT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdGFydENv
bG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQkNPTCkpOworICAgICAgICAgICAgcmVzdWx0ID0gY2hv
b3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0LT5ib3JkZXJBZGpv
aW5pbmdDZWxsU3RhcnRCb3JkZXIodGhpcyksIGluY2x1ZGVDb2xvciA/IGNvbEVsdC0+c3R5bGUo
KS52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3RhcnRDb2xvclByb3BlcnR5KSA6IE9wdGlvbmFsUkdC
QSgpLCBCQ09MKSk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgLy8gTmV4dCwgYXBwbHkgdGhlIHN0
YXJ0IGJvcmRlciBvZiB0aGUgZW5jbG9zaW5nIGNvbGdyb3VwIGJ1dCBvbmx5IGlmIGl0IGlzIGFk
amFjZW50IHRvIHRoZSBjZWxsJ3MgZWRnZS4KICAgICAgICAgICAgIGlmIChSZW5kZXJUYWJsZUNv
bCogZW5jbG9zaW5nQ29sdW1uR3JvdXAgPSBjb2xFbHQtPmVuY2xvc2luZ0NvbHVtbkdyb3VwSWZB
ZGphY2VudEJlZm9yZSgpKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVy
KHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoZW5jbG9zaW5nQ29sdW1uR3JvdXAtPmJvcmRl
ckFkam9pbmluZ0NlbGxTdGFydEJvcmRlcih0aGlzKSwgaW5jbHVkZUNvbG9yID8gZW5jbG9zaW5n
Q29sdW1uR3JvdXAtPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKHN0YXJ0Q29sb3JQcm9w
ZXJ0eSkgOiBDb2xvcigpLCBCQ09MR1JPVVApKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBj
aG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShlbmNsb3NpbmdDb2x1bW5H
cm91cC0+Ym9yZGVyQWRqb2luaW5nQ2VsbFN0YXJ0Qm9yZGVyKHRoaXMpLCBpbmNsdWRlQ29sb3Ig
PyBlbmNsb3NpbmdDb2x1bW5Hcm91cC0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3Rh
cnRDb2xvclByb3BlcnR5KSA6IE9wdGlvbmFsUkdCQSgpLCBCQ09MR1JPVVApKTsKICAgICAgICAg
ICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgICAgIH0KQEAgLTU5OSwxOCArNTk5LDE4IEBAIENvbGxhcHNlZEJv
cmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZFN0YXJ0Qm9yZGVyKElu
Y2x1ZGVCb3JkZXJDCiAgICAgICAgIGlmIChSZW5kZXJUYWJsZUNvbCogY29sRWx0ID0gdGFibGUt
PmNvbEVsZW1lbnQoY29sKCkgLSAxLCAmc3RhcnRDb2xFZGdlLCAmZW5kQ29sRWRnZSkpIHsKICAg
ICAgICAgICAgIGlmIChjb2xFbHQtPmlzVGFibGVDb2x1bW5Hcm91cCgpICYmIGVuZENvbEVkZ2Up
IHsKICAgICAgICAgICAgICAgICAvLyBUaGUgZWxlbWVudCBpcyBhIGNvbGdyb3VwIGFuZCBpcyBh
bHNvIHRoZSBsYXN0IGNvbGdyb3VwIChpbiBjYXNlIG9mIHNwYW5uZWQgY29sZ3JvdXBzKS4KLSAg
ICAgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIoQ29sbGFwc2VkQm9yZGVyVmFsdWUo
Y29sRWx0LT5ib3JkZXJBZGpvaW5pbmdDZWxsQWZ0ZXIodGhpcyksIGluY2x1ZGVDb2xvciA/IGNv
bEVsdC0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkgOiBD
b2xvcigpLCBCQ09MR1JPVVApLCByZXN1bHQpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNo
b29zZUJvcmRlcihDb2xsYXBzZWRCb3JkZXJWYWx1ZShjb2xFbHQtPmJvcmRlckFkam9pbmluZ0Nl
bGxBZnRlcih0aGlzKSwgaW5jbHVkZUNvbG9yID8gY29sRWx0LT5zdHlsZSgpLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihlbmRDb2xvclByb3BlcnR5KSA6IE9wdGlvbmFsUkdCQSgpLCBCQ09MR1JPVVAp
LCByZXN1bHQpOwogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfSBlbHNlIGlmIChjb2xF
bHQtPmlzVGFibGVDb2x1bW4oKSkgewogICAgICAgICAgICAgICAgIC8vIFJlc29sdmUgdGhlIGNv
bGxhcHNpbmcgYm9yZGVyIGFnYWluc3QgdGhlIGNvbCdzIGJvcmRlciBpZ25vcmluZyBhbnkgJ3Nw
YW4nIGFzIHBlciBIVE1MNS4KLSAgICAgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIo
Q29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0LT5ib3JkZXJBZGpvaW5pbmdDZWxsQWZ0ZXIodGhp
cyksIGluY2x1ZGVDb2xvciA/IGNvbEVsdC0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3Io
ZW5kQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ09MKSwgcmVzdWx0KTsKKyAgICAgICAgICAg
ICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIoQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0LT5i
b3JkZXJBZGpvaW5pbmdDZWxsQWZ0ZXIodGhpcyksIGluY2x1ZGVDb2xvciA/IGNvbEVsdC0+c3R5
bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkgOiBPcHRpb25hbFJH
QkEoKSwgQkNPTCksIHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3Rz
KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAg
Ly8gTmV4dCwgaWYgdGhlIHByZXZpb3VzIGNvbCBoYXMgYSBwYXJlbnQgY29sZ3JvdXAgdGhlbiBp
dHMgZW5kIGJvcmRlciBzaG91bGQgYmUgYXBwbGllZAogICAgICAgICAgICAgICAgIC8vIGJ1dCBv
bmx5IGlmIGl0IGlzIGFkamFjZW50IHRvIHRoZSBjZWxsJ3MgZWRnZS4KICAgICAgICAgICAgICAg
ICBpZiAoUmVuZGVyVGFibGVDb2wqIGVuY2xvc2luZ0NvbHVtbkdyb3VwID0gY29sRWx0LT5lbmNs
b3NpbmdDb2x1bW5Hcm91cElmQWRqYWNlbnRBZnRlcigpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHJlc3VsdCA9IGNob29zZUJvcmRlcihDb2xsYXBzZWRCb3JkZXJWYWx1ZShlbmNsb3NpbmdDb2x1
bW5Hcm91cC0+Ym9yZGVyQWRqb2luaW5nQ2VsbEVuZEJvcmRlcih0aGlzKSwgaW5jbHVkZUNvbG9y
ID8gZW5jbG9zaW5nQ29sdW1uR3JvdXAtPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKGVu
ZENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQkNPTEdST1VQKSwgcmVzdWx0KTsKKyAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKENvbGxhcHNlZEJvcmRlclZhbHVlKGVu
Y2xvc2luZ0NvbHVtbkdyb3VwLT5ib3JkZXJBZGpvaW5pbmdDZWxsRW5kQm9yZGVyKHRoaXMpLCBp
bmNsdWRlQ29sb3IgPyBlbmNsb3NpbmdDb2x1bW5Hcm91cC0+c3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkgOiBPcHRpb25hbFJHQkEoKSwgQkNPTEdST1VQKSwg
cmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgIH0KQEAg
LTYyMCw3ICs2MjAsNyBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNv
bXB1dGVDb2xsYXBzZWRTdGFydEJvcmRlcihJbmNsdWRlQm9yZGVyQwogCiAgICAgaWYgKHN0YXJ0
Qm9yZGVyQWRqb2luc1RhYmxlKSB7CiAgICAgICAgIC8vICg3KSBUaGUgdGFibGUncyBzdGFydCBi
b3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJv
cmRlclZhbHVlKHRhYmxlLT50YWJsZVN0YXJ0Qm9yZGVyQWRqb2luaW5nQ2VsbCh0aGlzKSwgaW5j
bHVkZUNvbG9yID8gdGFibGUtPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKHN0YXJ0Q29s
b3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCVEFCTEUpKTsKKyAgICAgICAgcmVzdWx0ID0gY2hvb3Nl
Qm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUodGFibGUtPnRhYmxlU3RhcnRCb3Jk
ZXJBZGpvaW5pbmdDZWxsKHRoaXMpLCBpbmNsdWRlQ29sb3IgPyB0YWJsZS0+c3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3Ioc3RhcnRDb2xvclByb3BlcnR5KSA6IE9wdGlvbmFsUkdCQSgpLCBC
VEFCTEUpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KQEAgLTY1Miw3ICs2NTIsNyBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVDb2xsYXBzZWRFbmRCb3JkZXIoSW5jbHVkZUJvcmRl
ckNvbAogICAgIC8vICgxKSBPdXIgZW5kIGJvcmRlci4KICAgICBpbnQgc3RhcnRDb2xvclByb3Bl
cnR5ID0gaW5jbHVkZUNvbG9yID8gQ1NTUHJvcGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVBy
b3BlcnR5KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvciwgc3R5bGVGb3JDZWxsRmxv
dygpLmRpcmVjdGlvbigpLCBzdHlsZUZvckNlbGxGbG93KCkud3JpdGluZ01vZGUoKSkgOiAwOwog
ICAgIGludCBlbmRDb2xvclByb3BlcnR5ID0gaW5jbHVkZUNvbG9yID8gQ1NTUHJvcGVydHk6OnJl
c29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29s
b3IsIHN0eWxlRm9yQ2VsbEZsb3coKS5kaXJlY3Rpb24oKSwgc3R5bGVGb3JDZWxsRmxvdygpLndy
aXRpbmdNb2RlKCkpIDogMDsKLSAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSByZXN1bHQgPSBDb2xs
YXBzZWRCb3JkZXJWYWx1ZShzdHlsZSgpLmJvcmRlckVuZCgpLCBpbmNsdWRlQ29sb3IgPyBzdHls
ZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihlbmRDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJD
RUxMKTsKKyAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSByZXN1bHQgPSBDb2xsYXBzZWRCb3JkZXJW
YWx1ZShzdHlsZSgpLmJvcmRlckVuZCgpLCBpbmNsdWRlQ29sb3IgPyBzdHlsZSgpLnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihlbmRDb2xvclByb3BlcnR5KSA6IE9wdGlvbmFsUkdCQSgpLCBCQ0VMTCk7
CiAKICAgICBSZW5kZXJUYWJsZSogdGFibGUgPSB0aGlzLT50YWJsZSgpOwogICAgIGlmICghdGFi
bGUpCkBAIC02NjMsNyArNjYzLDcgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVD
ZWxsOjpjb21wdXRlQ29sbGFwc2VkRW5kQm9yZGVyKEluY2x1ZGVCb3JkZXJDb2wKICAgICAvLyAo
MikgVGhlIHN0YXJ0IGJvcmRlciBvZiB0aGUgZm9sbG93aW5nIGNlbGwuCiAgICAgaWYgKCFpc0Vu
ZENvbHVtbikgewogICAgICAgICBpZiAoUmVuZGVyVGFibGVDZWxsKiBjZWxsQWZ0ZXIgPSB0YWJs
ZS0+Y2VsbEFmdGVyKHRoaXMpKSB7Ci0gICAgICAgICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBj
ZWxsQWZ0ZXJBZGpvaW5pbmdCb3JkZXIgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjZWxsQWZ0ZXIt
PmJvcmRlckFkam9pbmluZ0NlbGxCZWZvcmUodGhpcyksIGluY2x1ZGVDb2xvciA/IGNlbGxBZnRl
ci0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3RhcnRDb2xvclByb3BlcnR5KSA6IENv
bG9yKCksIEJDRUxMKTsKKyAgICAgICAgICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGNlbGxBZnRl
ckFkam9pbmluZ0JvcmRlciA9IENvbGxhcHNlZEJvcmRlclZhbHVlKGNlbGxBZnRlci0+Ym9yZGVy
QWRqb2luaW5nQ2VsbEJlZm9yZSh0aGlzKSwgaW5jbHVkZUNvbG9yID8gY2VsbEFmdGVyLT5zdHls
ZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdGFydENvbG9yUHJvcGVydHkpIDogT3B0aW9uYWxS
R0JBKCksIEJDRUxMKTsKICAgICAgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQs
IGNlbGxBZnRlckFkam9pbmluZ0JvcmRlcik7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlz
dHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjczLDEyICs2NzMsMTIg
QEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb21wdXRlQ29sbGFwc2Vk
RW5kQm9yZGVyKEluY2x1ZGVCb3JkZXJDb2wKICAgICBib29sIGVuZEJvcmRlckFkam9pbnNUYWJs
ZSA9IGhhc0VuZEJvcmRlckFkam9pbmluZ1RhYmxlKCk7CiAgICAgaWYgKGVuZEJvcmRlckFkam9p
bnNUYWJsZSkgewogICAgICAgICAvLyAoMykgT3VyIHJvdydzIGVuZCBib3JkZXIuCi0gICAgICAg
IHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHJvdygp
LT5ib3JkZXJBZGpvaW5pbmdFbmRDZWxsKHRoaXMpLCBpbmNsdWRlQ29sb3IgPyBwYXJlbnQoKS0+
c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigp
LCBCUk9XKSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNl
ZEJvcmRlclZhbHVlKHJvdygpLT5ib3JkZXJBZGpvaW5pbmdFbmRDZWxsKHRoaXMpLCBpbmNsdWRl
Q29sb3IgPyBwYXJlbnQoKS0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQ
cm9wZXJ0eSkgOiBPcHRpb25hbFJHQkEoKSwgQlJPVykpOwogICAgICAgICBpZiAoIXJlc3VsdC5l
eGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIAogICAgICAgICAv
LyAoNCkgT3VyIHJvdyBncm91cCdzIGVuZCBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNob29z
ZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHNlY3Rpb24oKS0+Ym9yZGVyQWRq
b2luaW5nRW5kQ2VsbCh0aGlzKSwgaW5jbHVkZUNvbG9yID8gc2VjdGlvbigpLT5zdHlsZSgpLnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihlbmRDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJST1dHUk9V
UCkpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZShzZWN0aW9uKCktPmJvcmRlckFkam9pbmluZ0VuZENlbGwodGhpcyksIGluY2x1ZGVD
b2xvciA/IHNlY3Rpb24oKS0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQ
cm9wZXJ0eSkgOiBPcHRpb25hbFJHQkEoKSwgQlJPV0dST1VQKSk7CiAgICAgICAgIGlmICghcmVz
dWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC02ODks
MTkgKzY4OSwxOSBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbXB1
dGVDb2xsYXBzZWRFbmRCb3JkZXIoSW5jbHVkZUJvcmRlckNvbAogICAgIGlmIChSZW5kZXJUYWJs
ZUNvbCogY29sRWx0ID0gdGFibGUtPmNvbEVsZW1lbnQoY29sKCkgKyBjb2xTcGFuKCkgLSAxLCAm
c3RhcnRDb2xFZGdlLCAmZW5kQ29sRWRnZSkpIHsKICAgICAgICAgaWYgKGNvbEVsdC0+aXNUYWJs
ZUNvbHVtbkdyb3VwKCkgJiYgZW5kQ29sRWRnZSkgewogICAgICAgICAgICAgLy8gVGhlIGVsZW1l
bnQgaXMgYSBjb2xncm91cCBhbmQgaXMgYWxzbyB0aGUgbGFzdCBjb2xncm91cCAoaW4gY2FzZSBv
ZiBzcGFubmVkIGNvbGdyb3VwcykuCi0gICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIo
cmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjb2xFbHQtPmJvcmRlckFkam9pbmluZ0NlbGxF
bmRCb3JkZXIodGhpcyksIGluY2x1ZGVDb2xvciA/IGNvbEVsdC0+c3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ09MR1JPVVApKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZh
bHVlKGNvbEVsdC0+Ym9yZGVyQWRqb2luaW5nQ2VsbEVuZEJvcmRlcih0aGlzKSwgaW5jbHVkZUNv
bG9yID8gY29sRWx0LT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihlbmRDb2xvclByb3Bl
cnR5KSA6IE9wdGlvbmFsUkdCQSgpLCBCQ09MR1JPVVApKTsKICAgICAgICAgICAgIGlmICghcmVz
dWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0g
ZWxzZSBpZiAoIWNvbEVsdC0+aXNUYWJsZUNvbHVtbkdyb3VwKCkpIHsKICAgICAgICAgICAgIC8v
IEZpcnN0IGFwcGx5IHRoZSBlbmQgYm9yZGVyIG9mIHRoZSBjb2x1bW4gaXJyZXNwZWN0aXZlIG9m
IHdoZXRoZXIgaXQgaXMgc3Bhbm5lZCBvciBub3QuIFRoaXMgaXMgYXMgcGVyCiAgICAgICAgICAg
ICAvLyBIVE1MNSB3aGljaCBzdGF0ZXMgdGhhdDogIkZvciB0aGUgcHVycG9zZXMgb2YgdGhlIENT
UyB0YWJsZSBtb2RlbCwgdGhlIGNvbCBlbGVtZW50IGlzIGV4cGVjdGVkIHRvIGJlCiAgICAgICAg
ICAgICAvLyB0cmVhdGVkIGFzIGlmIGl0IHdhcyBwcmVzZW50IGFzIG1hbnkgdGltZXMgYXMgaXRz
IHNwYW4gYXR0cmlidXRlIHNwZWNpZmllcyIuCi0gICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VC
b3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjb2xFbHQtPmJvcmRlckFkam9pbmlu
Z0NlbGxFbmRCb3JkZXIodGhpcyksIGluY2x1ZGVDb2xvciA/IGNvbEVsdC0+c3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ09MKSk7Cisg
ICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJW
YWx1ZShjb2xFbHQtPmJvcmRlckFkam9pbmluZ0NlbGxFbmRCb3JkZXIodGhpcyksIGluY2x1ZGVD
b2xvciA/IGNvbEVsdC0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9w
ZXJ0eSkgOiBPcHRpb25hbFJHQkEoKSwgQkNPTCkpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQu
ZXhpc3RzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIC8v
IE5leHQsIGlmIGl0IGhhcyBhIHBhcmVudCBjb2xncm91cCB0aGVuIHdlIGFwcGx5IGl0cyBlbmQg
Ym9yZGVyIGJ1dCBvbmx5IGlmIGl0IGlzIGFkamFjZW50IHRvIHRoZSBjZWxsLgogICAgICAgICAg
ICAgaWYgKFJlbmRlclRhYmxlQ29sKiBlbmNsb3NpbmdDb2x1bW5Hcm91cCA9IGNvbEVsdC0+ZW5j
bG9zaW5nQ29sdW1uR3JvdXBJZkFkamFjZW50QWZ0ZXIoKSkgewotICAgICAgICAgICAgICAgIHJl
c3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGVuY2xvc2lu
Z0NvbHVtbkdyb3VwLT5ib3JkZXJBZGpvaW5pbmdDZWxsRW5kQm9yZGVyKHRoaXMpLCBpbmNsdWRl
Q29sb3IgPyBlbmNsb3NpbmdDb2x1bW5Hcm91cC0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29s
b3IoZW5kQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ09MR1JPVVApKTsKKyAgICAgICAgICAg
ICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShl
bmNsb3NpbmdDb2x1bW5Hcm91cC0+Ym9yZGVyQWRqb2luaW5nQ2VsbEVuZEJvcmRlcih0aGlzKSwg
aW5jbHVkZUNvbG9yID8gZW5jbG9zaW5nQ29sdW1uR3JvdXAtPnN0eWxlKCkudmlzaXRlZERlcGVu
ZGVudENvbG9yKGVuZENvbG9yUHJvcGVydHkpIDogT3B0aW9uYWxSR0JBKCksIEJDT0xHUk9VUCkp
OwogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQpAQCAtNzEzLDE3ICs3MTMsMTcgQEAg
Q29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb21wdXRlQ29sbGFwc2VkRW5k
Qm9yZGVyKEluY2x1ZGVCb3JkZXJDb2wKICAgICAgICAgaWYgKFJlbmRlclRhYmxlQ29sKiBjb2xF
bHQgPSB0YWJsZS0+Y29sRWxlbWVudChjb2woKSArIGNvbFNwYW4oKSwgJnN0YXJ0Q29sRWRnZSwg
JmVuZENvbEVkZ2UpKSB7CiAgICAgICAgICAgICBpZiAoY29sRWx0LT5pc1RhYmxlQ29sdW1uR3Jv
dXAoKSAmJiBzdGFydENvbEVkZ2UpIHsKICAgICAgICAgICAgICAgICAvLyBUaGlzIGNhc2UgaXMg
YSBjb2xncm91cCB3aXRob3V0IGFueSBjb2wsIHdlIG9ubHkgY29tcHV0ZSBpdCBpZiBpdCBpcyBh
ZGphY2VudCB0byB0aGUgY2VsbCdzIGVkZ2UuCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gY2hv
b3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0LT5ib3JkZXJBZGpv
aW5pbmdDZWxsQmVmb3JlKHRoaXMpLCBpbmNsdWRlQ29sb3IgPyBjb2xFbHQtPnN0eWxlKCkudmlz
aXRlZERlcGVuZGVudENvbG9yKHN0YXJ0Q29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ09MR1JP
VVApKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xs
YXBzZWRCb3JkZXJWYWx1ZShjb2xFbHQtPmJvcmRlckFkam9pbmluZ0NlbGxCZWZvcmUodGhpcyks
IGluY2x1ZGVDb2xvciA/IGNvbEVsdC0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3Rh
cnRDb2xvclByb3BlcnR5KSA6IE9wdGlvbmFsUkdCQSgpLCBCQ09MR1JPVVApKTsKICAgICAgICAg
ICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sRWx0LT5pc1RhYmxlQ29sdW1uKCkp
IHsKICAgICAgICAgICAgICAgICAvLyBSZXNvbHZlIHRoZSBjb2xsYXBzaW5nIGJvcmRlciBhZ2Fp
bnN0IHRoZSBjb2wncyBib3JkZXIgaWdub3JpbmcgYW55ICdzcGFuJyBhcyBwZXIgSFRNTDUuCi0g
ICAgICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9y
ZGVyVmFsdWUoY29sRWx0LT5ib3JkZXJBZGpvaW5pbmdDZWxsQmVmb3JlKHRoaXMpLCBpbmNsdWRl
Q29sb3IgPyBjb2xFbHQtPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKHN0YXJ0Q29sb3JQ
cm9wZXJ0eSkgOiBDb2xvcigpLCBCQ09MKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY2hv
b3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0LT5ib3JkZXJBZGpv
aW5pbmdDZWxsQmVmb3JlKHRoaXMpLCBpbmNsdWRlQ29sb3IgPyBjb2xFbHQtPnN0eWxlKCkudmlz
aXRlZERlcGVuZGVudENvbG9yKHN0YXJ0Q29sb3JQcm9wZXJ0eSkgOiBPcHRpb25hbFJHQkEoKSwg
QkNPTCkpOwogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUg
YSBwYXJlbnQgY29sZ3JvdXAsIHJlc29sdmUgdGhlIGJvcmRlciBvbmx5IGlmIGl0IGlzIGFkamFj
ZW50IHRvIHRoZSBjZWxsLgogICAgICAgICAgICAgICAgIGlmIChSZW5kZXJUYWJsZUNvbCogZW5j
bG9zaW5nQ29sdW1uR3JvdXAgPSBjb2xFbHQtPmVuY2xvc2luZ0NvbHVtbkdyb3VwSWZBZGphY2Vu
dEJlZm9yZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihy
ZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGVuY2xvc2luZ0NvbHVtbkdyb3VwLT5ib3JkZXJB
ZGpvaW5pbmdDZWxsU3RhcnRCb3JkZXIodGhpcyksIGluY2x1ZGVDb2xvciA/IGVuY2xvc2luZ0Nv
bHVtbkdyb3VwLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdGFydENvbG9yUHJvcGVy
dHkpIDogQ29sb3IoKSwgQkNPTEdST1VQKSk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9
IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGVuY2xvc2luZ0NvbHVt
bkdyb3VwLT5ib3JkZXJBZGpvaW5pbmdDZWxsU3RhcnRCb3JkZXIodGhpcyksIGluY2x1ZGVDb2xv
ciA/IGVuY2xvc2luZ0NvbHVtbkdyb3VwLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihz
dGFydENvbG9yUHJvcGVydHkpIDogT3B0aW9uYWxSR0JBKCksIEJDT0xHUk9VUCkpOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgfQpAQCAtNzMzLDcgKzczMyw3IEBA
IENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZEVu
ZEJvcmRlcihJbmNsdWRlQm9yZGVyQ29sCiAKICAgICBpZiAoZW5kQm9yZGVyQWRqb2luc1RhYmxl
KSB7CiAgICAgICAgIC8vICg3KSBUaGUgdGFibGUncyBlbmQgYm9yZGVyLgotICAgICAgICByZXN1
bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSh0YWJsZS0+dGFi
bGVFbmRCb3JkZXJBZGpvaW5pbmdDZWxsKHRoaXMpLCBpbmNsdWRlQ29sb3IgPyB0YWJsZS0+c3R5
bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBC
VEFCTEUpKTsKKyAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUodGFibGUtPnRhYmxlRW5kQm9yZGVyQWRqb2luaW5nQ2VsbCh0aGlzKSwgaW5j
bHVkZUNvbG9yID8gdGFibGUtPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKGVuZENvbG9y
UHJvcGVydHkpIDogT3B0aW9uYWxSR0JBKCksIEJUQUJMRSkpOwogICAgICAgICBpZiAoIXJlc3Vs
dC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtNzY1LDcg
Kzc2NSw3IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNv
bGxhcHNlZEJlZm9yZUJvcmRlcihJbmNsdWRlQm9yZGVyCiAgICAgLy8gKDEpIE91ciBiZWZvcmUg
Ym9yZGVyLgogICAgIGludCBiZWZvcmVDb2xvclByb3BlcnR5ID0gaW5jbHVkZUNvbG9yID8gQ1NT
UHJvcGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyQmVmb3JlQ29sb3IsIHN0eWxlRm9yQ2VsbEZsb3coKS5kaXJlY3Rpb24oKSwgc3R5bGVG
b3JDZWxsRmxvdygpLndyaXRpbmdNb2RlKCkpIDogMDsKICAgICBpbnQgYWZ0ZXJDb2xvclByb3Bl
cnR5ID0gaW5jbHVkZUNvbG9yID8gQ1NTUHJvcGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVBy
b3BlcnR5KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvciwgc3R5bGVGb3JDZWxsRmxv
dygpLmRpcmVjdGlvbigpLCBzdHlsZUZvckNlbGxGbG93KCkud3JpdGluZ01vZGUoKSkgOiAwOwot
ICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIHJlc3VsdCA9IENvbGxhcHNlZEJvcmRlclZhbHVlKHN0
eWxlKCkuYm9yZGVyQmVmb3JlKCksIGluY2x1ZGVDb2xvciA/IHN0eWxlKCkudmlzaXRlZERlcGVu
ZGVudENvbG9yKGJlZm9yZUNvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQkNFTEwpOworICAgIENv
bGxhcHNlZEJvcmRlclZhbHVlIHJlc3VsdCA9IENvbGxhcHNlZEJvcmRlclZhbHVlKHN0eWxlKCku
Ym9yZGVyQmVmb3JlKCksIGluY2x1ZGVDb2xvciA/IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENv
bG9yKGJlZm9yZUNvbG9yUHJvcGVydHkpIDogT3B0aW9uYWxSR0JBKCksIEJDRUxMKTsKICAgICAK
ICAgICBSZW5kZXJUYWJsZSogdGFibGUgPSB0aGlzLT50YWJsZSgpOwogICAgIGlmICghdGFibGUp
CkBAIC03NzMsMTMgKzc3MywxMyBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNl
bGw6OmNvbXB1dGVDb2xsYXBzZWRCZWZvcmVCb3JkZXIoSW5jbHVkZUJvcmRlcgogICAgIFJlbmRl
clRhYmxlQ2VsbCogcHJldkNlbGwgPSB0YWJsZS0+Y2VsbEFib3ZlKHRoaXMpOwogICAgIGlmIChw
cmV2Q2VsbCkgewogICAgICAgICAvLyAoMikgQSBiZWZvcmUgY2VsbCdzIGFmdGVyIGJvcmRlci4K
LSAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKENvbGxhcHNlZEJvcmRlclZhbHVlKHByZXZD
ZWxsLT5zdHlsZSgpLmJvcmRlckFmdGVyKCksIGluY2x1ZGVDb2xvciA/IHByZXZDZWxsLT5zdHls
ZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihhZnRlckNvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwg
QkNFTEwpLCByZXN1bHQpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIoQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUocHJldkNlbGwtPnN0eWxlKCkuYm9yZGVyQWZ0ZXIoKSwgaW5jbHVkZUNvbG9y
ID8gcHJldkNlbGwtPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKGFmdGVyQ29sb3JQcm9w
ZXJ0eSkgOiBPcHRpb25hbFJHQkEoKSwgQkNFTEwpLCByZXN1bHQpOwogICAgICAgICBpZiAoIXJl
c3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAog
ICAgIC8vICgzKSBPdXIgcm93J3MgYmVmb3JlIGJvcmRlci4KLSAgICByZXN1bHQgPSBjaG9vc2VC
b3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShwYXJlbnQoKS0+c3R5bGUoKS5ib3Jk
ZXJCZWZvcmUoKSwgaW5jbHVkZUNvbG9yID8gcGFyZW50KCktPnN0eWxlKCkudmlzaXRlZERlcGVu
ZGVudENvbG9yKGJlZm9yZUNvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQlJPVykpOworICAgIHJl
c3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHBhcmVudCgp
LT5zdHlsZSgpLmJvcmRlckJlZm9yZSgpLCBpbmNsdWRlQ29sb3IgPyBwYXJlbnQoKS0+c3R5bGUo
KS52aXNpdGVkRGVwZW5kZW50Q29sb3IoYmVmb3JlQ29sb3JQcm9wZXJ0eSkgOiBPcHRpb25hbFJH
QkEoKSwgQlJPVykpOwogICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIApAQCAtNzkyLDcgKzc5Miw3IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJl
bmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZEJlZm9yZUJvcmRlcihJbmNsdWRlQm9yZGVy
CiAgICAgICAgICAgICBwcmV2Um93ID0gcHJldkNlbGwtPnNlY3Rpb24oKS0+bGFzdFJvdygpOwog
ICAgIAogICAgICAgICBpZiAocHJldlJvdykgewotICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3Nl
Qm9yZGVyKENvbGxhcHNlZEJvcmRlclZhbHVlKHByZXZSb3ctPnN0eWxlKCkuYm9yZGVyQWZ0ZXIo
KSwgaW5jbHVkZUNvbG9yID8gcHJldlJvdy0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3Io
YWZ0ZXJDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJST1cpLCByZXN1bHQpOworICAgICAgICAg
ICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKENvbGxhcHNlZEJvcmRlclZhbHVlKHByZXZSb3ctPnN0
eWxlKCkuYm9yZGVyQWZ0ZXIoKSwgaW5jbHVkZUNvbG9yID8gcHJldlJvdy0+c3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoYWZ0ZXJDb2xvclByb3BlcnR5KSA6IE9wdGlvbmFsUkdCQSgpLCBC
Uk9XKSwgcmVzdWx0KTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTgwMiwxNCArODAyLDE0IEBA
IENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZEJl
Zm9yZUJvcmRlcihJbmNsdWRlQm9yZGVyCiAgICAgUmVuZGVyVGFibGVTZWN0aW9uKiBjdXJyU2Vj
dGlvbiA9IHNlY3Rpb24oKTsKICAgICBpZiAoIXJvd0luZGV4KCkpIHsKICAgICAgICAgLy8gKDUp
IE91ciByb3cgZ3JvdXAncyBiZWZvcmUgYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjaG9vc2VC
b3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjdXJyU2VjdGlvbi0+c3R5bGUoKS5i
b3JkZXJCZWZvcmUoKSwgaW5jbHVkZUNvbG9yID8gY3VyclNlY3Rpb24tPnN0eWxlKCkudmlzaXRl
ZERlcGVuZGVudENvbG9yKGJlZm9yZUNvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQlJPV0dST1VQ
KSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRl
clZhbHVlKGN1cnJTZWN0aW9uLT5zdHlsZSgpLmJvcmRlckJlZm9yZSgpLCBpbmNsdWRlQ29sb3Ig
PyBjdXJyU2VjdGlvbi0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoYmVmb3JlQ29sb3JQ
cm9wZXJ0eSkgOiBPcHRpb25hbFJHQkEoKSwgQlJPV0dST1VQKSk7CiAgICAgICAgIGlmICghcmVz
dWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgCiAgICAg
ICAgIC8vICg2KSBQcmV2aW91cyByb3cgZ3JvdXAncyBhZnRlciBib3JkZXIuCiAgICAgICAgIGN1
cnJTZWN0aW9uID0gdGFibGUtPnNlY3Rpb25BYm92ZShjdXJyU2VjdGlvbiwgU2tpcEVtcHR5U2Vj
dGlvbnMpOwogICAgICAgICBpZiAoY3VyclNlY3Rpb24pIHsKLSAgICAgICAgICAgIHJlc3VsdCA9
IGNob29zZUJvcmRlcihDb2xsYXBzZWRCb3JkZXJWYWx1ZShjdXJyU2VjdGlvbi0+c3R5bGUoKS5i
b3JkZXJBZnRlcigpLCBpbmNsdWRlQ29sb3IgPyBjdXJyU2VjdGlvbi0+c3R5bGUoKS52aXNpdGVk
RGVwZW5kZW50Q29sb3IoYWZ0ZXJDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJST1dHUk9VUCks
IHJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIoQ29sbGFwc2VkQm9y
ZGVyVmFsdWUoY3VyclNlY3Rpb24tPnN0eWxlKCkuYm9yZGVyQWZ0ZXIoKSwgaW5jbHVkZUNvbG9y
ID8gY3VyclNlY3Rpb24tPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKGFmdGVyQ29sb3JQ
cm9wZXJ0eSkgOiBPcHRpb25hbFJHQkEoKSwgQlJPV0dST1VQKSwgcmVzdWx0KTsKICAgICAgICAg
ICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgICAgIH0KQEAgLTgxOSwxOCArODE5LDE4IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJl
bmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZEJlZm9yZUJvcmRlcihJbmNsdWRlQm9yZGVy
CiAgICAgICAgIC8vICg4KSBPdXIgY29sdW1uIGFuZCBjb2x1bW4gZ3JvdXAncyBiZWZvcmUgYm9y
ZGVycy4KICAgICAgICAgUmVuZGVyVGFibGVDb2wqIGNvbEVsdCA9IHRhYmxlLT5jb2xFbGVtZW50
KGNvbCgpKTsKICAgICAgICAgaWYgKGNvbEVsdCkgewotICAgICAgICAgICAgcmVzdWx0ID0gY2hv
b3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0LT5zdHlsZSgpLmJv
cmRlckJlZm9yZSgpLCBpbmNsdWRlQ29sb3IgPyBjb2xFbHQtPnN0eWxlKCkudmlzaXRlZERlcGVu
ZGVudENvbG9yKGJlZm9yZUNvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQkNPTCkpOworICAgICAg
ICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUo
Y29sRWx0LT5zdHlsZSgpLmJvcmRlckJlZm9yZSgpLCBpbmNsdWRlQ29sb3IgPyBjb2xFbHQtPnN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKGJlZm9yZUNvbG9yUHJvcGVydHkpIDogT3B0aW9u
YWxSR0JBKCksIEJDT0wpKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICBpZiAoUmVuZGVyVGFibGVD
b2wqIGVuY2xvc2luZ0NvbHVtbkdyb3VwID0gY29sRWx0LT5lbmNsb3NpbmdDb2x1bW5Hcm91cCgp
KSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFw
c2VkQm9yZGVyVmFsdWUoZW5jbG9zaW5nQ29sdW1uR3JvdXAtPnN0eWxlKCkuYm9yZGVyQmVmb3Jl
KCksIGluY2x1ZGVDb2xvciA/IGVuY2xvc2luZ0NvbHVtbkdyb3VwLT5zdHlsZSgpLnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihiZWZvcmVDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJDT0xHUk9VUCkp
OworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNl
ZEJvcmRlclZhbHVlKGVuY2xvc2luZ0NvbHVtbkdyb3VwLT5zdHlsZSgpLmJvcmRlckJlZm9yZSgp
LCBpbmNsdWRlQ29sb3IgPyBlbmNsb3NpbmdDb2x1bW5Hcm91cC0+c3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoYmVmb3JlQ29sb3JQcm9wZXJ0eSkgOiBPcHRpb25hbFJHQkEoKSwgQkNPTEdS
T1VQKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIC8vICg5KSBUaGUgdGFibGUncyBiZWZvcmUgYm9yZGVyLgotICAgICAgICBy
ZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSh0YWJsZS0+
c3R5bGUoKS5ib3JkZXJCZWZvcmUoKSwgaW5jbHVkZUNvbG9yID8gdGFibGUtPnN0eWxlKCkudmlz
aXRlZERlcGVuZGVudENvbG9yKGJlZm9yZUNvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQlRBQkxF
KSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRl
clZhbHVlKHRhYmxlLT5zdHlsZSgpLmJvcmRlckJlZm9yZSgpLCBpbmNsdWRlQ29sb3IgPyB0YWJs
ZS0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoYmVmb3JlQ29sb3JQcm9wZXJ0eSkgOiBP
cHRpb25hbFJHQkEoKSwgQlRBQkxFKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC04NjIsNyArODYyLDcgQEAgQ29s
bGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb21wdXRlQ29sbGFwc2VkQWZ0ZXJC
b3JkZXIoSW5jbHVkZUJvcmRlckMKICAgICAvLyAoMSkgT3VyIGFmdGVyIGJvcmRlci4KICAgICBp
bnQgYmVmb3JlQ29sb3JQcm9wZXJ0eSA9IGluY2x1ZGVDb2xvciA/IENTU1Byb3BlcnR5OjpyZXNv
bHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNv
bG9yLCBzdHlsZUZvckNlbGxGbG93KCkuZGlyZWN0aW9uKCksIHN0eWxlRm9yQ2VsbEZsb3coKS53
cml0aW5nTW9kZSgpKSA6IDA7CiAgICAgaW50IGFmdGVyQ29sb3JQcm9wZXJ0eSA9IGluY2x1ZGVD
b2xvciA/IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3IsIHN0eWxlRm9yQ2VsbEZsb3coKS5kaXJlY3Rpb24o
KSwgc3R5bGVGb3JDZWxsRmxvdygpLndyaXRpbmdNb2RlKCkpIDogMDsKLSAgICBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSByZXN1bHQgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZShzdHlsZSgpLmJvcmRlckFm
dGVyKCksIGluY2x1ZGVDb2xvciA/IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKGFmdGVy
Q29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ0VMTCk7CisgICAgQ29sbGFwc2VkQm9yZGVyVmFs
dWUgcmVzdWx0ID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoc3R5bGUoKS5ib3JkZXJBZnRlcigpLCBp
bmNsdWRlQ29sb3IgPyBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihhZnRlckNvbG9yUHJv
cGVydHkpIDogT3B0aW9uYWxSR0JBKCksIEJDRUxMKTsKICAgICAKICAgICBSZW5kZXJUYWJsZSog
dGFibGUgPSB0aGlzLT50YWJsZSgpOwogICAgIGlmICghdGFibGUpCkBAIC04NzAsMTkgKzg3MCwx
OSBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVDb2xsYXBz
ZWRBZnRlckJvcmRlcihJbmNsdWRlQm9yZGVyQwogICAgIFJlbmRlclRhYmxlQ2VsbCogbmV4dENl
bGwgPSB0YWJsZS0+Y2VsbEJlbG93KHRoaXMpOwogICAgIGlmIChuZXh0Q2VsbCkgewogICAgICAg
ICAvLyAoMikgQW4gYWZ0ZXIgY2VsbCdzIGJlZm9yZSBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9
IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKG5leHRDZWxsLT5zdHls
ZSgpLmJvcmRlckJlZm9yZSgpLCBpbmNsdWRlQ29sb3IgPyBuZXh0Q2VsbC0+c3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoYmVmb3JlQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ0VMTCkp
OworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJW
YWx1ZShuZXh0Q2VsbC0+c3R5bGUoKS5ib3JkZXJCZWZvcmUoKSwgaW5jbHVkZUNvbG9yID8gbmV4
dENlbGwtPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKGJlZm9yZUNvbG9yUHJvcGVydHkp
IDogT3B0aW9uYWxSR0JBKCksIEJDRUxMKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygp
KQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgLy8gKDMpIE91
ciByb3cncyBhZnRlciBib3JkZXIuIChGSVhNRTogRGVhbCB3aXRoIHJvd3NwYW4hKQotICAgIHJl
c3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHBhcmVudCgp
LT5zdHlsZSgpLmJvcmRlckFmdGVyKCksIGluY2x1ZGVDb2xvciA/IHBhcmVudCgpLT5zdHlsZSgp
LnZpc2l0ZWREZXBlbmRlbnRDb2xvcihhZnRlckNvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQlJP
VykpOworICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZh
bHVlKHBhcmVudCgpLT5zdHlsZSgpLmJvcmRlckFmdGVyKCksIGluY2x1ZGVDb2xvciA/IHBhcmVu
dCgpLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihhZnRlckNvbG9yUHJvcGVydHkpIDog
T3B0aW9uYWxSR0JBKCksIEJST1cpKTsKICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAKICAgICAvLyAoNCkgVGhlIG5leHQgcm93J3MgYmVmb3Jl
IGJvcmRlci4KICAgICBpZiAobmV4dENlbGwpIHsKLSAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9y
ZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUobmV4dENlbGwtPnBhcmVudCgpLT5zdHls
ZSgpLmJvcmRlckJlZm9yZSgpLCBpbmNsdWRlQ29sb3IgPyBuZXh0Q2VsbC0+cGFyZW50KCktPnN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKGJlZm9yZUNvbG9yUHJvcGVydHkpIDogQ29sb3Io
KSwgQlJPVykpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZShuZXh0Q2VsbC0+cGFyZW50KCktPnN0eWxlKCkuYm9yZGVyQmVmb3JlKCks
IGluY2x1ZGVDb2xvciA/IG5leHRDZWxsLT5wYXJlbnQoKS0+c3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoYmVmb3JlQ29sb3JQcm9wZXJ0eSkgOiBPcHRpb25hbFJHQkEoKSwgQlJPVykpOwog
ICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQpAQCAtODkxLDE0ICs4OTEsMTQgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVy
VGFibGVDZWxsOjpjb21wdXRlQ29sbGFwc2VkQWZ0ZXJCb3JkZXIoSW5jbHVkZUJvcmRlckMKICAg
ICBSZW5kZXJUYWJsZVNlY3Rpb24qIGN1cnJTZWN0aW9uID0gc2VjdGlvbigpOwogICAgIGlmIChy
b3dJbmRleCgpICsgcm93U3BhbigpID49IGN1cnJTZWN0aW9uLT5udW1Sb3dzKCkpIHsKICAgICAg
ICAgLy8gKDUpIE91ciByb3cgZ3JvdXAncyBhZnRlciBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9
IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGN1cnJTZWN0aW9uLT5z
dHlsZSgpLmJvcmRlckFmdGVyKCksIGluY2x1ZGVDb2xvciA/IGN1cnJTZWN0aW9uLT5zdHlsZSgp
LnZpc2l0ZWREZXBlbmRlbnRDb2xvcihhZnRlckNvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQlJP
V0dST1VQKSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNl
ZEJvcmRlclZhbHVlKGN1cnJTZWN0aW9uLT5zdHlsZSgpLmJvcmRlckFmdGVyKCksIGluY2x1ZGVD
b2xvciA/IGN1cnJTZWN0aW9uLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihhZnRlckNv
bG9yUHJvcGVydHkpIDogT3B0aW9uYWxSR0JBKCksIEJST1dHUk9VUCkpOwogICAgICAgICBpZiAo
IXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIAog
ICAgICAgICAvLyAoNikgRm9sbG93aW5nIHJvdyBncm91cCdzIGJlZm9yZSBib3JkZXIuCiAgICAg
ICAgIGN1cnJTZWN0aW9uID0gdGFibGUtPnNlY3Rpb25CZWxvdyhjdXJyU2VjdGlvbiwgU2tpcEVt
cHR5U2VjdGlvbnMpOwogICAgICAgICBpZiAoY3VyclNlY3Rpb24pIHsKLSAgICAgICAgICAgIHJl
c3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGN1cnJTZWN0
aW9uLT5zdHlsZSgpLmJvcmRlckJlZm9yZSgpLCBpbmNsdWRlQ29sb3IgPyBjdXJyU2VjdGlvbi0+
c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoYmVmb3JlQ29sb3JQcm9wZXJ0eSkgOiBDb2xv
cigpLCBCUk9XR1JPVVApKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1
bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGN1cnJTZWN0aW9uLT5zdHlsZSgpLmJvcmRlckJlZm9y
ZSgpLCBpbmNsdWRlQ29sb3IgPyBjdXJyU2VjdGlvbi0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoYmVmb3JlQ29sb3JQcm9wZXJ0eSkgOiBPcHRpb25hbFJHQkEoKSwgQlJPV0dST1VQKSk7
CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CkBAIC05MDgsMTcgKzkwOCwxNyBAQCBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVDb2xsYXBzZWRBZnRlckJvcmRlcihJbmNs
dWRlQm9yZGVyQwogICAgICAgICAvLyAoOCkgT3VyIGNvbHVtbiBhbmQgY29sdW1uIGdyb3VwJ3Mg
YWZ0ZXIgYm9yZGVycy4KICAgICAgICAgUmVuZGVyVGFibGVDb2wqIGNvbEVsdCA9IHRhYmxlLT5j
b2xFbGVtZW50KGNvbCgpKTsKICAgICAgICAgaWYgKGNvbEVsdCkgewotICAgICAgICAgICAgcmVz
dWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0LT5z
dHlsZSgpLmJvcmRlckFmdGVyKCksIGluY2x1ZGVDb2xvciA/IGNvbEVsdC0+c3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoYWZ0ZXJDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJDT0wpKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRl
clZhbHVlKGNvbEVsdC0+c3R5bGUoKS5ib3JkZXJBZnRlcigpLCBpbmNsdWRlQ29sb3IgPyBjb2xF
bHQtPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKGFmdGVyQ29sb3JQcm9wZXJ0eSkgOiBP
cHRpb25hbFJHQkEoKSwgQkNPTCkpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkp
IHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICBpZiAoUmVuZGVyVGFibGVDb2wqIGVuY2xvc2lu
Z0NvbHVtbkdyb3VwID0gY29sRWx0LT5lbmNsb3NpbmdDb2x1bW5Hcm91cCgpKSB7Ci0gICAgICAg
ICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFs
dWUoZW5jbG9zaW5nQ29sdW1uR3JvdXAtPnN0eWxlKCkuYm9yZGVyQWZ0ZXIoKSwgaW5jbHVkZUNv
bG9yID8gZW5jbG9zaW5nQ29sdW1uR3JvdXAtPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9y
KGFmdGVyQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ09MR1JPVVApKTsKKyAgICAgICAgICAg
ICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShl
bmNsb3NpbmdDb2x1bW5Hcm91cC0+c3R5bGUoKS5ib3JkZXJBZnRlcigpLCBpbmNsdWRlQ29sb3Ig
PyBlbmNsb3NpbmdDb2x1bW5Hcm91cC0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoYWZ0
ZXJDb2xvclByb3BlcnR5KSA6IE9wdGlvbmFsUkdCQSgpLCBCQ09MR1JPVVApKTsKICAgICAgICAg
ICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8g
KDkpIFRoZSB0YWJsZSdzIGFmdGVyIGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9y
ZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUodGFibGUtPnN0eWxlKCkuYm9yZGVyQWZ0
ZXIoKSwgaW5jbHVkZUNvbG9yID8gdGFibGUtPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9y
KGFmdGVyQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCVEFCTEUpKTsKKyAgICAgICAgcmVzdWx0
ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUodGFibGUtPnN0eWxl
KCkuYm9yZGVyQWZ0ZXIoKSwgaW5jbHVkZUNvbG9yID8gdGFibGUtPnN0eWxlKCkudmlzaXRlZERl
cGVuZGVudENvbG9yKGFmdGVyQ29sb3JQcm9wZXJ0eSkgOiBPcHRpb25hbFJHQkEoKSwgQlRBQkxF
KSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CkBAIC0xMjY4LDcgKzEyNjgsNyBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6
cGFpbnRCYWNrZ3JvdW5kc0JlaGluZENlbGwoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eQogICAgIGlmIChiYWNrZ3JvdW5kT2JqZWN0ICE9IHRoaXMpCiAgICAgICAgIGFkanVzdGVkUGFp
bnRPZmZzZXQubW92ZUJ5KGxvY2F0aW9uKCkpOwogCi0gICAgQ29sb3IgYyA9IGJhY2tncm91bmRP
YmplY3QtPnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKTsKKyAgICBPcHRpb25hbFJHQkEgYyA9IGJhY2tncm91bmRPYmplY3QtPnN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKICAgICBj
b25zdCBGaWxsTGF5ZXIqIGJnTGF5ZXIgPSBiYWNrZ3JvdW5kT2JqZWN0LT5zdHlsZSgpLmJhY2tn
cm91bmRMYXllcnMoKTsKIAogICAgIGlmIChiZ0xheWVyLT5oYXNJbWFnZSgpIHx8IGMuaXNWYWxp
ZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVT
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24u
Y3BwCmluZGV4IDRiMTcxNGE0YjMwYWRlMTJlZDAyNTNmOThlYjQzNWU4NmU3YTg1NjEuLmYxNjc5
YmQ4NzMzYmFlZDI0NDVkMjc0ZDNhYzZkYjQ0MjA4MDgyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCkBAIC0xNTc3LDcgKzE1NzcsNyBA
QCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZVNlY3Rpb246OmNhY2hlZENvbGxhcHNl
ZEJvcmRlcihjb25zdCBSZW5kZXJUYWJsZQogICAgIGF1dG8gaXQgPSBtX2NlbGxzQ29sbGFwc2Vk
Qm9yZGVycy5maW5kKHN0ZDo6bWFrZV9wYWlyKCZjZWxsLCBzaWRlKSk7CiAgICAgLy8gT25seSBu
b24tZW1wdHkgY29sbGFwc2VkIGJvcmRlcnMgYXJlIGluIHRoZSBoYXNobWFwLgogICAgIGlmIChp
dCA9PSBtX2NlbGxzQ29sbGFwc2VkQm9yZGVycy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIENvbGxh
cHNlZEJvcmRlclZhbHVlKEJvcmRlclZhbHVlKCksIENvbG9yKCksIEJDRUxMKTsKKyAgICAgICAg
cmV0dXJuIENvbGxhcHNlZEJvcmRlclZhbHVlKEJvcmRlclZhbHVlKCksIE9wdGlvbmFsUkdCQSgp
LCBCQ0VMTCk7CiAgICAgcmV0dXJuIGl0LT52YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmgKaW5kZXggNzBiZmVlZDBlNjVmODlhZjMyZGIwNDNiN2ZjMDEyYzBlYzEz
NTJjMi4uODA0OWMzMmQzNWZjOTEwZGUwYzA1OGFkNmRmYjU4MzdmZjZjNmE4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCkBAIC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKICAg
ICBSZW5kZXJTdHlsZSYgZmlyc3RMaW5lU3R5bGUoKSBjb25zdDsKICAgICBSZW5kZXJTdHlsZSog
Z2V0Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQsIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9
IG51bGxwdHIpIGNvbnN0OwogCi0gICAgQ29sb3Igc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkg
Y29uc3Q7Ci0gICAgQ29sb3Igc2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Q7Ci0gICAg
Q29sb3Igc2VsZWN0aW9uRW1waGFzaXNNYXJrQ29sb3IoKSBjb25zdDsKKyAgICBPcHRpb25hbFJH
QkEgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CisgICAgT3B0aW9uYWxSR0JBIHNl
bGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0OworICAgIE9wdGlvbmFsUkdCQSBzZWxlY3Rp
b25FbXBoYXNpc01hcmtDb2xvcigpIGNvbnN0OwogCiAgICAgdmlydHVhbCBTdHJpbmcgb3JpZ2lu
YWxUZXh0KCkgY29uc3Q7CiAKQEAgLTI1OSwxNyArMjU5LDE3IEBAIGlubGluZSBSZW5kZXJTdHls
ZSogUmVuZGVyVGV4dDo6Z2V0Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQgcHNldWRvSWQsIFJl
bmRlclN0CiAgICAgcmV0dXJuIHBhcmVudCgpLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShwc2V1ZG9J
ZCwgcGFyZW50U3R5bGUpOwogfQogCi1pbmxpbmUgQ29sb3IgUmVuZGVyVGV4dDo6c2VsZWN0aW9u
QmFja2dyb3VuZENvbG9yKCkgY29uc3QKK2lubGluZSBPcHRpb25hbFJHQkEgUmVuZGVyVGV4dDo6
c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gcGFyZW50KCkt
PnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOwogfQogCi1pbmxpbmUgQ29sb3IgUmVuZGVyVGV4
dDo6c2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKK2lubGluZSBPcHRpb25hbFJHQkEg
UmVuZGVyVGV4dDo6c2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIHsKICAgICByZXR1
cm4gcGFyZW50KCktPnNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpOwogfQogCi1pbmxpbmUgQ29s
b3IgUmVuZGVyVGV4dDo6c2VsZWN0aW9uRW1waGFzaXNNYXJrQ29sb3IoKSBjb25zdAoraW5saW5l
IE9wdGlvbmFsUkdCQSBSZW5kZXJUZXh0OjpzZWxlY3Rpb25FbXBoYXNpc01hcmtDb2xvcigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIHBhcmVudCgpLT5zZWxlY3Rpb25FbXBoYXNpc01hcmtDb2xvcigp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggNGU1YTc0
MTJiMjQxOTgyNDBiZWRlM2QwZTY1NGFjNDRmZTNiN2M0NS4uYTdlODY5MmEwYTc1YzE1ZGFiY2Ri
MDE3MTllMzRiMDEyYzZhZjQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwCkBAIC02Niw5ICs2Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIAotc3RhdGljIENvbG9yJiBjdXN0b21Gb2N1c1JpbmdDb2xvcigp
CitzdGF0aWMgT3B0aW9uYWxSR0JBJiBjdXN0b21Gb2N1c1JpbmdDb2xvcigpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBjb2xvciwgKCkpOworICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChPcHRpb25hbFJHQkEsIGNvbG9yLCAoKSk7CiAgICAg
cmV0dXJuIGNvbG9yOwogfQogCkBAIC03OSw3ICs3OSw3IEBAIFJlbmRlclRoZW1lOjpSZW5kZXJU
aGVtZSgpCiB7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKFN0eWxlUmVzb2x2
ZXImIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlJiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCwg
Ym9vbCBVQUhhc0FwcGVhcmFuY2UsIGNvbnN0IEJvcmRlckRhdGEmIGJvcmRlciwgY29uc3QgRmls
bExheWVyJiBiYWNrZ3JvdW5kLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKQordm9pZCBS
ZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgUmVu
ZGVyU3R5bGUmIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50LCBib29sIFVBSGFzQXBwZWFyYW5jZSwg
Y29uc3QgQm9yZGVyRGF0YSYgYm9yZGVyLCBjb25zdCBGaWxsTGF5ZXImIGJhY2tncm91bmQsIGNv
bnN0IE9wdGlvbmFsUkdCQSYgYmFja2dyb3VuZENvbG9yKQogewogICAgIC8vIEZvcmNlIGlubGlu
ZSBhbmQgdGFibGUgZGlzcGxheSBzdHlsZXMgdG8gYmUgaW5saW5lLWJsb2NrIChleGNlcHQgZm9y
IHRhYmxlLSB3aGljaCBpcyBibG9jaykKICAgICBDb250cm9sUGFydCBwYXJ0ID0gc3R5bGUuYXBw
ZWFyYW5jZSgpOwpAQCAtNTYzLDEwMyArNTYzLDEwMyBAQCBJbnRQb2ludCBSZW5kZXJUaGVtZTo6
dm9sdW1lU2xpZGVyT2Zmc2V0RnJvbU11dGVCdXR0b24oY29uc3QgUmVuZGVyQm94JiBtdXRlQnV0
dAogCiAjZW5kaWYKIAotQ29sb3IgUmVuZGVyVGhlbWU6OmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91
bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWU6OmFjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2FjdGl2ZVNlbGVjdGlvbkJh
Y2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIG1fYWN0aXZlU2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yID0gcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKS5ibGVu
ZFdpdGhXaGl0ZSgpOwogICAgIHJldHVybiBtX2FjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xv
cjsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWU6OmluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5kZXJUaGVtZTo6aW5hY3RpdmVTZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogewogICAgIGlmICghbV9pbmFjdGl2ZVNlbGVjdGlvbkJh
Y2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIG1faW5hY3RpdmVTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IgPSBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCku
YmxlbmRXaXRoV2hpdGUoKTsKICAgICByZXR1cm4gbV9pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91
bmRDb2xvcjsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWU6OmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91
bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWU6OmFjdGl2ZVNlbGVjdGlv
bkZvcmVncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2FjdGl2ZVNlbGVjdGlvbkZv
cmVncm91bmRDb2xvci5pc1ZhbGlkKCkgJiYgc3VwcG9ydHNTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29s
b3JzKCkpCiAgICAgICAgIG1fYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yID0gcGxhdGZv
cm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKTsKICAgICByZXR1cm4gbV9hY3RpdmVT
ZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lOjppbmFjdGl2
ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhl
bWU6OmluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIHsKICAgICBpZiAo
IW1faW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IuaXNWYWxpZCgpICYmIHN1cHBvcnRz
U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9ycygpKQogICAgICAgICBtX2luYWN0aXZlU2VsZWN0aW9u
Rm9yZWdyb3VuZENvbG9yID0gcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xv
cigpOwogICAgIHJldHVybiBtX2luYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwogfQog
Ci1Db2xvciBSZW5kZXJUaGVtZTo6YWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xv
cigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWU6OmFjdGl2ZUxpc3RCb3hTZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogewogICAgIGlmICghbV9hY3RpdmVMaXN0Qm94U2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgbV9hY3RpdmVMaXN0Qm94
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yID0gcGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9u
QmFja2dyb3VuZENvbG9yKCk7CiAgICAgcmV0dXJuIG1fYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJh
Y2tncm91bmRDb2xvcjsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWU6OmluYWN0aXZlTGlzdEJveFNl
bGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWU6
OmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX2luYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkp
CiAgICAgICAgIG1faW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yID0gcGxh
dGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKICAgICByZXR1
cm4gbV9pbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3I7CiB9CiAKLUNvbG9y
IFJlbmRlclRoZW1lOjphY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29u
c3QKK09wdGlvbmFsUkdCQSBSZW5kZXJUaGVtZTo6YWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVn
cm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2FjdGl2ZUxpc3RCb3hTZWxlY3Rpb25G
b3JlZ3JvdW5kQ29sb3IuaXNWYWxpZCgpICYmIHN1cHBvcnRzTGlzdEJveFNlbGVjdGlvbkZvcmVn
cm91bmRDb2xvcnMoKSkKICAgICAgICAgbV9hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3Vu
ZENvbG9yID0gcGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7
CiAgICAgcmV0dXJuIG1fYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcjsKIH0K
IAotQ29sb3IgUmVuZGVyVGhlbWU6OmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRD
b2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWU6OmluYWN0aXZlTGlzdEJveFNl
bGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2luYWN0aXZlTGlz
dEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvci5pc1ZhbGlkKCkgJiYgc3VwcG9ydHNMaXN0Qm94
U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9ycygpKQogICAgICAgICBtX2luYWN0aXZlTGlzdEJveFNl
bGVjdGlvbkZvcmVncm91bmRDb2xvciA9IHBsYXRmb3JtSW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9u
Rm9yZWdyb3VuZENvbG9yKCk7CiAgICAgcmV0dXJuIG1faW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9u
Rm9yZWdyb3VuZENvbG9yOwogfQogCi1Db2xvciBSZW5kZXJUaGVtZTo6cGxhdGZvcm1BY3RpdmVT
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlclRoZW1l
OjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAg
Ly8gVXNlIGEgYmx1ZSBjb2xvciBieSBkZWZhdWx0IGlmIHRoZSBwbGF0Zm9ybSB0aGVtZSBkb2Vz
bid0IGRlZmluZSBhbnl0aGluZy4KLSAgICByZXR1cm4gQ29sb3IoMCwgMCwgMjU1KTsKKyAgICBy
ZXR1cm4gT3B0aW9uYWxSR0JBKDAsIDAsIDI1NSk7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lOjpw
bGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJH
QkEgUmVuZGVyVGhlbWU6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkg
Y29uc3QKIHsKICAgICAvLyBVc2UgYSB3aGl0ZSBjb2xvciBieSBkZWZhdWx0IGlmIHRoZSBwbGF0
Zm9ybSB0aGVtZSBkb2Vzbid0IGRlZmluZSBhbnl0aGluZy4KLSAgICByZXR1cm4gQ29sb3I6Ondo
aXRlOworICAgIHJldHVybiBPcHRpb25hbFJHQkE6OndoaXRlOwogfQogCi1Db2xvciBSZW5kZXJU
aGVtZTo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CitP
cHRpb25hbFJHQkEgUmVuZGVyVGhlbWU6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdAogewogICAgIC8vIFVzZSBhIGdyZXkgY29sb3IgYnkgZGVmYXVsdCBp
ZiB0aGUgcGxhdGZvcm0gdGhlbWUgZG9lc24ndCBkZWZpbmUgYW55dGhpbmcuCiAgICAgLy8gVGhp
cyBjb2xvciBtYXRjaGVzIEZpcmVmb3gncyBpbmFjdGl2ZSBjb2xvci4KLSAgICByZXR1cm4gQ29s
b3IoMTc2LCAxNzYsIDE3Nik7CisgICAgcmV0dXJuIE9wdGlvbmFsUkdCQSgxNzYsIDE3NiwgMTc2
KTsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWU6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUlu
YWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIHsKICAgICAvLyBVc2UgYSBi
bGFjayBjb2xvciBieSBkZWZhdWx0LgotICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CisgICAgcmV0
dXJuIE9wdGlvbmFsUkdCQTo6YmxhY2s7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lOjpwbGF0Zm9y
bUFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxS
R0JBIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3IoKSBjb25zdAogewogICAgIHJldHVybiBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcigpOwogfQogCi1Db2xvciBSZW5kZXJUaGVtZTo6cGxhdGZvcm1BY3RpdmVMaXN0
Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5kZXJU
aGVtZTo6cGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29u
c3QKIHsKICAgICByZXR1cm4gcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3Io
KTsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWU6OnBsYXRmb3JtSW5hY3RpdmVMaXN0Qm94U2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5kZXJUaGVtZTo6cGxh
dGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogewog
ICAgIHJldHVybiBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7CiB9
CiAKLUNvbG9yIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZv
cmVncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWU6OnBsYXRmb3Jt
SW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpOwogfQpAQCAt
NjgwLDcgKzY4MCw3IEBAIGJvb2wgUmVuZGVyVGhlbWU6OmlzQ29udHJvbENvbnRhaW5lcihDb250
cm9sUGFydCBhcHBlYXJhbmNlKSBjb25zdAogICAgIHJldHVybiBhcHBlYXJhbmNlICE9IENoZWNr
Ym94UGFydCAmJiBhcHBlYXJhbmNlICE9IFJhZGlvUGFydDsKIH0KIAotYm9vbCBSZW5kZXJUaGVt
ZTo6aXNDb250cm9sU3R5bGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgQm9yZGVy
RGF0YSYgYm9yZGVyLCBjb25zdCBGaWxsTGF5ZXImIGJhY2tncm91bmQsIGNvbnN0IENvbG9yJiBi
YWNrZ3JvdW5kQ29sb3IpIGNvbnN0Citib29sIFJlbmRlclRoZW1lOjppc0NvbnRyb2xTdHlsZWQo
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCb3JkZXJEYXRhJiBib3JkZXIsIGNvbnN0
IEZpbGxMYXllciYgYmFja2dyb3VuZCwgY29uc3QgT3B0aW9uYWxSR0JBJiBiYWNrZ3JvdW5kQ29s
b3IpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChzdHlsZS5hcHBlYXJhbmNlKCkpIHsKICAgICBjYXNl
IFB1c2hCdXR0b25QYXJ0OgpAQCAtMTE0NiwxNSArMTE0NiwxNSBAQCB2b2lkIFJlbmRlclRoZW1l
OjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVu
ZGVyU3R5bAogCiB2b2lkIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUNvbG9yc0RpZENoYW5nZSgpCiB7
Ci0gICAgbV9hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgPSBDb2xvcigpOwotICAgIG1f
aW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgPSBDb2xvcigpOwotICAgIG1fYWN0aXZl
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yID0gQ29sb3IoKTsKLSAgICBtX2luYWN0aXZlU2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yID0gQ29sb3IoKTsKKyAgICBtX2FjdGl2ZVNlbGVjdGlvbkZvcmVn
cm91bmRDb2xvciA9IE9wdGlvbmFsUkdCQSgpOworICAgIG1faW5hY3RpdmVTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3IgPSBPcHRpb25hbFJHQkEoKTsKKyAgICBtX2FjdGl2ZVNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvciA9IE9wdGlvbmFsUkdCQSgpOworICAgIG1faW5hY3RpdmVTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IgPSBPcHRpb25hbFJHQkEoKTsKIAotICAgIG1fYWN0aXZlTGlzdEJveFNlbGVj
dGlvbkZvcmVncm91bmRDb2xvciA9IENvbG9yKCk7Ci0gICAgbV9pbmFjdGl2ZUxpc3RCb3hTZWxl
Y3Rpb25Gb3JlZ3JvdW5kQ29sb3IgPSBDb2xvcigpOwotICAgIG1fYWN0aXZlTGlzdEJveFNlbGVj
dGlvbkJhY2tncm91bmRDb2xvciA9IENvbG9yKCk7Ci0gICAgbV9pbmFjdGl2ZUxpc3RCb3hTZWxl
Y3Rpb25Gb3JlZ3JvdW5kQ29sb3IgPSBDb2xvcigpOworICAgIG1fYWN0aXZlTGlzdEJveFNlbGVj
dGlvbkZvcmVncm91bmRDb2xvciA9IE9wdGlvbmFsUkdCQSgpOworICAgIG1faW5hY3RpdmVMaXN0
Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yID0gT3B0aW9uYWxSR0JBKCk7CisgICAgbV9hY3Rp
dmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yID0gT3B0aW9uYWxSR0JBKCk7CisgICAg
bV9pbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgPSBPcHRpb25hbFJHQkEo
KTsKIAogICAgIFBhZ2U6OnVwZGF0ZVN0eWxlRm9yQWxsUGFnZXNBZnRlckdsb2JhbENoYW5nZUlu
RW52aXJvbm1lbnQoKTsKIH0KQEAgLTEyMDgsNyArMTIwOCw3IEBAIHZvaWQgUmVuZGVyVGhlbWU6
OnN5c3RlbUZvbnQoQ1NTVmFsdWVJRCBzeXN0ZW1Gb250SUQsIEZvbnREZXNjcmlwdGlvbiYgZm9u
dERlc2NyCiAgICAgdXBkYXRlQ2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKHN5c3RlbUZvbnRJ
RCwgZm9udERlc2NyaXB0aW9uKTsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9y
KENTU1ZhbHVlSUQgY3NzVmFsdWVJZCkgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5kZXJUaGVtZTo6
c3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlkKSBjb25zdAogewogICAgIHN3aXRjaCAo
Y3NzVmFsdWVJZCkgewogICAgIGNhc2UgQ1NTVmFsdWVBY3RpdmVib3JkZXI6CkBAIC0xMjc0LDIx
ICsxMjc0LDIxIEBAIENvbG9yIFJlbmRlclRoZW1lOjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUlEIGNz
c1ZhbHVlSWQpIGNvbnN0CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IHJldHVybiBDb2xvcigpOworICAgIHJldHVybiBPcHRpb25hbFJHQkEoKTsKIH0KIAotQ29sb3Ig
UmVuZGVyVGhlbWU6OnBsYXRmb3JtQWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgY29u
c3QKK09wdGlvbmFsUkdCQSBSZW5kZXJUaGVtZTo6cGxhdGZvcm1BY3RpdmVUZXh0U2VhcmNoSGln
aGxpZ2h0Q29sb3IoKSBjb25zdAogewotICAgIHJldHVybiBDb2xvcigyNTUsIDE1MCwgNTApOyAv
LyBPcmFuZ2UuCisgICAgcmV0dXJuIE9wdGlvbmFsUkdCQSgyNTUsIDE1MCwgNTApOyAvLyBPcmFu
Z2UuCiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJjaEhp
Z2hsaWdodENvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5kZXJUaGVtZTo6cGxhdGZvcm1J
bmFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIENv
bG9yKDI1NSwgMjU1LCAwKTsgLy8gWWVsbG93LgorICAgIHJldHVybiBPcHRpb25hbFJHQkEoMjU1
LCAyNTUsIDApOyAvLyBZZWxsb3cuCiB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotQ29s
b3IgUmVuZGVyVGhlbWU6OnRhcEhpZ2hsaWdodENvbG9yKCkKK09wdGlvbmFsUkdCQSBSZW5kZXJU
aGVtZTo6dGFwSGlnaGxpZ2h0Q29sb3IoKQogewogICAgIHJldHVybiBkZWZhdWx0VGhlbWUoKS0+
cGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcigpOwogfQpAQCAtMTI5OSwxMiArMTI5OSwxMiBAQCBz
dGF0aWMgY29uc3QgaW50IG1pbkNvbG9yQ29udHJhc3RWYWx1ZSA9IDEzMDA7CiAvLyBGb3IgdHJh
bnNwYXJlbnQgb3IgdHJhbnNsdWNlbnQgYmFja2dyb3VuZCBjb2xvciwgdXNlIGxpZ2h0ZW5pbmcu
CiBzdGF0aWMgY29uc3QgaW50IG1pbkRpc2FibGVkQ29sb3JBbHBoYVZhbHVlID0gMTI4OwogCi1D
b2xvciBSZW5kZXJUaGVtZTo6ZGlzYWJsZWRUZXh0Q29sb3IoY29uc3QgQ29sb3ImIHRleHRDb2xv
ciwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5k
ZXJUaGVtZTo6ZGlzYWJsZWRUZXh0Q29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiB0ZXh0Q29sb3Is
IGNvbnN0IE9wdGlvbmFsUkdCQSYgYmFja2dyb3VuZENvbG9yKSBjb25zdAogewogICAgIC8vIFRo
ZSBleHBsaWNpdCBjaGVjayBmb3IgYmxhY2sgaXMgYW4gb3B0aW1pemF0aW9uIGZvciB0aGUgOTkl
IGNhc2UgKGJsYWNrIG9uIHdoaXRlKS4KICAgICAvLyBUaGlzIGFsc28gbWVhbnMgdGhhdCBibGFj
ayBvbiBibGFjayB3aWxsIHR1cm4gaW50byBncmV5IG9uIGJsYWNrIHdoZW4gZGlzYWJsZWQuCi0g
ICAgQ29sb3IgZGlzYWJsZWRDb2xvcjsKLSAgICBpZiAodGV4dENvbG9yLnJnYigpID09IENvbG9y
OjpibGFjayB8fCBiYWNrZ3JvdW5kQ29sb3IuYWxwaGEoKSA8IG1pbkRpc2FibGVkQ29sb3JBbHBo
YVZhbHVlIHx8IGRpZmZlcmVuY2VTcXVhcmVkKHRleHRDb2xvciwgQ29sb3I6OndoaXRlKSA+IGRp
ZmZlcmVuY2VTcXVhcmVkKGJhY2tncm91bmRDb2xvciwgQ29sb3I6OndoaXRlKSkKKyAgICBPcHRp
b25hbFJHQkEgZGlzYWJsZWRDb2xvcjsKKyAgICBpZiAodGV4dENvbG9yLnJnYigpID09IE9wdGlv
bmFsUkdCQTo6YmxhY2sgfHwgYmFja2dyb3VuZENvbG9yLmFscGhhKCkgPCBtaW5EaXNhYmxlZENv
bG9yQWxwaGFWYWx1ZSB8fCBkaWZmZXJlbmNlU3F1YXJlZCh0ZXh0Q29sb3IsIE9wdGlvbmFsUkdC
QTo6d2hpdGUpID4gZGlmZmVyZW5jZVNxdWFyZWQoYmFja2dyb3VuZENvbG9yLCBPcHRpb25hbFJH
QkE6OndoaXRlKSkKICAgICAgICAgZGlzYWJsZWRDb2xvciA9IHRleHRDb2xvci5saWdodCgpOwog
ICAgIGVsc2UKICAgICAgICAgZGlzYWJsZWRDb2xvciA9IHRleHRDb2xvci5kYXJrKCk7CkBAIC0x
MzE4LDEyICsxMzE4LDEyIEBAIENvbG9yIFJlbmRlclRoZW1lOjpkaXNhYmxlZFRleHRDb2xvcihj
b25zdCBDb2xvciYgdGV4dENvbG9yLCBjb25zdCBDb2xvciYgYmFja2dyCiAgICAgcmV0dXJuIGRp
c2FibGVkQ29sb3I7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWU6OnNldEN1c3RvbUZvY3VzUmluZ0Nv
bG9yKGNvbnN0IENvbG9yJiBjKQordm9pZCBSZW5kZXJUaGVtZTo6c2V0Q3VzdG9tRm9jdXNSaW5n
Q29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiBjKQogewogICAgIGN1c3RvbUZvY3VzUmluZ0NvbG9y
KCkgPSBjOwogfQogCi1Db2xvciBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3IoKQorT3B0aW9u
YWxSR0JBIFJlbmRlclRoZW1lOjpmb2N1c1JpbmdDb2xvcigpCiB7CiAgICAgcmV0dXJuIGN1c3Rv
bUZvY3VzUmluZ0NvbG9yKCkuaXNWYWxpZCgpID8gY3VzdG9tRm9jdXNSaW5nQ29sb3IoKSA6IGRl
ZmF1bHRUaGVtZSgpLT5wbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZS5oCmluZGV4IGE5YzRlMzdjMjY5NTQyNTliZmQxZGU1YmJmNGFl
ZTZmODFiNDYxMWYuLjU4ZWNmZTA5NGU0ZWE4Y2UyOTg3MTU5MTMwZGFjNmZlMmM1OThkZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCkBAIC03NCw3ICs3NCw3IEBAIHB1
YmxpYzoKICAgICAvLyBtZXRyaWNzIGFuZCBkZWZhdWx0cyBnaXZlbiB0aGUgY29udGVudHMgb2Yg
dGhlIHN0eWxlLiAgVGhpcyBpbmNsdWRlcyBzb3BoaXN0aWNhdGVkIG9wZXJhdGlvbnMgbGlrZQog
ICAgIC8vIHNlbGVjdGlvbiBvZiBjb250cm9sIHNpemUgYmFzZWQgb2ZmIHRoZSBmb250LCB0aGUg
ZGlzYWJsaW5nIG9mIGFwcGVhcmFuY2Ugd2hlbiBjZXJ0YWluIG90aGVyIHByb3BlcnRpZXMgbGlr
ZQogICAgIC8vICJib3JkZXIiIGFyZSBzZXQsIG9yIGlmIHRoZSBhcHBlYXJhbmNlIGlzIG5vdCBz
dXBwb3J0ZWQgYnkgdGhlIHRoZW1lLgotICAgIHZvaWQgYWRqdXN0U3R5bGUoU3R5bGVSZXNvbHZl
ciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCosICBib29sIFVBSGFzQXBwZWFyYW5jZSwgY29uc3Qg
Qm9yZGVyRGF0YSYsIGNvbnN0IEZpbGxMYXllciYsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29s
b3IpOworICAgIHZvaWQgYWRqdXN0U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwg
RWxlbWVudCosICBib29sIFVBSGFzQXBwZWFyYW5jZSwgY29uc3QgQm9yZGVyRGF0YSYsIGNvbnN0
IEZpbGxMYXllciYsIGNvbnN0IE9wdGlvbmFsUkdCQSYgYmFja2dyb3VuZENvbG9yKTsKIAogICAg
IC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB0byBwYWludCB0aGUgd2lkZ2V0IGFzIGEgYmFja2dy
b3VuZCBvZiB0aGUgUmVuZGVyT2JqZWN0LiAgQSB3aWRnZXQncyBmb3JlZ3JvdW5kLCBlLmcuLCB0
aGUKICAgICAvLyB0ZXh0IG9mIGEgYnV0dG9uLCBpcyBhbHdheXMgcmVuZGVyZWQgYnkgdGhlIGVu
Z2luZSBpdHNlbGYuICBUaGUgYm9vbGVhbiByZXR1cm4gdmFsdWUgaW5kaWNhdGVzCkBAIC0xMTYs
NyArMTE2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjb250cm9sU3VwcG9ydHNUaW50
cyhjb25zdCBSZW5kZXJPYmplY3QmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8g
V2hldGhlciBvciBub3QgdGhlIGNvbnRyb2wgaGFzIGJlZW4gc3R5bGVkIGVub3VnaCBieSB0aGUg
YXV0aG9yIHRvIGRpc2FibGUgdGhlIG5hdGl2ZSBhcHBlYXJhbmNlLgotICAgIHZpcnR1YWwgYm9v
bCBpc0NvbnRyb2xTdHlsZWQoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBCb3JkZXJEYXRhJiwg
Y29uc3QgRmlsbExheWVyJiwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIGlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0
IEJvcmRlckRhdGEmLCBjb25zdCBGaWxsTGF5ZXImLCBjb25zdCBPcHRpb25hbFJHQkEmIGJhY2tn
cm91bmRDb2xvcikgY29uc3Q7CiAKICAgICAvLyBBIGdlbmVyYWwgbWV0aG9kIGFza2luZyBpZiBh
bnkgY29udHJvbCB0aW50aW5nIGlzIHN1cHBvcnRlZCBhdCBhbGwuCiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE0Mywz
MCArMTQzLDMwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNEYXRhTGlzdFVJ
KGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBU
ZXh0IHNlbGVjdGlvbiBjb2xvcnMuCi0gICAgQ29sb3IgYWN0aXZlU2VsZWN0aW9uQmFja2dyb3Vu
ZENvbG9yKCkgY29uc3Q7Ci0gICAgQ29sb3IgaW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoKSBjb25zdDsKLSAgICBDb2xvciBhY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBj
b25zdDsKLSAgICBDb2xvciBpbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0
OworICAgIE9wdGlvbmFsUkdCQSBhY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25z
dDsKKyAgICBPcHRpb25hbFJHQkEgaW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBj
b25zdDsKKyAgICBPcHRpb25hbFJHQkEgYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkg
Y29uc3Q7CisgICAgT3B0aW9uYWxSR0JBIGluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9y
KCkgY29uc3Q7CiAKICAgICAvLyBMaXN0IGJveCBzZWxlY3Rpb24gY29sb3JzCi0gICAgQ29sb3Ig
YWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0OwotICAgIENvbG9y
IGFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICBDb2xv
ciBpbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICBD
b2xvciBpbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAg
ICBPcHRpb25hbFJHQkEgYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNv
bnN0OworICAgIE9wdGlvbmFsUkdCQSBhY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENv
bG9yKCkgY29uc3Q7CisgICAgT3B0aW9uYWxSR0JBIGluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJh
Y2tncm91bmRDb2xvcigpIGNvbnN0OworICAgIE9wdGlvbmFsUkdCQSBpbmFjdGl2ZUxpc3RCb3hT
ZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdDsKIAogICAgIC8vIEhpZ2hsaWdodGluZyBj
b2xvcnMgZm9yIFRleHRNYXRjaGVzLgotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVU
ZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSBjb25zdDsKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRm
b3JtSW5hY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IE9wdGlvbmFsUkdCQSBwbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIGNv
bnN0OworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHBsYXRmb3JtSW5hY3RpdmVUZXh0U2VhcmNo
SGlnaGxpZ2h0Q29sb3IoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgQ29sb3IgZGlzYWJsZWRUZXh0
Q29sb3IoY29uc3QgQ29sb3ImIHRleHRDb2xvciwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xv
cikgY29uc3Q7CisgICAgdmlydHVhbCBPcHRpb25hbFJHQkEgZGlzYWJsZWRUZXh0Q29sb3IoY29u
c3QgT3B0aW9uYWxSR0JBJiB0ZXh0Q29sb3IsIGNvbnN0IE9wdGlvbmFsUkdCQSYgYmFja2dyb3Vu
ZENvbG9yKSBjb25zdDsKIAotICAgIHN0YXRpYyBDb2xvciBmb2N1c1JpbmdDb2xvcigpOwotICAg
IHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIENv
bG9yKDAsIDAsIDApOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0Q3VzdG9tRm9jdXNSaW5nQ29sb3Io
Y29uc3QgQ29sb3ImKTsKKyAgICBzdGF0aWMgT3B0aW9uYWxSR0JBIGZvY3VzUmluZ0NvbG9yKCk7
CisgICAgdmlydHVhbCBPcHRpb25hbFJHQkEgcGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIE9wdGlvbmFsUkdCQSgwLCAwLCAwKTsgfQorICAgIHN0YXRpYyB2b2lkIHNldEN1
c3RvbUZvY3VzUmluZ0NvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYpOwogICAgIHZpcnR1YWwgaW50
IHBsYXRmb3JtRm9jdXNSaW5nTWF4V2lkdGgoKSBjb25zdCB7IHJldHVybiAzOyB9CiAjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKLSAgICBzdGF0aWMgQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3IoKTsK
LSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJl
dHVybiBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRhcEhpZ2hsaWdodENvbG9yOyB9CisgICAgc3RhdGlj
IE9wdGlvbmFsUkdCQSB0YXBIaWdobGlnaHRDb2xvcigpOworICAgIHZpcnR1YWwgT3B0aW9uYWxS
R0JBIHBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBSZW5kZXJUaGVt
ZTo6ZGVmYXVsdFRhcEhpZ2hsaWdodENvbG9yOyB9CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQg
cGxhdGZvcm1Db2xvcnNEaWRDaGFuZ2UoKTsKIApAQCAtMTc0LDcgKzE3NCw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIFN5c3RlbSBmb250cyBhbmQgY29sb3JzIGZvciBDU1MuCiAgICAgdm9pZCBzeXN0
ZW1Gb250KENTU1ZhbHVlSUQsIEZvbnREZXNjcmlwdGlvbiYpIGNvbnN0OwotICAgIHZpcnR1YWwg
Q29sb3Igc3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCkgY29uc3Q7CisgICAgdmlydHVhbCBPcHRpb25h
bFJHQkEgc3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGludCBt
aW5pbXVtTWVudUxpc3RTaXplKFJlbmRlclN0eWxlJikgY29uc3QgeyByZXR1cm4gMDsgfQogCkBA
IC0yNTksMTUgKzI1OSwxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNh
Y2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbihDU1NWYWx1ZUlEIHN5c3RlbUZvbnRJRCwgRm9udERl
c2NyaXB0aW9uJikgY29uc3QgPSAwOwogCiAgICAgLy8gVGhlIHBsYXRmb3JtIHNlbGVjdGlvbiBj
b2xvci4KLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3Vu
ZENvbG9yKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUFj
dGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0OwotICAgIHZpcnR1YWwgQ29sb3Ig
cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0OworICAgIHZp
cnR1YWwgT3B0aW9uYWxSR0JBIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9y
KCkgY29uc3Q7CisgICAgdmlydHVhbCBPcHRpb25hbFJHQkEgcGxhdGZvcm1JbmFjdGl2ZVNlbGVj
dGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0OworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHBs
YXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Q7CisgICAgdmlydHVh
bCBPcHRpb25hbFJHQkEgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigp
IGNvbnN0OwogCi0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZUxpc3RCb3hTZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtSW5h
Y3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBDb2xvciBwbGF0Zm9ybUFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtSW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9u
Rm9yZWdyb3VuZENvbG9yKCkgY29uc3Q7CisgICAgdmlydHVhbCBPcHRpb25hbFJHQkEgcGxhdGZv
cm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CisgICAgdmly
dHVhbCBPcHRpb25hbFJHQkEgcGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBwbGF0Zm9ybUFjdGl2
ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIE9w
dGlvbmFsUkdCQSBwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xv
cigpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2VsZWN0aW9uRm9yZWdyb3Vu
ZENvbG9ycygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9ycygpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KQEAgLTM5NCwxNSArMzk0LDE1IEBAIHB1YmxpYzoKICAgICBib29sIGlzRGVmYXVsdChjb25z
dCBSZW5kZXJPYmplY3QmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBtdXRhYmxlIENvbG9yIG1f
YWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yOwotICAgIG11dGFibGUgQ29sb3IgbV9pbmFj
dGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcjsKLSAgICBtdXRhYmxlIENvbG9yIG1fYWN0aXZl
U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwotICAgIG11dGFibGUgQ29sb3IgbV9pbmFjdGl2ZVNl
bGVjdGlvbkZvcmVncm91bmRDb2xvcjsKLQotICAgIG11dGFibGUgQ29sb3IgbV9hY3RpdmVMaXN0
Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yOwotICAgIG11dGFibGUgQ29sb3IgbV9pbmFjdGl2
ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3I7Ci0gICAgbXV0YWJsZSBDb2xvciBtX2Fj
dGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7Ci0gICAgbXV0YWJsZSBDb2xvciBt
X2luYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcjsKKyAgICBtdXRhYmxlIE9w
dGlvbmFsUkdCQSBtX2FjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcjsKKyAgICBtdXRhYmxl
IE9wdGlvbmFsUkdCQSBtX2luYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yOworICAgIG11
dGFibGUgT3B0aW9uYWxSR0JBIG1fYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOworICAg
IG11dGFibGUgT3B0aW9uYWxSR0JBIG1faW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7
CisKKyAgICBtdXRhYmxlIE9wdGlvbmFsUkdCQSBtX2FjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3I7CisgICAgbXV0YWJsZSBPcHRpb25hbFJHQkEgbV9pbmFjdGl2ZUxpc3RCb3hT
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3I7CisgICAgbXV0YWJsZSBPcHRpb25hbFJHQkEgbV9hY3Rp
dmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOworICAgIG11dGFibGUgT3B0aW9uYWxS
R0JBIG1faW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwogCiAjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKICAgICAvLyBUaGlzIGNvbG9yIGlzIGV4cGVjdGVkIHRvIGJlIGRy
YXduIG9uIGEgc2VtaS10cmFuc3BhcmVudCBvdmVybGF5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUd0ay5jcHAKaW5kZXggMTg2Yjc2MDE0OWU2YWVlNjBjMGRhY2I3NDIy
ZTkwNTc0Mjg3NjFiMS4uMjg5Y2FkYjA3OGM2YTQ3OTRiZDFmYjM3Mjc4YWI3NjZjMWZiZjc1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCkBAIC0zMjks
OSArMzI5LDkgQEAgc3RhdGljIGJvb2wgbm9kZUhhc0NsYXNzKE5vZGUqIG5vZGUsIGNvbnN0IGNo
YXIqIGNsYXNzTmFtZSkKIH0KIAogUmVuZGVyVGhlbWVHdGs6OlJlbmRlclRoZW1lR3RrKCkKLSAg
ICA6IG1fcGFuZWxDb2xvcihDb2xvcjo6d2hpdGUpCi0gICAgLCBtX3NsaWRlckNvbG9yKENvbG9y
Ojp3aGl0ZSkKLSAgICAsIG1fc2xpZGVyVGh1bWJDb2xvcihDb2xvcjo6d2hpdGUpCisgICAgOiBt
X3BhbmVsQ29sb3IoT3B0aW9uYWxSR0JBOjp3aGl0ZSkKKyAgICAsIG1fc2xpZGVyQ29sb3IoT3B0
aW9uYWxSR0JBOjp3aGl0ZSkKKyAgICAsIG1fc2xpZGVyVGh1bWJDb2xvcihPcHRpb25hbFJHQkE6
OndoaXRlKQogICAgICwgbV9tZWRpYUljb25TaXplKDE2KQogICAgICwgbV9tZWRpYVNsaWRlckhl
aWdodCgxNCkKIHsKQEAgLTEzMjksNyArMTMyOSw3IEBAIGRvdWJsZSBSZW5kZXJUaGVtZUd0azo6
Y2FyZXRCbGlua0ludGVydmFsKCkgY29uc3QKIAogZW51bSBTdHlsZUNvbG9yVHlwZSB7IFN0eWxl
Q29sb3JCYWNrZ3JvdW5kLCBTdHlsZUNvbG9yRm9yZWdyb3VuZCB9OwogCi1zdGF0aWMgQ29sb3Ig
c3R5bGVDb2xvcihHVHlwZSB3aWRnZXRUeXBlLCBHdGtTdGF0ZUZsYWdzIHN0YXRlLCBTdHlsZUNv
bG9yVHlwZSBjb2xvclR5cGUpCitzdGF0aWMgT3B0aW9uYWxSR0JBIHN0eWxlQ29sb3IoR1R5cGUg
d2lkZ2V0VHlwZSwgR3RrU3RhdGVGbGFncyBzdGF0ZSwgU3R5bGVDb2xvclR5cGUgY29sb3JUeXBl
KQogewogCiAgICAgR3RrU3R5bGVDb250ZXh0KiBjb250ZXh0ID0gZ2V0U3R5bGVDb250ZXh0KHdp
ZGdldFR5cGUpOwpAQCAtMTM0NCw0NyArMTM0NCw0NyBAQCBzdGF0aWMgQ29sb3Igc3R5bGVDb2xv
cihHVHlwZSB3aWRnZXRUeXBlLCBHdGtTdGF0ZUZsYWdzIHN0YXRlLCBTdHlsZUNvbG9yVHlwZSBj
bwogICAgIHJldHVybiBnZGtSR0JBQ29sb3I7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lR3RrOjpw
bGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJH
QkEgUmVuZGVyVGhlbWVHdGs6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9y
KCkgY29uc3QKIHsKICAgICByZXR1cm4gc3R5bGVDb2xvcihHVEtfVFlQRV9FTlRSWSwgc3RhdGlj
X2Nhc3Q8R3RrU3RhdGVGbGFncz4oR1RLX1NUQVRFX0ZMQUdfU0VMRUNURUQgfCBHVEtfU1RBVEVf
RkxBR19GT0NVU0VEKSwgU3R5bGVDb2xvckJhY2tncm91bmQpOwogfQogCi1Db2xvciBSZW5kZXJU
aGVtZUd0azo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0
CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWVHdGs6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogewogICAgIHJldHVybiBzdHlsZUNvbG9yKEdUS19UWVBF
X0VOVFJZLCBHVEtfU1RBVEVfRkxBR19TRUxFQ1RFRCwgU3R5bGVDb2xvckJhY2tncm91bmQpOwog
fQogCi1Db2xvciBSZW5kZXJUaGVtZUd0azo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3Jv
dW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlclRoZW1lR3RrOjpwbGF0Zm9ybUFj
dGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0eWxl
Q29sb3IoR1RLX1RZUEVfRU5UUlksIHN0YXRpY19jYXN0PEd0a1N0YXRlRmxhZ3M+KEdUS19TVEFU
RV9GTEFHX1NFTEVDVEVEIHwgR1RLX1NUQVRFX0ZMQUdfRk9DVVNFRCksIFN0eWxlQ29sb3JGb3Jl
Z3JvdW5kKTsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVHdGs6OnBsYXRmb3JtSW5hY3RpdmVTZWxl
Y3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlclRoZW1lR3Rr
OjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gc3R5bGVDb2xvcihHVEtfVFlQRV9FTlRSWSwgR1RLX1NUQVRFX0ZMQUdfU0VMRUNU
RUQsIFN0eWxlQ29sb3JGb3JlZ3JvdW5kKTsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVHdGs6OnBs
YXRmb3JtQWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CitPcHRp
b25hbFJHQkEgUmVuZGVyVGhlbWVHdGs6OnBsYXRmb3JtQWN0aXZlTGlzdEJveFNlbGVjdGlvbkJh
Y2tncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0eWxlQ29sb3IoR1RLX1RZUEVf
VFJFRV9WSUVXLCBzdGF0aWNfY2FzdDxHdGtTdGF0ZUZsYWdzPihHVEtfU1RBVEVfRkxBR19TRUxF
Q1RFRCB8IEdUS19TVEFURV9GTEFHX0ZPQ1VTRUQpLCBTdHlsZUNvbG9yQmFja2dyb3VuZCk7CiB9
CiAKLUNvbG9yIFJlbmRlclRoZW1lR3RrOjpwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWVHdGs6OnBs
YXRmb3JtSW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gc3R5bGVDb2xvcihHVEtfVFlQRV9UUkVFX1ZJRVcsIEdUS19TVEFURV9GTEFH
X1NFTEVDVEVELCBTdHlsZUNvbG9yQmFja2dyb3VuZCk7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1l
R3RrOjpwbGF0Zm9ybUFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25z
dAorT3B0aW9uYWxSR0JBIFJlbmRlclRoZW1lR3RrOjpwbGF0Zm9ybUFjdGl2ZUxpc3RCb3hTZWxl
Y3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAogewogICAgIHJldHVybiBzdHlsZUNvbG9yKEdU
S19UWVBFX1RSRUVfVklFVywgc3RhdGljX2Nhc3Q8R3RrU3RhdGVGbGFncz4oR1RLX1NUQVRFX0ZM
QUdfU0VMRUNURUQgfCBHVEtfU1RBVEVfRkxBR19GT0NVU0VEKSwgU3R5bGVDb2xvckZvcmVncm91
bmQpOwogfQogCi1Db2xvciBSZW5kZXJUaGVtZUd0azo6cGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hT
ZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlclRoZW1l
R3RrOjpwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIHN0eWxlQ29sb3IoR1RLX1RZUEVfVFJFRV9WSUVXLCBHVEtfU1RB
VEVfRkxBR19TRUxFQ1RFRCwgU3R5bGVDb2xvckZvcmVncm91bmQpOwogfQogCi1Db2xvciBSZW5k
ZXJUaGVtZUd0azo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlkKSBjb25zdAorT3B0
aW9uYWxSR0JBIFJlbmRlclRoZW1lR3RrOjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUlEIGNzc1ZhbHVl
SWQpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChjc3NWYWx1ZUlkKSB7CiAgICAgY2FzZSBDU1NWYWx1
ZUJ1dHRvbnRleHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVHdGsuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5oCmlu
ZGV4IGY5YjcxMGY2ZWNkMzYyNDgxZTMxYzhjNjRhNzhlZjNhNWFiNjNkNmEuLjE2ZjA5NmY0Yzc5
NmExMDVlZGZjM2RmNTk1YTdhZWM3YjA5NjBjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUd0ay5oCkBAIC03MSwyMyArNzEsMjMgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgaW50IGJhc2VsaW5lUG9zaXRpb24oY29uc3QgUmVuZGVyQm94JikgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICAvLyBUaGUgcGxhdGZvcm0gc2VsZWN0aW9uIGNvbG9yLgotICAgIHZpcnR1YWwgQ29s
b3IgcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3IoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtQWN0aXZl
U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBD
b2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBPcHRpb25hbFJHQkEgcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdC
QSBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBPcHRpb25hbFJHQkEgcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBw
bGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICAvLyBMaXN0IEJveCBzZWxlY3Rpb24gY29sb3IKLSAgICB2aXJ0dWFsIENvbG9yIHBs
YXRmb3JtQWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9y
ZWdyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9y
bUluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBw
bGF0Zm9ybUFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBwbGF0Zm9ybUFjdGl2ZUxpc3RCb3hTZWxl
Y3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIE9wdGlv
bmFsUkdCQSBwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHBsYXRmb3JtSW5hY3Rp
dmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICB2aXJ0dWFsIGRvdWJsZSBjYXJldEJsaW5rSW50ZXJ2YWwoKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNvbG9yc0RpZENoYW5nZSgpIG92ZXJyaWRlOwogCiAg
ICAgLy8gU3lzdGVtIGNvbG9ycy4KLSAgICB2aXJ0dWFsIENvbG9yIHN5c3RlbUNvbG9yKENTU1Zh
bHVlSUQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHN5c3RlbUNv
bG9yKENTU1ZhbHVlSUQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIHBvcHNN
ZW51QnlTcGFjZU9yUmV0dXJuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBA
IC0xOTIsOSArMTkyLDkgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBJbnRSZWN0IGNhbGN1bGF0
ZVByb2dyZXNzUmVjdChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAg
ICBtdXRhYmxlIENvbG9yIG1fcGFuZWxDb2xvcjsKLSAgICBtdXRhYmxlIENvbG9yIG1fc2xpZGVy
Q29sb3I7Ci0gICAgbXV0YWJsZSBDb2xvciBtX3NsaWRlclRodW1iQ29sb3I7CisgICAgbXV0YWJs
ZSBPcHRpb25hbFJHQkEgbV9wYW5lbENvbG9yOworICAgIG11dGFibGUgT3B0aW9uYWxSR0JBIG1f
c2xpZGVyQ29sb3I7CisgICAgbXV0YWJsZSBPcHRpb25hbFJHQkEgbV9zbGlkZXJUaHVtYkNvbG9y
OwogICAgIGNvbnN0IGludCBtX21lZGlhSWNvblNpemU7CiAgICAgY29uc3QgaW50IG1fbWVkaWFT
bGlkZXJIZWlnaHQ7CiAjZW5kaWYgLy8gR1RLX0FQSV9WRVJTSU9OXzIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKaW5kZXggNGFjZDBhNmU0ZDUzZGMzOTQ0NDI5YWI4
MDUzZTFiMTJmYjU1MWU1OC4uMjIzNzY3MmJlOGJiZTE0ODBlZGMzYzljYWFmYjEzNzhmMzk3ZTE0
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKQEAgLTUyLDcg
KzUyLDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDYWNoZWRTeXN0ZW1G
b250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCwgRm9udERlc2NyaXB0aW9uJikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihjb25zdCBSZW5kZXJCb3gmKSBj
b25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRyb2xTdHlsZWQoY29uc3Qg
UmVuZGVyU3R5bGUmLCBjb25zdCBCb3JkZXJEYXRhJiwgY29uc3QgRmlsbExheWVyJiBiYWNrZ3Jv
dW5kLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNDb250cm9sU3R5bGVkKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgQm9y
ZGVyRGF0YSYsIGNvbnN0IEZpbGxMYXllciYgYmFja2dyb3VuZCwgY29uc3QgT3B0aW9uYWxSR0JB
JiBiYWNrZ3JvdW5kQ29sb3IpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gTWV0aG9kcyBmb3Ig
ZWFjaCBhcHBlYXJhbmNlIHZhbHVlLgogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RDaGVja2JveFN0
eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlk
ZTsKQEAgLTk1LDExICs5NSwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGFkanVz
dFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCop
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkRGVjb3Jh
dGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQ29sb3IgcGxh
dGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3Vu
ZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBPcHRpb25hbFJHQkEgcGxhdGZv
cm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwogCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtVGFwSGln
aGxpZ2h0Q29sb3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAweDREMUExQTFBOyB9CisgICAg
dmlydHVhbCBPcHRpb25hbFJHQkEgcGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIDB4NEQxQTFBMUE7IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCBib29s
IHNob3VsZEhhdmVTcGluQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQmKSBjb25zdCBvdmVycmlkZTsK
QEAgLTExNCwxNSArMTE0LDE1IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyVGhlbWVJT1MoKTsKICAg
ICB2aXJ0dWFsIH5SZW5kZXJUaGVtZUlPUygpIHsgfQogCi0gICAgY29uc3QgQ29sb3ImIHNoYWRv
d0NvbG9yKCkgY29uc3Q7CisgICAgY29uc3QgT3B0aW9uYWxSR0JBJiBzaGFkb3dDb2xvcigpIGNv
bnN0OwogICAgIEZsb2F0UmVjdCBhZGRSb3VuZGVkQm9yZGVyQ2xpcChjb25zdCBSZW5kZXJPYmpl
Y3QmIGJveCwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgdmlydHVh
bCBDb2xvciBzeXN0ZW1Db2xvcihDU1NWYWx1ZUlEKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIE9wdGlvbmFsUkdCQSBzeXN0ZW1Db2xvcihDU1NWYWx1ZUlEKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIFN0cmluZyBtX21lZGlhQ29udHJvbHNTY3JpcHQ7CiAgICAgU3RyaW5nIG1fbWVkaWFD
b250cm9sc1N0eWxlU2hlZXQ7CiAKLSAgICBtdXRhYmxlIEhhc2hNYXA8aW50LCBDb2xvcj4gbV9z
eXN0ZW1Db2xvckNhY2hlOworICAgIG11dGFibGUgSGFzaE1hcDxpbnQsIE9wdGlvbmFsUkdCQT4g
bV9zeXN0ZW1Db2xvckNhY2hlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lSU9TLm1tCmluZGV4IDU1NzgyZDE0OTNlMDk2NTdlMjIwMmE0MTE3ZjFkODRlMzUy
MjI2YzcuLjkzZGM1MWQzMWYwZmU3MDM2OTQ1NzQ0NWMxNmY4NDllYjEwNDFiYTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTMxOCw5ICszMTgsOSBA
QCB2b2lkIFJlbmRlclRoZW1lSU9TOjpzZXRDb250ZW50U2l6ZUNhdGVnb3J5KGNvbnN0IFN0cmlu
ZyYgY29udGVudFNpemVDYXRlZ29yeSkKICAgICBfY29udGVudFNpemVDYXRlZ29yeSgpID0gY29u
dGVudFNpemVDYXRlZ29yeTsKIH0KIAotY29uc3QgQ29sb3ImIFJlbmRlclRoZW1lSU9TOjpzaGFk
b3dDb2xvcigpIGNvbnN0Citjb25zdCBPcHRpb25hbFJHQkEmIFJlbmRlclRoZW1lSU9TOjpzaGFk
b3dDb2xvcigpIGNvbnN0CiB7Ci0gICAgc3RhdGljIENvbG9yIGNvbG9yKDAuMGYsIDAuMGYsIDAu
MGYsIDAuN2YpOworICAgIHN0YXRpYyBPcHRpb25hbFJHQkEgY29sb3IoMC4wZiwgMC4wZiwgMC4w
ZiwgMC43Zik7CiAgICAgcmV0dXJuIGNvbG9yOwogfQogCkBAIC0zOTksMTIgKzM5OSwxMiBAQCBi
b29sIFJlbmRlclRoZW1lSU9TOjpwYWludENoZWNrYm94RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVy
T2JqZWN0JiBib3gsIGNvbnN0IFBhaQogICAgICAgICB9OwogCiAgICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MobGluZVdpZHRoKTsKLSAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuN2YpLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9r
ZUNvbG9yKE9wdGlvbmFsUkdCQSgwLjBmLCAwLjBmLCAwLjBmLCAwLjdmKSwgQ29sb3JTcGFjZURl
dmljZVJHQik7CiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdKb2luZWRMaW5lcyhz
aGFkb3csIDMsIHRydWUsIGtDR0xpbmVDYXBTcXVhcmUpOwogCiAgICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5zZXRTdHJva2VUaGlja25lc3Moc3RkOjptaW4oY2xpcC53aWR0aCgpLCBjbGlwLmhl
aWdodCgpKSAqIHRoaWNrbmVzc1JhdGlvKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNl
dFN0cm9rZUNvbG9yKENvbG9yKDEuMGYsIDEuMGYsIDEuMGYsIDI0MCAvIDI1NS4wZiksIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29s
b3IoT3B0aW9uYWxSR0JBKDEuMGYsIDEuMGYsIDEuMGYsIDI0MCAvIDI1NS4wZiksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3Sm9pbmVkTGlu
ZXMobGluZSwgMywgdHJ1ZSk7CiAgICAgfSBlbHNlIHsKQEAgLTQyNSw3ICs0MjUsNyBAQCBpbnQg
UmVuZGVyVGhlbWVJT1M6OmJhc2VsaW5lUG9zaXRpb24oY29uc3QgUmVuZGVyQm94JiBib3gpIGNv
bnN0CiAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpiYXNlbGluZVBvc2l0aW9uKGJveCk7CiB9CiAK
LWJvb2wgUmVuZGVyVGhlbWVJT1M6OmlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUsIGNvbnN0IEJvcmRlckRhdGEmIGJvcmRlciwgY29uc3QgRmlsbExheWVyJiBiYWNrZ3Jv
dW5kLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKSBjb25zdAorYm9vbCBSZW5kZXJUaGVt
ZUlPUzo6aXNDb250cm9sU3R5bGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgQm9y
ZGVyRGF0YSYgYm9yZGVyLCBjb25zdCBGaWxsTGF5ZXImIGJhY2tncm91bmQsIGNvbnN0IE9wdGlv
bmFsUkdCQSYgYmFja2dyb3VuZENvbG9yKSBjb25zdAogewogICAgIC8vIEJ1dHRvbnMgYW5kIE1l
bnVsaXN0QnV0dG9ucyBhcmUgc3R5bGVkIGlmIHRoZXkgY29udGFpbiBhIGJhY2tncm91bmQgaW1h
Z2UuCiAgICAgaWYgKHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBQdXNoQnV0dG9uUGFydCB8fCBzdHls
ZS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RCdXR0b25QYXJ0KQpAQCAtNDY1LDcgKzQ2NSw3IEBA
IGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UmFkaW9EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJP
YmplY3QmIGJveCwgY29uc3QgUGFpbnRJCiAgICAgICAgIGNsaXAuaW5mbGF0ZVgoLWNsaXAud2lk
dGgoKSAqIElubmVySW52ZXJzZVJhdGlvKTsKICAgICAgICAgY2xpcC5pbmZsYXRlWSgtY2xpcC5o
ZWlnaHQoKSAqIElubmVySW52ZXJzZVJhdGlvKTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4
dC0+ZHJhd1JhaXNlZEVsbGlwc2UoY2xpcCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBzaGFkb3dDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmRyYXdSYWlzZWRFbGxpcHNlKGNsaXAsIE9wdGlvbmFsUkdCQTo6d2hpdGUs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIHNoYWRvd0NvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwogCiAgICAgICAgIEZsb2F0U2l6ZSByYWRpdXMoY2xpcC53aWR0aCgpIC8gMi4wZiwgY2xpcC5o
ZWlnaHQoKSAvIDIuMGYpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRS
ZWN0KEZsb2F0Um91bmRlZFJlY3QoY2xpcCwgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVz
KSk7CkBAIC02NzAsNyArNjcwLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlz
dEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdAogICAgICAgICBG
bG9hdFJlY3QgZWxsaXBzZShidXR0b25DbGlwLngoKSArIChidXR0b25DbGlwLndpZHRoKCkgLSBj
b3VudCAqIChzaXplICsgcGFkZGluZykgKyBwYWRkaW5nKSAvIDIuMCwgYnV0dG9uQ2xpcC5tYXhZ
KCkgLSAxMC4wLCBzaXplLCBzaXplKTsKIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNv
dW50OyArK2kpIHsKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3UmFpc2VkRWxs
aXBzZShlbGxpcHNlLCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbG9yKDAu
MGYsIDAuMGYsIDAuMGYsIDAuNWYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAg
IHBhaW50SW5mby5jb250ZXh0LT5kcmF3UmFpc2VkRWxsaXBzZShlbGxpcHNlLCBPcHRpb25hbFJH
QkE6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBPcHRpb25hbFJHQkEoMC4wZiwgMC4wZiwg
MC4wZiwgMC41ZiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICAgICAgZWxsaXBzZS5t
b3ZlKHNpemUgKyBwYWRkaW5nLCAwKTsKICAgICAgICAgfQogICAgIH0gIGVsc2UgewpAQCAtNjg5
LDEyICs2ODksMTIgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRl
Y29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdAogICAgICAgICBzaGFkb3dbMl0g
PSBGbG9hdFBvaW50KGFycm93WzJdLngoKSwgYXJyb3dbMl0ueSgpICsgMS4wZik7CiAKICAgICAg
ICAgZmxvYXQgb3BhY2l0eSA9IGlzUmVhZE9ubHlDb250cm9sKGJveCkgPyAwLjIgOiAwLjU7Ci0g
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigwLjBmLCAwLjBm
LCAwLjBmLCBvcGFjaXR5KSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgb3BhY2l0eSks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ry
b2tlQ29sb3IoT3B0aW9uYWxSR0JBKDAuMGYsIDAuMGYsIDAuMGYsIG9wYWNpdHkpLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihP
cHRpb25hbFJHQkEoMC4wZiwgMC4wZiwgMC4wZiwgb3BhY2l0eSksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0NvbnZleFBvbHlnb24oMywgc2hh
ZG93LCB0cnVlKTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
Q29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoT3B0aW9uYWxSR0JBOjp3
aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5z
ZXRGaWxsQ29sb3IoT3B0aW9uYWxSR0JBOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3Q29udmV4UG9seWdvbigzLCBhcnJvdywgdHJ1
ZSk7CiAgICAgfQogCkBAIC03NzksOSArNzc5LDkgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFp
bnRTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnRJbmZvJgog
CiAgICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCk7CiAgICAgICAgIGlmIChyZWFkb25seSkKLSAgICAgICAgICAgIHBhaW50
SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigxNzgsIDE3OCwgMTc4KSwgQ29sb3JT
cGFjZURldmljZVJHQik7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tl
Q29sb3IoT3B0aW9uYWxSR0JBKDE3OCwgMTc4LCAxNzgpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNv
bG9yKENvbG9yKDc2LCA3NiwgNzYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAg
IHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihPcHRpb25hbFJHQkEoNzYsIDc2LCA3
NiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgICAgIFJldGFpblB0cjxDR011dGFibGVQ
YXRoUmVmPiByb3VuZGVkUmVjdFBhdGggPSBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSk7
CiAgICAgICAgIENHUGF0aEFkZFJvdW5kZWRSZWN0KHJvdW5kZWRSZWN0UGF0aC5nZXQoKSwgMCwg
dHJhY2tDbGlwLCBjb3JuZXJXaWR0aCwgY29ybmVySGVpZ2h0KTsKQEAgLTg2MCwxNCArODYwLDE0
IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2Jq
ZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAKICAgICBjb25zdCBmbG9hdCB2ZXJ0aWNhbFJl
bmRlcmluZ1Bvc2l0aW9uID0gcmVjdC55KCkgKyB2ZXJ0aWNhbE9mZnNldDsKICAgICBSZWZQdHI8
R3JhZGllbnQ+IHN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KHJl
Y3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChyZWN0LngoKSwg
dmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkpOwotICAg
IHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC4wLCBDb2xvcigweDhkLCAweDhkLCAweDhk
KSk7Ci0gICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjQ1LCBDb2xvcigweGVlLCAw
eGVlLCAweGVlKSk7Ci0gICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjU1LCBDb2xv
cigweGVlLCAweGVlLCAweGVlKSk7Ci0gICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgx
LjAsIENvbG9yKDB4OGQsIDB4OGQsIDB4OGQpKTsKKyAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29s
b3JTdG9wKDAuMCwgT3B0aW9uYWxSR0JBKDB4OGQsIDB4OGQsIDB4OGQpKTsKKyAgICBzdHJva2VH
cmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUsIE9wdGlvbmFsUkdCQSgweGVlLCAweGVlLCAweGVl
KSk7CisgICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjU1LCBPcHRpb25hbFJHQkEo
MHhlZSwgMHhlZSwgMHhlZSkpOworICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4w
LCBPcHRpb25hbFJHQkEoMHg4ZCwgMHg4ZCwgMHg4ZCkpOwogICAgIGNvbnRleHQtPnNldFN0cm9r
ZUdyYWRpZW50KHN0cm9rZUdyYWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOwogCiAgICAgQ29sb3JT
cGFjZSBjb2xvclNwYWNlID0gcmVuZGVyZXIuc3R5bGUoKS5jb2xvclNwYWNlKCk7Ci0gICAgY29u
dGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDI1NSwgMjU1LCAyNTUpLCBjb2xvclNwYWNlKTsKKyAg
ICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoT3B0aW9uYWxSR0JBKDI1NSwgMjU1LCAyNTUpLCBjb2xv
clNwYWNlKTsKIAogICAgIFBhdGggdHJhY2tQYXRoOwogICAgIEZsb2F0UmVjdCB0cmFja1JlY3Qo
cmVjdC54KCkgKyAwLjI1LCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC4yNSwgcmVjdC53
aWR0aCgpIC0gMC41LCBwcm9ncmVzc0JhckhlaWdodCAtIDAuNSk7CkBAIC04ODEsOCArODgxLDgg
QEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmpl
Y3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEkKIAogICAgIGZsb2F0IHVwcGVyR3JhZGllbnRIZWln
aHQgPSBwcm9ncmVzc0JhckhlaWdodCAvIDIuOwogICAgIFJlZlB0cjxHcmFkaWVudD4gdXBwZXJH
cmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxS
ZW5kZXJpbmdQb3NpdGlvbiArIDAuNSksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVu
ZGVyaW5nUG9zaXRpb24gKyB1cHBlckdyYWRpZW50SGVpZ2h0IC0gMS41KSk7Ci0gICAgdXBwZXJH
cmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoMTMzLCAxMzMsIDEzMywgMTg4KSk7Ci0g
ICAgdXBwZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3IoMTgsIDE4LCAxOCwgNTEp
KTsKKyAgICB1cHBlckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC4wLCBPcHRpb25hbFJHQkEoMTMz
LCAxMzMsIDEzMywgMTg4KSk7CisgICAgdXBwZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwg
T3B0aW9uYWxSR0JBKDE4LCAxOCwgMTgsIDUxKSk7CiAgICAgY29udGV4dC0+c2V0RmlsbEdyYWRp
ZW50KHVwcGVyR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CiAKICAgICBjb250ZXh0LT5maWxs
UmVjdChGbG9hdFJlY3QocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24sIHJlY3Qu
d2lkdGgoKSwgdXBwZXJHcmFkaWVudEhlaWdodCkpOwpAQCAtODkzLDE4ICs4OTMsMTggQEAgYm9v
bCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJl
bmRlcmVyLCBjb25zdCBQYWludEkKICAgICAgICAgZG91YmxlIHBvc2l0aW9uID0gY2xhbXBUbyhy
ZW5kZXJQcm9ncmVzcy5wb3NpdGlvbigpLCAwLjAsIDEuMCk7CiAgICAgICAgIGRvdWJsZSBiYXJX
aWR0aCA9IHBvc2l0aW9uICogcmVjdC53aWR0aCgpOwogICAgICAgICBSZWZQdHI8R3JhZGllbnQ+
IGJhckdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0
aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGlj
YWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkpOwotICAgICAgICBi
YXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoMTk1LCAyMTcsIDI0NykpOwotICAg
ICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUsIENvbG9yKDExOCwgMTY0LCAyMjgp
KTsKLSAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjQ5LCBDb2xvcigxMTgsIDE2
NCwgMjI4KSk7Ci0gICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41MSwgQ29sb3Io
MzYsIDExNCwgMjEwKSk7Ci0gICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41NSwg
Q29sb3IoMzYsIDExNCwgMjEwKSk7Ci0gICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
MS4wLCBDb2xvcig1NywgMTQyLCAyNDQpKTsKKyAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9y
U3RvcCgwLjAsIE9wdGlvbmFsUkdCQSgxOTUsIDIxNywgMjQ3KSk7CisgICAgICAgIGJhckdyYWRp
ZW50LT5hZGRDb2xvclN0b3AoMC40NSwgT3B0aW9uYWxSR0JBKDExOCwgMTY0LCAyMjgpKTsKKyAg
ICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjQ5LCBPcHRpb25hbFJHQkEoMTE4LCAx
NjQsIDIyOCkpOworICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNTEsIE9wdGlv
bmFsUkdCQSgzNiwgMTE0LCAyMTApKTsKKyAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3Rv
cCgwLjU1LCBPcHRpb25hbFJHQkEoMzYsIDExNCwgMjEwKSk7CisgICAgICAgIGJhckdyYWRpZW50
LT5hZGRDb2xvclN0b3AoMS4wLCBPcHRpb25hbFJHQkEoNTcsIDE0MiwgMjQ0KSk7CiAgICAgICAg
IGNvbnRleHQtPnNldEZpbGxHcmFkaWVudChiYXJHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsK
IAogICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGJhclN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6
OmNyZWF0ZShGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwg
RmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNz
QmFySGVpZ2h0IC0gMSkpOwotICAgICAgICBiYXJTdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9w
KDAuMCwgQ29sb3IoOTUsIDEwNywgMTgzKSk7Ci0gICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5h
ZGRDb2xvclN0b3AoMC41LCBDb2xvcig2NiwgMTA2LCAxNzQsIDI0MCkpOwotICAgICAgICBiYXJT
dHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3IoMzgsIDEwNCwgMTY2KSk7Cisg
ICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC4wLCBPcHRpb25hbFJHQkEo
OTUsIDEwNywgMTgzKSk7CisgICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
MC41LCBPcHRpb25hbFJHQkEoNjYsIDEwNiwgMTc0LCAyNDApKTsKKyAgICAgICAgYmFyU3Ryb2tl
R3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLjAsIE9wdGlvbmFsUkdCQSgzOCwgMTA0LCAxNjYpKTsK
ICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoYmFyU3Ryb2tlR3JhZGllbnQucmVs
ZWFzZU5vbk51bGwoKSk7CiAKICAgICAgICAgUGF0aCBiYXJQYXRoOwpAQCAtMTAxNyw3ICsxMDE3
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNvbkRlY29yYXRpb25z
KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFIKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKIAogICAgIEludFNpemUgY29ybmVy
U2l6ZShrVGh1bWJuYWlsQm9yZGVyQ29ybmVyUmFkaXVzLCBrVGh1bWJuYWlsQm9yZGVyQ29ybmVy
UmFkaXVzKTsKLSAgICBDb2xvciBwaWN0dXJlRnJhbWVDb2xvciA9IGJ1dHRvblJlbmRlcmVyLnN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpOwor
ICAgIE9wdGlvbmFsUkdCQSBwaWN0dXJlRnJhbWVDb2xvciA9IGJ1dHRvblJlbmRlcmVyLnN0eWxl
KCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpOwogCiAg
ICAgSW50UmVjdCB0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0ID0gcmVjdDsKICAgICBJbnRSZWN0
IHRodW1ibmFpbFJlY3QgPSByZWN0OwpAQCAtMTAzMCw3ICsxMDMwLDcgQEAgYm9vbCBSZW5kZXJU
aGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVj
dCYsIGNvbnN0IFIKICAgICAgICAgdGh1bWJuYWlsUmVjdC5jb250cmFjdChrTXVsdGlwbGVUaHVt
Ym5haWxTaHJpbmtTaXplLCBrTXVsdGlwbGVUaHVtYm5haWxTaHJpbmtTaXplKTsKIAogICAgICAg
ICAvLyBCYWNrZ3JvdW5kIHBpY3R1cmUgZnJhbWUgYW5kIHNpbXBsZSBiYWNrZ3JvdW5kIGljb24g
d2l0aCBhIGdyYWRpZW50IG1hdGNoaW5nIHRoZSBidXR0b24uCi0gICAgICAgIENvbG9yIGJhY2tn
cm91bmRJbWFnZUNvbG9yID0gQ29sb3IoYnV0dG9uUmVuZGVyZXIuc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLnJnYigpKTsKKyAgICAgICAg
T3B0aW9uYWxSR0JBIGJhY2tncm91bmRJbWFnZUNvbG9yID0gT3B0aW9uYWxSR0JBKGJ1dHRvblJl
bmRlcmVyLnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKS5yZ2IoKSk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJl
Y3QoRmxvYXRSb3VuZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3JuZXJTaXpl
LCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplKSwgcGljdHVyZUZyYW1lQ29sb3Is
IENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJl
Y3QodGh1bWJuYWlsUmVjdCwgYmFja2dyb3VuZEltYWdlQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwogICAgICAgICB7CkBAIC0xMDU4LDE0ICsxMDU4LDE0IEBAIGJvb2wgUmVuZGVyVGhlbWVJ
T1M6OnBhaW50RmlsZVVwbG9hZEljb25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmLCBj
b25zdCBSCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1Db2xvciBSZW5kZXJUaGVtZUlPUzo6cGxh
dGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JB
IFJlbmRlclRoZW1lSU9TOjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIENvbG9yOjp0cmFuc3BhcmVudDsKKyAgICByZXR1cm4gT3B0
aW9uYWxSR0JBOjp0cmFuc3BhcmVudDsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVJT1M6OnBsYXRm
b3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JB
IFJlbmRlclRoZW1lSU9TOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9y
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50OworICAgIHJldHVybiBP
cHRpb25hbFJHQkE6OnRyYW5zcGFyZW50OwogfQogCiBib29sIFJlbmRlclRoZW1lSU9TOjpzaG91
bGRIYXZlU3BpbkJ1dHRvbihIVE1MSW5wdXRFbGVtZW50JikgY29uc3QKQEAgLTEzMDEsMTMgKzEz
MDEsMTMgQEAgU3RyaW5nIFJlbmRlclRoZW1lSU9TOjptZWRpYUNvbnRyb2xzU2NyaXB0KCkKIH0K
ICNlbmRpZiAvLyBFTkFCTEUoVklERU8pCiAKLUNvbG9yIFJlbmRlclRoZW1lSU9TOjpzeXN0ZW1D
b2xvcihDU1NWYWx1ZUlEIGNzc1ZhbHVlSUQpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhl
bWVJT1M6OnN5c3RlbUNvbG9yKENTU1ZhbHVlSUQgY3NzVmFsdWVJRCkgY29uc3QKIHsKLSAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fc3lzdGVtQ29sb3JDYWNoZS5hZGQoY3NzVmFsdWVJRCwgQ29sb3Io
KSk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3N5c3RlbUNvbG9yQ2FjaGUuYWRkKGNzc1ZhbHVl
SUQsIE9wdGlvbmFsUkdCQSgpKTsKICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAg
ICAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIAotICAgIENvbG9yIGNvbG9y
OworICAgIE9wdGlvbmFsUkdCQSBjb2xvcjsKICAgICBzd2l0Y2ggKGNzc1ZhbHVlSUQpIHsKICAg
ICBjYXNlIENTU1ZhbHVlQXBwbGVXaXJlbGVzc1BsYXliYWNrVGFyZ2V0QWN0aXZlOgogICAgICAg
ICBjb2xvciA9IFtnZXRVSUNvbG9yQ2xhc3MoKSBzeXN0ZW1CbHVlQ29sb3JdLkNHQ29sb3I7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCmluZGV4IGUyZTA2MDg0ZWQw
ZGQxNDJiZWUxYzUwYjgzYTlkMDJiNjhlNjJlZGYuLjQ2NDVhYzZkNTQ2OGYwYTEyZDE3MmM0MmM2
OTRiYzM3NjQ5MTM4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5oCkBAIC01MiwxNSArNTIsMTUgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGFkanVz
dFJlcGFpbnRSZWN0KGNvbnN0IFJlbmRlck9iamVjdCYsIEZsb2F0UmVjdCYpIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCBib29sIGlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSYsIGNv
bnN0IEJvcmRlckRhdGEmLCBjb25zdCBGaWxsTGF5ZXImLCBjb25zdCBDb2xvciYgYmFja2dyb3Vu
ZENvbG9yKSBjb25zdCBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3Rp
dmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IENvbG9yIHBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtQWN0aXZlTGlzdEJveFNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQ29sb3IgcGxh
dGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJh
Y2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZv
cm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb250cm9sU3R5bGVkKGNvbnN0IFJlbmRlclN0eWxl
JiwgY29uc3QgQm9yZGVyRGF0YSYsIGNvbnN0IEZpbGxMYXllciYsIGNvbnN0IE9wdGlvbmFsUkdC
QSYgYmFja2dyb3VuZENvbG9yKSBjb25zdCBvdmVycmlkZTsKKworICAgIHZpcnR1YWwgT3B0aW9u
YWxSR0JBIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBPcHRpb25hbFJHQkEgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWxS
R0JBIHBsYXRmb3JtQWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHBsYXRmb3JtQWN0aXZlTGlzdEJv
eFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwg
T3B0aW9uYWxSR0JBIHBsYXRmb3JtSW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBPcHRpb25hbFJHQkEgcGxhdGZvcm1J
bmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBpbnQgcGxhdGZvcm1Gb2N1c1JpbmdNYXhXaWR0aCgpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBTY3JvbGxiYXJDb250cm9sU2l6ZSBzY3JvbGxi
YXJDb250cm9sU2l6ZUZvclBhcnQoQ29udHJvbFBhcnQpIG92ZXJyaWRlIHsgcmV0dXJuIFNtYWxs
U2Nyb2xsYmFyOyB9CkBAIC0xNzcsNyArMTc3LDcgQEAgcHJpdmF0ZToKIAogICAgIEZsb2F0UmVj
dCBjb252ZXJ0VG9QYWludGluZ1JlY3QoY29uc3QgUmVuZGVyT2JqZWN0JiBpbnB1dFJlbmRlcmVy
LCBjb25zdCBSZW5kZXJPYmplY3QmIHBhcnRSZW5kZXJlciwgY29uc3QgRmxvYXRSZWN0JiBpbnB1
dFJlY3QsIGNvbnN0IEludFJlY3QmKSBjb25zdDsKIAotICAgIHZpcnR1YWwgQ29sb3Igc3lzdGVt
Q29sb3IoQ1NTVmFsdWVJRCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBPcHRpb25hbFJH
QkEgc3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBHZXQg
dGhlIGNvbnRyb2wgc2l6ZSBiYXNlZCBvZmYgdGhlIGZvbnQuIFVzZWQgYnkgc29tZSBvZiB0aGUg
Y29udHJvbHMgKGxpa2UgYnV0dG9ucykuCiAgICAgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZUZv
ckZvbnQoUmVuZGVyU3R5bGUmKSBjb25zdDsKQEAgLTI0Nyw3ICsyNDcsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9pc1NsaWRlclRodW1iSG9yaXpvbnRhbFByZXNzZWQ7CiAgICAgYm9vbCBtX2lz
U2xpZGVyVGh1bWJWZXJ0aWNhbFByZXNzZWQ7CiAKLSAgICBtdXRhYmxlIEhhc2hNYXA8aW50LCBD
b2xvcj4gbV9zeXN0ZW1Db2xvckNhY2hlOworICAgIG11dGFibGUgSGFzaE1hcDxpbnQsIE9wdGlv
bmFsUkdCQT4gbV9zeXN0ZW1Db2xvckNhY2hlOwogCiAgICAgUmV0YWluUHRyPFdlYkNvcmVSZW5k
ZXJUaGVtZU5vdGlmaWNhdGlvbk9ic2VydmVyPiBtX25vdGlmaWNhdGlvbk9ic2VydmVyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggOTQxZTBhNGNi
ZDRlYjAzYTIwNGM5YWM5MzM2YjIyZDZlNWQ5Mjg1NC4uMGU1ZWNjMzhiNDAyZTQ2MmE2OTQ1MmJj
YTY4NzU3YTQ5NDIxZTQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbQpAQCAtMjcwLDM1ICsyNzAsMzUgQEAgU3RyaW5nIFJlbmRlclRoZW1lTWFjOjppbWFn
ZUNvbnRyb2xzU3R5bGVTaGVldCgpIGNvbnN0CiB9CiAjZW5kaWYKIAotQ29sb3IgUmVuZGVyVGhl
bWVNYWM6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK09w
dGlvbmFsUkdCQSBSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdAogewogICAgIE5TQ29sb3IqIGNvbG9yID0gW1tOU0NvbG9yIHNlbGVj
dGVkVGV4dEJhY2tncm91bmRDb2xvcl0gY29sb3JVc2luZ0NvbG9yU3BhY2VOYW1lOk5TRGV2aWNl
UkdCQ29sb3JTcGFjZV07Ci0gICAgcmV0dXJuIENvbG9yKHN0YXRpY19jYXN0PGludD4oMjU1LjAg
KiBbY29sb3IgcmVkQ29tcG9uZW50XSksIHN0YXRpY19jYXN0PGludD4oMjU1LjAgKiBbY29sb3Ig
Z3JlZW5Db21wb25lbnRdKSwgc3RhdGljX2Nhc3Q8aW50PigyNTUuMCAqIFtjb2xvciBibHVlQ29t
cG9uZW50XSkpOworICAgIHJldHVybiBPcHRpb25hbFJHQkEoc3RhdGljX2Nhc3Q8aW50PigyNTUu
MCAqIFtjb2xvciByZWRDb21wb25lbnRdKSwgc3RhdGljX2Nhc3Q8aW50PigyNTUuMCAqIFtjb2xv
ciBncmVlbkNvbXBvbmVudF0pLCBzdGF0aWNfY2FzdDxpbnQ+KDI1NS4wICogW2NvbG9yIGJsdWVD
b21wb25lbnRdKSk7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybUluYWN0aXZl
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5kZXJUaGVt
ZU1hYzo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7
CiAgICAgTlNDb2xvciogY29sb3IgPSBbW05TQ29sb3Igc2Vjb25kYXJ5U2VsZWN0ZWRDb250cm9s
Q29sb3JdIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTpOU0RldmljZVJHQkNvbG9yU3BhY2VdOwot
ICAgIHJldHVybiBDb2xvcihzdGF0aWNfY2FzdDxpbnQ+KDI1NS4wICogW2NvbG9yIHJlZENvbXBv
bmVudF0pLCBzdGF0aWNfY2FzdDxpbnQ+KDI1NS4wICogW2NvbG9yIGdyZWVuQ29tcG9uZW50XSks
IHN0YXRpY19jYXN0PGludD4oMjU1LjAgKiBbY29sb3IgYmx1ZUNvbXBvbmVudF0pKTsKKyAgICBy
ZXR1cm4gT3B0aW9uYWxSR0JBKHN0YXRpY19jYXN0PGludD4oMjU1LjAgKiBbY29sb3IgcmVkQ29t
cG9uZW50XSksIHN0YXRpY19jYXN0PGludD4oMjU1LjAgKiBbY29sb3IgZ3JlZW5Db21wb25lbnRd
KSwgc3RhdGljX2Nhc3Q8aW50PigyNTUuMCAqIFtjb2xvciBibHVlQ29tcG9uZW50XSkpOwogfQog
Ci1Db2xvciBSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5kZXJUaGVtZU1hYzo6cGxhdGZv
cm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIHsKICAgICBO
U0NvbG9yKiBjb2xvciA9IFtbTlNDb2xvciBhbHRlcm5hdGVTZWxlY3RlZENvbnRyb2xDb2xvcl0g
Y29sb3JVc2luZ0NvbG9yU3BhY2VOYW1lOk5TRGV2aWNlUkdCQ29sb3JTcGFjZV07Ci0gICAgcmV0
dXJuIENvbG9yKHN0YXRpY19jYXN0PGludD4oMjU1LjAgKiBbY29sb3IgcmVkQ29tcG9uZW50XSks
IHN0YXRpY19jYXN0PGludD4oMjU1LjAgKiBbY29sb3IgZ3JlZW5Db21wb25lbnRdKSwgc3RhdGlj
X2Nhc3Q8aW50PigyNTUuMCAqIFtjb2xvciBibHVlQ29tcG9uZW50XSkpOworICAgIHJldHVybiBP
cHRpb25hbFJHQkEoc3RhdGljX2Nhc3Q8aW50PigyNTUuMCAqIFtjb2xvciByZWRDb21wb25lbnRd
KSwgc3RhdGljX2Nhc3Q8aW50PigyNTUuMCAqIFtjb2xvciBncmVlbkNvbXBvbmVudF0pLCBzdGF0
aWNfY2FzdDxpbnQ+KDI1NS4wICogW2NvbG9yIGJsdWVDb21wb25lbnRdKSk7CiB9CiAKLUNvbG9y
IFJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybUFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5k
Q29sb3IoKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybUFjdGl2
ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAogewotICAgIHJldHVybiBD
b2xvcjo6d2hpdGU7CisgICAgcmV0dXJuIE9wdGlvbmFsUkdCQTo6d2hpdGU7CiB9CiAKLUNvbG9y
IFJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91
bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtSW5h
Y3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gQ29sb3I6OmJsYWNrOworICAgIHJldHVybiBPcHRpb25hbFJHQkE6OmJsYWNrOwogfQogCi1D
b2xvciBSZW5kZXJUaGVtZU1hYzo6cGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpIGNvbnN0CitPcHRp
b25hbFJHQkEgUmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdAog
ewogICAgIGlmICh1c2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvcigpKQogICAgICAgICByZXR1cm4g
b2xkQXF1YUZvY3VzUmluZ0NvbG9yKCk7CkBAIC0zMTMsNyArMzEzLDcgQEAgaW50IFJlbmRlclRo
ZW1lTWFjOjpwbGF0Zm9ybUZvY3VzUmluZ01heFdpZHRoKCkgY29uc3QKICAgICByZXR1cm4gMDsK
IH0KIAotQ29sb3IgUmVuZGVyVGhlbWVNYWM6OnBsYXRmb3JtSW5hY3RpdmVMaXN0Qm94U2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5kZXJUaGVtZU1hYzo6
cGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAog
ewogICAgIHJldHVybiBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7
CiB9CkBAIC00NjUsMTMgKzQ2NSwxMyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwbGF0Zm9ybUNv
bG9yc0RpZENoYW5nZSgpCiAgICAgUmVuZGVyVGhlbWU6OnBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdl
KCk7CiB9CiAKLUNvbG9yIFJlbmRlclRoZW1lTWFjOjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUlEIGNz
c1ZhbHVlSUQpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWVNYWM6OnN5c3RlbUNvbG9y
KENTU1ZhbHVlSUQgY3NzVmFsdWVJRCkgY29uc3QKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
c3lzdGVtQ29sb3JDYWNoZS5hZGQoY3NzVmFsdWVJRCwgQ29sb3IoKSk7CisgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX3N5c3RlbUNvbG9yQ2FjaGUuYWRkKGNzc1ZhbHVlSUQsIE9wdGlvbmFsUkdCQSgp
KTsKICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm4gYWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZTsKIAotICAgIENvbG9yIGNvbG9yOworICAgIE9wdGlvbmFsUkdC
QSBjb2xvcjsKICAgICBzd2l0Y2ggKGNzc1ZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlQWN0
aXZlYm9yZGVyOgogICAgICAgICBjb2xvciA9IGNvbnZlcnROU0NvbG9yVG9Db2xvcihbTlNDb2xv
ciBrZXlib2FyZEZvY3VzSW5kaWNhdG9yQ29sb3JdKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBDb2xv
ciBSZW5kZXJUaGVtZU1hYzo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlEKSBjb25z
dAogICAgIGNhc2UgQ1NTVmFsdWVBY3RpdmVidXR0b250ZXh0OgogI2lmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCiAgICAgICAgIC8vIFRoZXJlIGlzIG5vIGNvcnJl
c3BvbmRpbmcgTlNDb2xvciBmb3IgdGhpcyBzbyB3ZSB1c2UgYSBoYXJkIGNvZGVkIHZhbHVlLgot
ICAgICAgICBjb2xvciA9IENvbG9yOjp3aGl0ZTsKKyAgICAgICAgY29sb3IgPSBPcHRpb25hbFJH
QkE6OndoaXRlOwogI2Vsc2UKICAgICAgICAgY29sb3IgPSBjb252ZXJ0TlNDb2xvclRvQ29sb3Io
W05TQ29sb3IgY29udHJvbFRleHRDb2xvcl0pOwogI2VuZGlmCkBAIC02MjYsNyArNjI2LDcgQEAg
Ym9vbCBSZW5kZXJUaGVtZU1hYzo6dXNlc1Rlc3RNb2RlRm9jdXNSaW5nQ29sb3IoKSBjb25zdAog
fQogCiBib29sIFJlbmRlclRoZW1lTWFjOjppc0NvbnRyb2xTdHlsZWQoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBjb25zdCBCb3JkZXJEYXRhJiBib3JkZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgRmlsbExheWVyJiBiYWNrZ3JvdW5kLCBjb25zdCBDb2xv
ciYgYmFja2dyb3VuZENvbG9yKSBjb25zdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEZpbGxMYXllciYgYmFja2dyb3VuZCwgY29uc3QgT3B0aW9uYWxSR0JBJiBi
YWNrZ3JvdW5kQ29sb3IpIGNvbnN0CiB7CiAgICAgaWYgKHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBU
ZXh0RmllbGRQYXJ0IHx8IHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBUZXh0QXJlYVBhcnQgfHwgc3R5
bGUuYXBwZWFyYW5jZSgpID09IExpc3Rib3hQYXJ0KQogICAgICAgICByZXR1cm4gc3R5bGUuYm9y
ZGVyKCkgIT0gYm9yZGVyOwpAQCAtMTMyNiw4ICsxMzI2LDggQEAgYm9vbCBSZW5kZXJUaGVtZU1h
Yzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgcmVuZGVy
ZXIsIGMKICAgICAvLyBEcmF3IHRoZSBib3R0b20gYXJyb3cKICAgICBwYWludEluZm8uY29udGV4
dC0+ZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3cyLCB0cnVlKTsKIAotICAgIENvbG9yIGxlZnRT
ZXBhcmF0b3JDb2xvcigwLCAwLCAwLCA0MCk7Ci0gICAgQ29sb3IgcmlnaHRTZXBhcmF0b3JDb2xv
cigyNTUsIDI1NSwgMjU1LCA0MCk7CisgICAgT3B0aW9uYWxSR0JBIGxlZnRTZXBhcmF0b3JDb2xv
cigwLCAwLCAwLCA0MCk7CisgICAgT3B0aW9uYWxSR0JBIHJpZ2h0U2VwYXJhdG9yQ29sb3IoMjU1
LCAyNTUsIDI1NSwgNDApOwogCiAgICAgLy8gRklYTUU6IFNob3VsZCB0aGUgc2VwYXJhdG9yIHRo
aWNrbmVzcyBhbmQgc3BhY2UgYmUgc2NhbGVkIHVwIGJ5IGZvbnRTY2FsZT8KICAgICBpbnQgc2Vw
YXJhdG9yU3BhY2UgPSAyOyAvLyBEZWxpYmVyYXRlbHkgaWdub3JlcyB6b29tIHNpbmNlIGl0IGxv
b2tzIG5pY2VyIGlmIGl0IHN0YXlzIHRoaW4uCkBAIC0xMzY3LDcgKzEzNjcsNyBAQCB2b2lkIFJl
bmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIsIFJlbmRlclN0eQogCiAgICAgLy8gU2V0IHRoZSBmb3JlZ3JvdW5kIGNvbG9yIHRvIGJs
YWNrIG9yIGdyYXkgd2hlbiB3ZSBoYXZlIHRoZSBhcXVhIGxvb2suCiAgICAgLy8gQ2FzdCB0byBS
R0IzMiBpcyB0byB3b3JrIGFyb3VuZCBhIGNvbXBpbGVyIGJ1Zy4KLSAgICBzdHlsZS5zZXRDb2xv
cihlICYmICFlLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSA/IHN0YXRpY19jYXN0PFJHQkEzMj4o
Q29sb3I6OmJsYWNrKSA6IENvbG9yOjpkYXJrR3JheSk7CisgICAgc3R5bGUuc2V0Q29sb3IoZSAm
JiAhZS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkgPyBzdGF0aWNfY2FzdDxSR0JBMzI+KE9wdGlv
bmFsUkdCQTo6YmxhY2spIDogT3B0aW9uYWxSR0JBOjpkYXJrR3JheSk7CiAKICAgICAvLyBTZXQg
dGhlIGJ1dHRvbidzIHZlcnRpY2FsIHNpemUuCiAgICAgc2V0U2l6ZUZyb21Gb250KHN0eWxlLCBt
ZW51TGlzdEJ1dHRvblNpemVzKCkpOwpAQCAtMjEyMiw4ICsyMTIyLDggQEAgY29uc3QgQ0dGbG9h
dCBhdHRhY2htZW50SWNvblNlbGVjdGlvbkJvcmRlclRoaWNrbmVzcyA9IDE7CiBjb25zdCBDR0Zs
b2F0IGF0dGFjaG1lbnRJY29uQmFja2dyb3VuZFJhZGl1cyA9IDM7CiBjb25zdCBDR0Zsb2F0IGF0
dGFjaG1lbnRJY29uVG9UaXRsZU1hcmdpbiA9IDI7CiAKLXN0YXRpYyBDb2xvciBhdHRhY2htZW50
SWNvbkJhY2tncm91bmRDb2xvcigpIHsgcmV0dXJuIENvbG9yKDAsIDAsIDAsIDMwKTsgfQotc3Rh
dGljIENvbG9yIGF0dGFjaG1lbnRJY29uQm9yZGVyQ29sb3IoKSB7IHJldHVybiBDb2xvcigyNTUs
IDI1NSwgMjU1LCAxMjUpOyB9CitzdGF0aWMgT3B0aW9uYWxSR0JBIGF0dGFjaG1lbnRJY29uQmFj
a2dyb3VuZENvbG9yKCkgeyByZXR1cm4gT3B0aW9uYWxSR0JBKDAsIDAsIDAsIDMwKTsgfQorc3Rh
dGljIE9wdGlvbmFsUkdCQSBhdHRhY2htZW50SWNvbkJvcmRlckNvbG9yKCkgeyByZXR1cm4gT3B0
aW9uYWxSR0JBKDI1NSwgMjU1LCAyNTUsIDEyNSk7IH0KIAogY29uc3QgQ0dGbG9hdCBhdHRhY2ht
ZW50VGl0bGVGb250U2l6ZSA9IDEyOwogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50VGl0bGVCYWNr
Z3JvdW5kUmFkaXVzID0gMzsKQEAgLTIxMzEsMTkgKzIxMzEsMTkgQEAgY29uc3QgQ0dGbG9hdCBh
dHRhY2htZW50VGl0bGVCYWNrZ3JvdW5kUGFkZGluZyA9IDM7CiBjb25zdCBDR0Zsb2F0IGF0dGFj
aG1lbnRUaXRsZU1heGltdW1XaWR0aCA9IDEwMCAtIChhdHRhY2htZW50VGl0bGVCYWNrZ3JvdW5k
UGFkZGluZyAqIDIpOwogY29uc3QgQ0ZJbmRleCBhdHRhY2htZW50VGl0bGVNYXhpbXVtTGluZUNv
dW50ID0gMjsKIAotc3RhdGljIENvbG9yIGF0dGFjaG1lbnRUaXRsZUluYWN0aXZlQmFja2dyb3Vu
ZENvbG9yKCkgeyByZXR1cm4gQ29sb3IoMjA0LCAyMDQsIDIwNCwgMjU1KTsgfQotc3RhdGljIENv
bG9yIGF0dGFjaG1lbnRUaXRsZUluYWN0aXZlVGV4dENvbG9yKCkgeyByZXR1cm4gQ29sb3IoMTAw
LCAxMDAsIDEwMCwgMjU1KTsgfQorc3RhdGljIE9wdGlvbmFsUkdCQSBhdHRhY2htZW50VGl0bGVJ
bmFjdGl2ZUJhY2tncm91bmRDb2xvcigpIHsgcmV0dXJuIE9wdGlvbmFsUkdCQSgyMDQsIDIwNCwg
MjA0LCAyNTUpOyB9CitzdGF0aWMgT3B0aW9uYWxSR0JBIGF0dGFjaG1lbnRUaXRsZUluYWN0aXZl
VGV4dENvbG9yKCkgeyByZXR1cm4gT3B0aW9uYWxSR0JBKDEwMCwgMTAwLCAxMDAsIDI1NSk7IH0K
IAogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50U3VidGl0bGVGb250U2l6ZSA9IDEwOwotc3RhdGlj
IENvbG9yIGF0dGFjaG1lbnRTdWJ0aXRsZVRleHRDb2xvcigpIHsgcmV0dXJuIENvbG9yKDgyLCAx
NDUsIDIxNCwgMjU1KTsgfQorc3RhdGljIE9wdGlvbmFsUkdCQSBhdHRhY2htZW50U3VidGl0bGVU
ZXh0Q29sb3IoKSB7IHJldHVybiBPcHRpb25hbFJHQkEoODIsIDE0NSwgMjE0LCAyNTUpOyB9CiAK
IGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFByb2dyZXNzQmFyV2lkdGggPSAzMDsKIGNvbnN0IENH
RmxvYXQgYXR0YWNobWVudFByb2dyZXNzQmFySGVpZ2h0ID0gNTsKIGNvbnN0IENHRmxvYXQgYXR0
YWNobWVudFByb2dyZXNzQmFyT2Zmc2V0ID0gLTk7CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRQ
cm9ncmVzc0JhckJvcmRlcldpZHRoID0gMTsKLXN0YXRpYyBDb2xvciBhdHRhY2htZW50UHJvZ3Jl
c3NCYXJCYWNrZ3JvdW5kQ29sb3IoKSB7IHJldHVybiBDb2xvcigwLCAwLCAwLCA4OSk7IH0KLXN0
YXRpYyBDb2xvciBhdHRhY2htZW50UHJvZ3Jlc3NCYXJGaWxsQ29sb3IoKSB7IHJldHVybiBDb2xv
cihDb2xvcjo6d2hpdGUpOyB9Ci1zdGF0aWMgQ29sb3IgYXR0YWNobWVudFByb2dyZXNzQmFyQm9y
ZGVyQ29sb3IoKSB7IHJldHVybiBDb2xvcigwLCAwLCAwLCAxMjgpOyB9CitzdGF0aWMgT3B0aW9u
YWxSR0JBIGF0dGFjaG1lbnRQcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcigpIHsgcmV0dXJuIE9w
dGlvbmFsUkdCQSgwLCAwLCAwLCA4OSk7IH0KK3N0YXRpYyBPcHRpb25hbFJHQkEgYXR0YWNobWVu
dFByb2dyZXNzQmFyRmlsbENvbG9yKCkgeyByZXR1cm4gT3B0aW9uYWxSR0JBKE9wdGlvbmFsUkdC
QTo6d2hpdGUpOyB9CitzdGF0aWMgT3B0aW9uYWxSR0JBIGF0dGFjaG1lbnRQcm9ncmVzc0JhckJv
cmRlckNvbG9yKCkgeyByZXR1cm4gT3B0aW9uYWxSR0JBKDAsIDAsIDAsIDEyOCk7IH0KIAogY29u
c3QgQ0dGbG9hdCBhdHRhY2htZW50TWFyZ2luID0gMzsKIApAQCAtMjM4Niw3ICsyMzg2LDcgQEAg
c3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50VGl0bGVCYWNrZ3JvdW5kKGNvbnN0IFJlbmRlckF0
dGFjaG1lbnQmIGF0dGFjaG1lbnQsIEcKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxheW91
dC5saW5lcy5zaXplKCk7ICsraSkKICAgICAgICAgYmFja2dyb3VuZFJlY3RzLmFwcGVuZChsYXlv
dXQubGluZXNbaV0uYmFja2dyb3VuZFJlY3QpOwogCi0gICAgQ29sb3IgYmFja2dyb3VuZENvbG9y
OworICAgIE9wdGlvbmFsUkdCQSBiYWNrZ3JvdW5kQ29sb3I7CiAgICAgaWYgKGF0dGFjaG1lbnQu
ZnJhbWUoKS5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkKICAgICAgICAgYmFja2dy
b3VuZENvbG9yID0gY29udmVydE5TQ29sb3JUb0NvbG9yKFtOU0NvbG9yIGFsdGVybmF0ZVNlbGVj
dGVkQ29udHJvbENvbG9yXSk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKaW5kZXggNTVjMDhkNTY1MjNlOTVmZGU3MjU2M2VjZTI0
ODgxYWYxMDA5MDNjYS4uYTVmODdiNmQwZmJkMjdjN2M4YTM0NmRkYjM1M2Y0NDA4NmY4MDAwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCkBA
IC0xNTMsMjUgKzE1MywyNSBAQCBSZW5kZXJUaGVtZVNhZmFyaTo6flJlbmRlclRoZW1lU2FmYXJp
KCkKIHsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVTYWZhcmk6OnBsYXRmb3JtQWN0aXZlU2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5kZXJUaGVtZVNhZmFy
aTo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogewotICAg
IHJldHVybiBDb2xvcigxODEsIDIxMywgMjU1KTsKKyAgICByZXR1cm4gT3B0aW9uYWxSR0JBKDE4
MSwgMjEzLCAyNTUpOwogfQogCi1Db2xvciBSZW5kZXJUaGVtZVNhZmFyaTo6cGxhdGZvcm1JbmFj
dGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVy
VGhlbWVTYWZhcmk6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBj
b25zdAogewotICAgIHJldHVybiBDb2xvcigyMTIsIDIxMiwgMjEyKTsKKyAgICByZXR1cm4gT3B0
aW9uYWxSR0JBKDIxMiwgMjEyLCAyMTIpOwogfQogCi1Db2xvciBSZW5kZXJUaGVtZVNhZmFyaTo6
YWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CitPcHRpb25hbFJH
QkEgUmVuZGVyVGhlbWVTYWZhcmk6OmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBqdXN0IGJl
IGEgZGFya2VyIHZlcnNpb24gb2YgdGhlIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3Vu
ZENvbG9yCi0gICAgcmV0dXJuIENvbG9yKDU2LCAxMTcsIDIxNSk7CisgICAgcmV0dXJuIE9wdGlv
bmFsUkdCQSg1NiwgMTE3LCAyMTUpOwogfQogCi1Db2xvciBSZW5kZXJUaGVtZVNhZmFyaTo6cGxh
dGZvcm1Gb2N1c1JpbmdDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgUmVuZGVyVGhlbWVTYWZh
cmk6OnBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdAogewotICAgIHN0YXRpYyBDb2xvciBm
b2N1c1JpbmdDb2xvcjsKKyAgICBzdGF0aWMgT3B0aW9uYWxSR0JBIGZvY3VzUmluZ0NvbG9yOwog
CiAgICAgaWYgKCFmb2N1c1JpbmdDb2xvci5pc1ZhbGlkKCkpIHsKICAgICAgICAgaWYgKFNUQ29w
eVRoZW1lQ29sb3JQdHIoKSkgewpAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgUmVuZGVyVGhlbWVT
YWZhcmk6OnVwZGF0ZUNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbihDU1NWYWx1ZUlEIHZhbHVl
SUQsIEZvCiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OmlzQ29udHJvbFN0eWxlZChjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEJvcmRlckRhdGEmIGJvcmRlciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGaWxsTGF5ZXImIGJhY2tncm91bmQs
IGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpIGNvbnN0CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgRmlsbExheWVyJiBiYWNrZ3JvdW5kLCBjb25zdCBPcHRp
b25hbFJHQkEmIGJhY2tncm91bmRDb2xvcikgY29uc3QKIHsKICAgICAvLyBJZiB3ZSBkaWRuJ3Qg
ZmluZCBTYWZhcmlUaGVtZS5kbGwgd2Ugd29uJ3QgYmUgYWJsZSB0byBwYWludCBhbnkgdGhlbWVk
IGNvbnRyb2xzLgogICAgIGlmICghU2FmYXJpVGhlbWVMaWJyYXJ5KCkpCkBAIC04MTEsOCArODEx
LDggQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRp
b25zKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGUKICAgICAvLyBEcmF3IHRoZSBhcnJvdwogICAg
IHBhaW50SW5mby5jb250ZXh0LT5kcmF3Q29udmV4UG9seWdvbigzLCBhcnJvdywgdHJ1ZSk7CiAK
LSAgICBDb2xvciBsZWZ0U2VwYXJhdG9yQ29sb3IoMCwgMCwgMCwgNDApOwotICAgIENvbG9yIHJp
Z2h0U2VwYXJhdG9yQ29sb3IoMjU1LCAyNTUsIDI1NSwgNDApOworICAgIE9wdGlvbmFsUkdCQSBs
ZWZ0U2VwYXJhdG9yQ29sb3IoMCwgMCwgMCwgNDApOworICAgIE9wdGlvbmFsUkdCQSByaWdodFNl
cGFyYXRvckNvbG9yKDI1NSwgMjU1LCAyNTUsIDQwKTsKIAogICAgIC8vIEZJWE1FOiBTaG91bGQg
dGhlIHNlcGFyYXRvciB0aGlja25lc3MgYW5kIHNwYWNlIGJlIHNjYWxlZCB1cCBieSBmb250U2Nh
bGU/CiAgICAgaW50IHNlcGFyYXRvclNwYWNlID0gMjsKQEAgLTg0OCw3ICs4NDgsNyBAQCB2b2lk
IFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIsIFJlbmRlcgogCiAgICAgLy8gU2V0IHRoZSBmb3JlZ3JvdW5kIGNvbG9yIHRv
IGJsYWNrIG9yIGdyYXkgd2hlbiB3ZSBoYXZlIHRoZSBhcXVhIGxvb2suCiAgICAgLy8gQ2FzdCB0
byBSR0IzMiBpcyB0byB3b3JrIGFyb3VuZCBhIGNvbXBpbGVyIGJ1Zy4KLSAgICBzdHlsZS5zZXRD
b2xvcihlICYmICFlLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSA/IHN0YXRpY19jYXN0PFJHQkEz
Mj4oQ29sb3I6OmJsYWNrKSA6IENvbG9yOjpkYXJrR3JheSk7CisgICAgc3R5bGUuc2V0Q29sb3Io
ZSAmJiAhZS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkgPyBzdGF0aWNfY2FzdDxSR0JBMzI+KE9w
dGlvbmFsUkdCQTo6YmxhY2spIDogT3B0aW9uYWxSR0JBOjpkYXJrR3JheSk7CiAKICAgICAvLyBT
ZXQgdGhlIGJ1dHRvbidzIHZlcnRpY2FsIHNpemUuCiAgICAgc2V0QnV0dG9uU2l6ZShzdHlsZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmku
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5oCmluZGV4IDMy
YmVhZDUxMTY4YWNhZTE3Mzc2MTIxZTU0NzI3NjFkM2M2MTYyOGUuLjMzY2M0ZWMwMzRiMjJiYmQ3
ZTQwMjI2ZGU2ZTdiOTRkZDY3YjkyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZVNhZmFyaS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVNhZmFyaS5oCkBAIC02MywxMyArNjMsMTMgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RSZXBhaW50UmVjdChjb25zdCBSZW5kZXJPYmplY3QmLCBJbnRSZWN0Jik7
CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDb250cm9sU3R5bGVkKGNvbnN0IFJlbmRlclN0eWxlJiwg
Y29uc3QgQm9yZGVyRGF0YSYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBGaWxsTGF5ZXImLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKSBjb25zdDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZpbGxMYXllciYsIGNvbnN0IE9wdGlv
bmFsUkdCQSYgYmFja2dyb3VuZENvbG9yKSBjb25zdDsKIAotICAgIHZpcnR1YWwgQ29sb3IgcGxh
dGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IENvbG9yIHBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIENvbG9yIGFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3Io
KSBjb25zdDsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcigpIGNvbnN0OworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHBsYXRm
b3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IE9wdGlvbmFsUkdCQSBhY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkgY29uc3Q7
CiAKICAgICB2aXJ0dWFsIGludCBtaW5pbXVtTWVudUxpc3RTaXplKFJlbmRlclN0eWxlJikgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4
IDgzYzI3Y2NmZGQ3ZGFhY2FiMTdlMjY4ODM0OGEzM2QwNTg3ZGNiYzIuLmViMGVjMmIyNTUyNzU0
OTM5ZDBiNmRlMWJiMjEyMjRiYTA4YzE1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lV2luLmNwcApAQCAtMjk1LDI1ICsyOTUsMjUgQEAgYm9vbCBSZW5kZXJUaGVt
ZVdpbjo6c3VwcG9ydHNIb3Zlcihjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0CiAgICAgcmV0dXJu
IGhhdmVUaGVtZTsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVXaW46OnBsYXRmb3JtQWN0aXZlU2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5kZXJUaGVtZVdp
bjo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogewogICAg
IENPTE9SUkVGIGNvbG9yID0gR2V0U3lzQ29sb3IoQ09MT1JfSElHSExJR0hUKTsKLSAgICByZXR1
cm4gQ29sb3IoR2V0UlZhbHVlKGNvbG9yKSwgR2V0R1ZhbHVlKGNvbG9yKSwgR2V0QlZhbHVlKGNv
bG9yKSk7CisgICAgcmV0dXJuIE9wdGlvbmFsUkdCQShHZXRSVmFsdWUoY29sb3IpLCBHZXRHVmFs
dWUoY29sb3IpLCBHZXRCVmFsdWUoY29sb3IpKTsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVXaW46
OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAorT3B0aW9u
YWxSR0JBIFJlbmRlclRoZW1lV2luOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3Vu
ZENvbG9yKCkgY29uc3QKIHsKICAgICAvLyBUaGlzIGNvbG9yIG1hdGNoZXMgRmlyZWZveC4KLSAg
ICByZXR1cm4gQ29sb3IoMTc2LCAxNzYsIDE3Nik7CisgICAgcmV0dXJuIE9wdGlvbmFsUkdCQSgx
NzYsIDE3NiwgMTc2KTsKIH0KIAotQ29sb3IgUmVuZGVyVGhlbWVXaW46OnBsYXRmb3JtQWN0aXZl
U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5kZXJUaGVt
ZVdpbjo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAogewog
ICAgIENPTE9SUkVGIGNvbG9yID0gR2V0U3lzQ29sb3IoQ09MT1JfSElHSExJR0hUVEVYVCk7Ci0g
ICAgcmV0dXJuIENvbG9yKEdldFJWYWx1ZShjb2xvciksIEdldEdWYWx1ZShjb2xvciksIEdldEJW
YWx1ZShjb2xvcikpOworICAgIHJldHVybiBPcHRpb25hbFJHQkEoR2V0UlZhbHVlKGNvbG9yKSwg
R2V0R1ZhbHVlKGNvbG9yKSwgR2V0QlZhbHVlKGNvbG9yKSk7CiB9CiAKLUNvbG9yIFJlbmRlclRo
ZW1lV2luOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QK
K09wdGlvbmFsUkdCQSBSZW5kZXJUaGVtZVdpbjo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZv
cmVncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtQWN0aXZlU2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yKCk7CiB9CkBAIC0xMDE0LDE0ICsxMDE0LDE0IEBAIHN0YXRpYyBp
bnQgY3NzVmFsdWVJZFRvU3lzQ29sb3JJbmRleChDU1NWYWx1ZUlEIGNzc1ZhbHVlSWQpCiAgICAg
fQogfQogCi1Db2xvciBSZW5kZXJUaGVtZVdpbjo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCBjc3NW
YWx1ZUlkKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlclRoZW1lV2luOjpzeXN0ZW1Db2xvcihD
U1NWYWx1ZUlEIGNzc1ZhbHVlSWQpIGNvbnN0CiB7CiAgICAgaW50IHN5c0NvbG9ySW5kZXggPSBj
c3NWYWx1ZUlkVG9TeXNDb2xvckluZGV4KGNzc1ZhbHVlSWQpOwogICAgIGlmIChzeXNDb2xvcklu
ZGV4ID09IC0xKQogICAgICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yKGNzc1Zh
bHVlSWQpOwogCiAgICAgQ09MT1JSRUYgY29sb3IgPSBHZXRTeXNDb2xvcihzeXNDb2xvckluZGV4
KTsKLSAgICByZXR1cm4gQ29sb3IoR2V0UlZhbHVlKGNvbG9yKSwgR2V0R1ZhbHVlKGNvbG9yKSwg
R2V0QlZhbHVlKGNvbG9yKSk7CisgICAgcmV0dXJuIE9wdGlvbmFsUkdCQShHZXRSVmFsdWUoY29s
b3IpLCBHZXRHVmFsdWUoY29sb3IpLCBHZXRCVmFsdWUoY29sb3IpKTsKIH0KIAogI2lmIEVOQUJM
RShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZVdpbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmgKaW5kZXgg
YTAxZjUyMjZmZGFhOWVjNGM1YzcxZGMxNGVlOGRmMjM0ZTJiYWY0YS4uNmU1YTFiMGYyOTFhMjhj
YWRhNmYyMTljOTc1ZDg0OGJkOGYxNzRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lV2luLmgKQEAgLTU3LDEyICs1NywxMiBAQCBwdWJsaWM6CiAgICAgLy8gQSBtZXRo
b2QgYXNraW5nIGlmIHRoZSB0aGVtZSdzIGNvbnRyb2xzIGFjdHVhbGx5IGNhcmUgYWJvdXQgcmVk
cmF3aW5nIHdoZW4gaG92ZXJlZC4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNIb3Zlcihjb25z
dCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBDb2xvciBwbGF0
Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVTZWxlY3Rp
b25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIENvbG9yIHBs
YXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91
bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHBsYXRm
b3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIE9wdGlvbmFsUkdCQSBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRD
b2xvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgT3B0aW9uYWxSR0JBIHBsYXRmb3Jt
SW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgQ29sb3Igc3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCBPcHRpb25hbFJHQkEgc3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDaGVja2JveChjb25zdCBSZW5kZXJPYmpl
Y3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikgb3ZlcnJpZGUKICAg
ICB7IHJldHVybiBwYWludEJ1dHRvbihvLCBpLCByKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IGUxYzg2NzM5ZWMwZTYzYjZkMTBkZjZl
YTBkYjcxOGI1MGEyNzIzNTEuLmNmZDczOWVmYWY1N2FkMjRkZjNjMDg3M2I1NWIxMDAxNTA1MWJi
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAK
QEAgLTIzOCwyMiArMjM4LDIyIEBAIHZvaWQgUmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJP
YmplY3QoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywKICAgICAgICAgICAg
IHRzIDw8ICIgIiA8PCBxdW90ZUFuZEVzY2FwZU5vblByaW50YWJsZXMoZG93bmNhc3Q8UmVuZGVy
RmlsZVVwbG9hZENvbnRyb2w+KG8pLmZpbGVUZXh0VmFsdWUoKSk7CiAKICAgICAgICAgaWYgKG8u
cGFyZW50KCkpIHsKLSAgICAgICAgICAgIENvbG9yIGNvbG9yID0gby5zdHlsZSgpLnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKKyAgICAgICAgICAgIE9wdGlvbmFsUkdC
QSBjb2xvciA9IG8uc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xv
cik7CiAgICAgICAgICAgICBpZiAoby5wYXJlbnQoKS0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikgIT0gY29sb3IpCiAgICAgICAgICAgICAgICAgdHMgPDwg
IiBbY29sb3I9IiA8PCBjb2xvci5uYW1lRm9yUmVuZGVyVHJlZUFzVGV4dCgpIDw8ICJdIjsKIAog
ICAgICAgICAgICAgLy8gRG8gbm90IGR1bXAgaW52YWxpZCBvciB0cmFuc3BhcmVudCBiYWNrZ3Jv
dW5kcywgc2luY2UgdGhhdCBpcyB0aGUgZGVmYXVsdC4KLSAgICAgICAgICAgIENvbG9yIGJhY2tn
cm91bmRDb2xvciA9IG8uc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IpOworICAgICAgICAgICAgT3B0aW9uYWxSR0JBIGJhY2tncm91bmRDb2xv
ciA9IG8uc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IpOwogICAgICAgICAgICAgaWYgKG8ucGFyZW50KCktPnN0eWxlKCkudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSAhPSBiYWNrZ3JvdW5kQ29sb3IK
ICAgICAgICAgICAgICAgICAmJiBiYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpICYmIGJhY2tncm91
bmRDb2xvci5yZ2IoKSkKICAgICAgICAgICAgICAgICB0cyA8PCAiIFtiZ2NvbG9yPSIgPDwgYmFj
a2dyb3VuZENvbG9yLm5hbWVGb3JSZW5kZXJUcmVlQXNUZXh0KCkgPDwgIl0iOwogICAgICAgICAg
ICAgCi0gICAgICAgICAgICBDb2xvciB0ZXh0RmlsbENvbG9yID0gby5zdHlsZSgpLnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IpOworICAgICAgICAg
ICAgT3B0aW9uYWxSR0JBIHRleHRGaWxsQ29sb3IgPSBvLnN0eWxlKCkudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcik7CiAgICAgICAgICAgICBpZiAo
by5wYXJlbnQoKS0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RmlsbENvbG9yKSAhPSB0ZXh0RmlsbENvbG9yCiAgICAgICAgICAgICAgICAgJiYgdGV4
dEZpbGxDb2xvci5pc1ZhbGlkKCkgJiYgdGV4dEZpbGxDb2xvciAhPSBjb2xvciAmJiB0ZXh0Rmls
bENvbG9yLnJnYigpKQogICAgICAgICAgICAgICAgIHRzIDw8ICIgW3RleHRGaWxsQ29sb3I9IiA8
PCB0ZXh0RmlsbENvbG9yLm5hbWVGb3JSZW5kZXJUcmVlQXNUZXh0KCkgPDwgIl0iOwogCi0gICAg
ICAgICAgICBDb2xvciB0ZXh0U3Ryb2tlQ29sb3IgPSBvLnN0eWxlKCkudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yKTsKKyAgICAgICAgICAgIE9w
dGlvbmFsUkdCQSB0ZXh0U3Ryb2tlQ29sb3IgPSBvLnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yKTsKICAgICAgICAgICAgIGlmIChv
LnBhcmVudCgpLT5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtp
dFRleHRTdHJva2VDb2xvcikgIT0gdGV4dFN0cm9rZUNvbG9yCiAgICAgICAgICAgICAgICAgJiYg
dGV4dFN0cm9rZUNvbG9yLmlzVmFsaWQoKSAmJiB0ZXh0U3Ryb2tlQ29sb3IgIT0gY29sb3IgJiYg
dGV4dFN0cm9rZUNvbG9yLnJnYigpKQogICAgICAgICAgICAgICAgIHRzIDw8ICIgW3RleHRTdHJv
a2VDb2xvcj0iIDw8IHRleHRTdHJva2VDb2xvci5uYW1lRm9yUmVuZGVyVHJlZUFzVGV4dCgpIDw8
ICJdIjsKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVu
ZGVyT2JqZWN0KFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJPYmplY3QmIG8sCiAgICAgICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICB0cyA8PCAiICgiIDw8IGJveC5ib3JkZXJUb3Ao
KSA8PCAicHggIjsKICAgICAgICAgICAgICAgICBwcmludEJvcmRlclN0eWxlKHRzLCBvLnN0eWxl
KCkuYm9yZGVyVG9wU3R5bGUoKSk7Ci0gICAgICAgICAgICAgICAgQ29sb3IgY29sID0gby5zdHls
ZSgpLmJvcmRlclRvcENvbG9yKCk7CisgICAgICAgICAgICAgICAgT3B0aW9uYWxSR0JBIGNvbCA9
IG8uc3R5bGUoKS5ib3JkZXJUb3BDb2xvcigpOwogICAgICAgICAgICAgICAgIGlmICghY29sLmlz
VmFsaWQoKSkKICAgICAgICAgICAgICAgICAgICAgY29sID0gby5zdHlsZSgpLmNvbG9yKCk7CiAg
ICAgICAgICAgICAgICAgdHMgPDwgY29sLm5hbWVGb3JSZW5kZXJUcmVlQXNUZXh0KCkgPDwgIiki
OwpAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgUmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJP
YmplY3QoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywKICAgICAgICAgICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgdHMgPDwgIiAoIiA8PCBib3guYm9yZGVy
UmlnaHQoKSA8PCAicHggIjsKICAgICAgICAgICAgICAgICAgICAgcHJpbnRCb3JkZXJTdHlsZSh0
cywgby5zdHlsZSgpLmJvcmRlclJpZ2h0U3R5bGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIENv
bG9yIGNvbCA9IG8uc3R5bGUoKS5ib3JkZXJSaWdodENvbG9yKCk7CisgICAgICAgICAgICAgICAg
ICAgIE9wdGlvbmFsUkdCQSBjb2wgPSBvLnN0eWxlKCkuYm9yZGVyUmlnaHRDb2xvcigpOwogICAg
ICAgICAgICAgICAgICAgICBpZiAoIWNvbC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBjb2wgPSBvLnN0eWxlKCkuY29sb3IoKTsKICAgICAgICAgICAgICAgICAgICAgdHMgPDwg
Y29sLm5hbWVGb3JSZW5kZXJUcmVlQXNUZXh0KCkgPDwgIikiOwpAQCAtMzAyLDcgKzMwMiw3IEBA
IHZvaWQgUmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IFJlbmRlck9iamVjdCYgbywKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgdHMgPDwgIiAoIiA8PCBib3guYm9yZGVyQm90dG9tKCkgPDwgInB4ICI7CiAg
ICAgICAgICAgICAgICAgICAgIHByaW50Qm9yZGVyU3R5bGUodHMsIG8uc3R5bGUoKS5ib3JkZXJC
b3R0b21TdHlsZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgQ29sb3IgY29sID0gby5zdHlsZSgp
LmJvcmRlckJvdHRvbUNvbG9yKCk7CisgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsUkdCQSBj
b2wgPSBvLnN0eWxlKCkuYm9yZGVyQm90dG9tQ29sb3IoKTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKCFjb2wuaXNWYWxpZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgY29sID0gby5zdHls
ZSgpLmNvbG9yKCk7CiAgICAgICAgICAgICAgICAgICAgIHRzIDw8IGNvbC5uYW1lRm9yUmVuZGVy
VHJlZUFzVGV4dCgpIDw8ICIpIjsKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIFJlbmRlclRyZWVB
c1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0KFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJPYmpl
Y3QmIG8sCiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHRzIDw8
ICIgKCIgPDwgYm94LmJvcmRlckxlZnQoKSA8PCAicHggIjsKICAgICAgICAgICAgICAgICAgICAg
cHJpbnRCb3JkZXJTdHlsZSh0cywgby5zdHlsZSgpLmJvcmRlckxlZnRTdHlsZSgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgQ29sb3IgY29sID0gby5zdHlsZSgpLmJvcmRlckxlZnRDb2xvcigpOwor
ICAgICAgICAgICAgICAgICAgICBPcHRpb25hbFJHQkEgY29sID0gby5zdHlsZSgpLmJvcmRlckxl
ZnRDb2xvcigpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbC5pc1ZhbGlkKCkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBjb2wgPSBvLnN0eWxlKCkuY29sb3IoKTsKICAgICAgICAgICAg
ICAgICAgICAgdHMgPDwgY29sLm5hbWVGb3JSZW5kZXJUcmVlQXNUZXh0KCkgPDwgIikiOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDQyOGMxNjAyOWJjMDc1ZjY0
OGMyMmRhNTcxZTRjYzg3YmNmOWM5MDcuLmQwMzI1MWQxMTQ1YmFjYzhiYzQyNWVmYjk3ODcxYzYw
YWUwOGMzZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTU5
NCw3ICs1OTQsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikKICAgICB9CiAKICAgICBib29sIGJh
Y2tncm91bmRTaG91bGRFeHRlbmRCZXlvbmRQYWdlID0gZnJhbWVWaWV3KCkuZnJhbWUoKS5zZXR0
aW5ncygpLmJhY2tncm91bmRTaG91bGRFeHRlbmRCZXlvbmRQYWdlKCk7Ci0gICAgY29tcG9zaXRv
cigpLnNldFJvb3RFeHRlbmRlZEJhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kU2hvdWxkRXh0ZW5k
QmV5b25kUGFnZSA/IGZyYW1lVmlldygpLmRvY3VtZW50QmFja2dyb3VuZENvbG9yKCkgOiBDb2xv
cigpKTsKKyAgICBjb21wb3NpdG9yKCkuc2V0Um9vdEV4dGVuZGVkQmFja2dyb3VuZENvbG9yKGJh
Y2tncm91bmRTaG91bGRFeHRlbmRCZXlvbmRQYWdlID8gZnJhbWVWaWV3KCkuZG9jdW1lbnRCYWNr
Z3JvdW5kQ29sb3IoKSA6IE9wdGlvbmFsUkdCQSgpKTsKIAogICAgIFBhZ2UqIHBhZ2UgPSBkb2N1
bWVudCgpLnBhZ2UoKTsKICAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3IgPSBwYWdlID8gcGFnZS0+
cGFnZVNjYWxlRmFjdG9yKCkgOiAxOwpAQCAtNjEyLDggKzYxMiw4IEBAIHZvaWQgUmVuZGVyVmll
dzo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmKQogICAgIGlmIChmcmFtZVZpZXcoKS5pc1RyYW5zcGFyZW50KCkpIC8vIEZJWE1FOiBU
aGlzIG5lZWRzIHRvIGJlIGR5bmFtaWMuIFdlIHNob3VsZCBiZSBhYmxlIHRvIGdvIGJhY2sgdG8g
YmxpdHRpbmcgaWYgd2UgZXZlciBzdG9wIGJlaW5nIHRyYW5zcGFyZW50LgogICAgICAgICBmcmFt
ZVZpZXcoKS5zZXRDYW5ub3RCbGl0VG9XaW5kb3coKTsgLy8gVGhlIHBhcmVudCBtdXN0IHNob3cg
YmVoaW5kIHRoZSBjaGlsZC4KICAgICBlbHNlIHsKLSAgICAgICAgQ29sb3IgZG9jdW1lbnRCYWNr
Z3JvdW5kQ29sb3IgPSBmcmFtZVZpZXcoKS5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpOwotICAg
ICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSAoYmFja2dyb3VuZFNob3VsZEV4dGVuZEJleW9u
ZFBhZ2UgJiYgZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKSA/IGRvY3VtZW50QmFj
a2dyb3VuZENvbG9yIDogZnJhbWVWaWV3KCkuYmFzZUJhY2tncm91bmRDb2xvcigpOworICAgICAg
ICBPcHRpb25hbFJHQkEgZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IgPSBmcmFtZVZpZXcoKS5kb2N1
bWVudEJhY2tncm91bmRDb2xvcigpOworICAgICAgICBPcHRpb25hbFJHQkEgYmFja2dyb3VuZENv
bG9yID0gKGJhY2tncm91bmRTaG91bGRFeHRlbmRCZXlvbmRQYWdlICYmIGRvY3VtZW50QmFja2dy
b3VuZENvbG9yLmlzVmFsaWQoKSkgPyBkb2N1bWVudEJhY2tncm91bmRDb2xvciA6IGZyYW1lVmll
dygpLmJhc2VCYWNrZ3JvdW5kQ29sb3IoKTsKICAgICAgICAgaWYgKGJhY2tncm91bmRDb2xvci5h
bHBoYSgpKSB7CiAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJhdG9y
ID0gcGFpbnRJbmZvLmNvbnRleHQtPmNvbXBvc2l0ZU9wZXJhdGlvbigpOwogICAgICAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVu
Y3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVu
Y3Rpb25zLmNwcAppbmRleCA5ZWY1ZWIwODAxYjJlOTlmNzY4OWY3NjBiZWMyY2Q3ODU1MGNiZGNj
Li5jYzE0MDM0NzI1NWI5N2ZhZjkyOTcxOGU3N2E2YzE4NWYyOGVlNDMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3Bw
CkBAIC01Myw4ICs1Myw4IEBAIHN0YXRpYyB2b2lkIHBhaW50RGVidWdCb3JkZXJzKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgTGF5b3V0UmVjdCBib3JkZXJSZWN0LCBjCiAgICAgaWYgKHNuYXBw
ZWRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9y
KENvbG9yKDAsIDI1NSwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
Y29udGV4dC5zZXRTdHJva2VDb2xvcihPcHRpb25hbFJHQkEoMCwgMjU1LCAwKSwgQ29sb3JTcGFj
ZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoT3B0aW9uYWxSR0JBOjp0cmFu
c3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgY29udGV4dC5kcmF3UmVjdChzbmFw
cGVkUmVjdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
UGFpbnRTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUu
Y3BwCmluZGV4IDIyMjZlY2RmNjllNTNiYmY2YmM4OWRlOWRiZWJjNzM2MDM5NTZhMzEuLjM4ZDRi
NjA5ZGY0M2JmMDRlYjI5OGRiZWZlZmFhYjE4NzcyOWU0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcApAQCAtNDgsNyArNDgsNyBAQCBUZXh0UGFpbnRT
dHlsZTo6VGV4dFBhaW50U3R5bGUoQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewogfQogCi1UZXh0
UGFpbnRTdHlsZTo6VGV4dFBhaW50U3R5bGUoQ29sb3IgY29sb3IsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKK1RleHRQYWludFN0eWxlOjpUZXh0UGFpbnRTdHlsZShPcHRpb25hbFJHQkEgY29sb3Is
IENvbG9yU3BhY2UgY29sb3JTcGFjZSkKICAgICA6IGNvbG9yU3BhY2UoY29sb3JTcGFjZSkKICAg
ICAsIGZpbGxDb2xvcihjb2xvcikKICAgICAsIHN0cm9rZUNvbG9yKGNvbG9yKQpAQCAtNTksMTUg
KzU5LDE1IEBAIFRleHRQYWludFN0eWxlOjpUZXh0UGFpbnRTdHlsZShDb2xvciBjb2xvciwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlKQogewogfQogCi1zdGF0aWMgQ29sb3IgYWRqdXN0Q29sb3JGb3JW
aXNpYmlsaXR5T25CYWNrZ3JvdW5kKENvbG9yIHRleHRDb2xvciwgQ29sb3IgYmFja2dyb3VuZENv
bG9yKQorc3RhdGljIE9wdGlvbmFsUkdCQSBhZGp1c3RDb2xvckZvclZpc2liaWxpdHlPbkJhY2tn
cm91bmQoT3B0aW9uYWxSR0JBIHRleHRDb2xvciwgT3B0aW9uYWxSR0JBIGJhY2tncm91bmRDb2xv
cikKIHsKICAgICBpbnQgZCA9IGRpZmZlcmVuY2VTcXVhcmVkKHRleHRDb2xvciwgYmFja2dyb3Vu
ZENvbG9yKTsKICAgICAvLyBTZW1pLWFyYml0cmFyaWx5IGNob3NlIDY1MDI1ICgyNTVeMikgdmFs
dWUgaGVyZSBhZnRlciBhIGZldyB0ZXN0cy4KICAgICBpZiAoZCA+IDY1MDI1KQogICAgICAgICBy
ZXR1cm4gdGV4dENvbG9yOwogCi0gICAgaW50IGRpc3RhbmNlRnJvbVdoaXRlID0gZGlmZmVyZW5j
ZVNxdWFyZWQodGV4dENvbG9yLCBDb2xvcjo6d2hpdGUpOwotICAgIGludCBkaXN0YW5jZUZyb21C
bGFjayA9IGRpZmZlcmVuY2VTcXVhcmVkKHRleHRDb2xvciwgQ29sb3I6OmJsYWNrKTsKKyAgICBp
bnQgZGlzdGFuY2VGcm9tV2hpdGUgPSBkaWZmZXJlbmNlU3F1YXJlZCh0ZXh0Q29sb3IsIE9wdGlv
bmFsUkdCQTo6d2hpdGUpOworICAgIGludCBkaXN0YW5jZUZyb21CbGFjayA9IGRpZmZlcmVuY2VT
cXVhcmVkKHRleHRDb2xvciwgT3B0aW9uYWxSR0JBOjpibGFjayk7CiAgICAgaWYgKGRpc3RhbmNl
RnJvbVdoaXRlIDwgZGlzdGFuY2VGcm9tQmxhY2spCiAgICAgICAgIHJldHVybiB0ZXh0Q29sb3Iu
ZGFyaygpOwogCkBAIC0xMTAsMTkgKzExMCwxOSBAQCBUZXh0UGFpbnRTdHlsZSBjb21wdXRlVGV4
dFBhaW50U3R5bGUoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZW5kZXJTdHlsZSYgbGluZQog
CiAgICAgLy8gTWFrZSB0aGUgdGV4dCBmaWxsIGNvbG9yIGxlZ2libGUgYWdhaW5zdCBhIHdoaXRl
IGJhY2tncm91bmQKICAgICBpZiAoZm9yY2VCYWNrZ3JvdW5kVG9XaGl0ZSkKLSAgICAgICAgcGFp
bnRTdHlsZS5maWxsQ29sb3IgPSBhZGp1c3RDb2xvckZvclZpc2liaWxpdHlPbkJhY2tncm91bmQo
cGFpbnRTdHlsZS5maWxsQ29sb3IsIENvbG9yOjp3aGl0ZSk7CisgICAgICAgIHBhaW50U3R5bGUu
ZmlsbENvbG9yID0gYWRqdXN0Q29sb3JGb3JWaXNpYmlsaXR5T25CYWNrZ3JvdW5kKHBhaW50U3R5
bGUuZmlsbENvbG9yLCBPcHRpb25hbFJHQkE6OndoaXRlKTsKIAogICAgIHBhaW50U3R5bGUuc3Ry
b2tlQ29sb3IgPSBsaW5lU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5V2Vi
a2l0VGV4dFN0cm9rZUNvbG9yKTsKIAogICAgIC8vIE1ha2UgdGhlIHRleHQgc3Ryb2tlIGNvbG9y
IGxlZ2libGUgYWdhaW5zdCBhIHdoaXRlIGJhY2tncm91bmQKICAgICBpZiAoZm9yY2VCYWNrZ3Jv
dW5kVG9XaGl0ZSkKLSAgICAgICAgcGFpbnRTdHlsZS5zdHJva2VDb2xvciA9IGFkanVzdENvbG9y
Rm9yVmlzaWJpbGl0eU9uQmFja2dyb3VuZChwYWludFN0eWxlLnN0cm9rZUNvbG9yLCBDb2xvcjo6
d2hpdGUpOworICAgICAgICBwYWludFN0eWxlLnN0cm9rZUNvbG9yID0gYWRqdXN0Q29sb3JGb3JW
aXNpYmlsaXR5T25CYWNrZ3JvdW5kKHBhaW50U3R5bGUuc3Ryb2tlQ29sb3IsIE9wdGlvbmFsUkdC
QTo6d2hpdGUpOwogCiAgICAgcGFpbnRTdHlsZS5lbXBoYXNpc01hcmtDb2xvciA9IGxpbmVTdHls
ZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xv
cik7CiAKICAgICAvLyBNYWtlIHRoZSB0ZXh0IHN0cm9rZSBjb2xvciBsZWdpYmxlIGFnYWluc3Qg
YSB3aGl0ZSBiYWNrZ3JvdW5kCiAgICAgaWYgKGZvcmNlQmFja2dyb3VuZFRvV2hpdGUpCi0gICAg
ICAgIHBhaW50U3R5bGUuZW1waGFzaXNNYXJrQ29sb3IgPSBhZGp1c3RDb2xvckZvclZpc2liaWxp
dHlPbkJhY2tncm91bmQocGFpbnRTdHlsZS5lbXBoYXNpc01hcmtDb2xvciwgQ29sb3I6OndoaXRl
KTsKKyAgICAgICAgcGFpbnRTdHlsZS5lbXBoYXNpc01hcmtDb2xvciA9IGFkanVzdENvbG9yRm9y
VmlzaWJpbGl0eU9uQmFja2dyb3VuZChwYWludFN0eWxlLmVtcGhhc2lzTWFya0NvbG9yLCBPcHRp
b25hbFJHQkE6OndoaXRlKTsKIAogICAgIHJldHVybiBwYWludFN0eWxlOwogfQpAQCAtMTM2LDE0
ICsxMzYsMTQgQEAgVGV4dFBhaW50U3R5bGUgY29tcHV0ZVRleHRTZWxlY3Rpb25QYWludFN0eWxl
KGNvbnN0IFRleHRQYWludFN0eWxlJiB0ZXh0UGFpbnRTdHkKICAgICBUZXh0UGFpbnRTdHlsZSBz
ZWxlY3Rpb25QYWludFN0eWxlID0gdGV4dFBhaW50U3R5bGU7CiAKICNpZiBFTkFCTEUoVEVYVF9T
RUxFQ1RJT04pCi0gICAgQ29sb3IgZm9yZWdyb3VuZCA9IHBhaW50SW5mby5mb3JjZVRleHRDb2xv
cigpID8gcGFpbnRJbmZvLmZvcmNlZFRleHRDb2xvcigpIDogcmVuZGVyZXIuc2VsZWN0aW9uRm9y
ZWdyb3VuZENvbG9yKCk7CisgICAgT3B0aW9uYWxSR0JBIGZvcmVncm91bmQgPSBwYWludEluZm8u
Zm9yY2VUZXh0Q29sb3IoKSA/IHBhaW50SW5mby5mb3JjZWRUZXh0Q29sb3IoKSA6IHJlbmRlcmVy
LnNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpOwogICAgIGlmIChmb3JlZ3JvdW5kLmlzVmFsaWQo
KSAmJiBmb3JlZ3JvdW5kICE9IHNlbGVjdGlvblBhaW50U3R5bGUuZmlsbENvbG9yKSB7CiAgICAg
ICAgIGlmICghcGFpbnRTZWxlY3RlZFRleHRPbmx5KQogICAgICAgICAgICAgcGFpbnRTZWxlY3Rl
ZFRleHRTZXBhcmF0ZWx5ID0gdHJ1ZTsKICAgICAgICAgc2VsZWN0aW9uUGFpbnRTdHlsZS5maWxs
Q29sb3IgPSBmb3JlZ3JvdW5kOwogICAgIH0KIAotICAgIENvbG9yIGVtcGhhc2lzTWFya0ZvcmVn
cm91bmQgPSBwYWludEluZm8uZm9yY2VUZXh0Q29sb3IoKSA/IHBhaW50SW5mby5mb3JjZWRUZXh0
Q29sb3IoKSA6IHJlbmRlcmVyLnNlbGVjdGlvbkVtcGhhc2lzTWFya0NvbG9yKCk7CisgICAgT3B0
aW9uYWxSR0JBIGVtcGhhc2lzTWFya0ZvcmVncm91bmQgPSBwYWludEluZm8uZm9yY2VUZXh0Q29s
b3IoKSA/IHBhaW50SW5mby5mb3JjZWRUZXh0Q29sb3IoKSA6IHJlbmRlcmVyLnNlbGVjdGlvbkVt
cGhhc2lzTWFya0NvbG9yKCk7CiAgICAgaWYgKGVtcGhhc2lzTWFya0ZvcmVncm91bmQuaXNWYWxp
ZCgpICYmIGVtcGhhc2lzTWFya0ZvcmVncm91bmQgIT0gc2VsZWN0aW9uUGFpbnRTdHlsZS5lbXBo
YXNpc01hcmtDb2xvcikgewogICAgICAgICBpZiAoIXBhaW50U2VsZWN0ZWRUZXh0T25seSkKICAg
ICAgICAgICAgIHBhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSA9IHRydWU7CkBAIC0xNjUsNyAr
MTY1LDcgQEAgVGV4dFBhaW50U3R5bGUgY29tcHV0ZVRleHRTZWxlY3Rpb25QYWludFN0eWxlKGNv
bnN0IFRleHRQYWludFN0eWxlJiB0ZXh0UGFpbnRTdHkKICAgICAgICAgICAgIHNlbGVjdGlvblBh
aW50U3R5bGUuc3Ryb2tlV2lkdGggPSBzdHJva2VXaWR0aDsKICAgICAgICAgfQogCi0gICAgICAg
IENvbG9yIHN0cm9rZSA9IHBhaW50SW5mby5mb3JjZVRleHRDb2xvcigpID8gcGFpbnRJbmZvLmZv
cmNlZFRleHRDb2xvcigpIDogcHNldWRvU3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcik7CisgICAgICAgIE9wdGlvbmFsUkdCQSBzdHJv
a2UgPSBwYWludEluZm8uZm9yY2VUZXh0Q29sb3IoKSA/IHBhaW50SW5mby5mb3JjZWRUZXh0Q29s
b3IoKSA6IHBzZXVkb1N0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlXZWJr
aXRUZXh0U3Ryb2tlQ29sb3IpOwogICAgICAgICBpZiAoc3Ryb2tlICE9IHNlbGVjdGlvblBhaW50
U3R5bGUuc3Ryb2tlQ29sb3IpIHsKICAgICAgICAgICAgIGlmICghcGFpbnRTZWxlY3RlZFRleHRP
bmx5KQogICAgICAgICAgICAgICAgIHBhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSA9IHRydWU7
CkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCB1cGRhdGVHcmFwaGljc0NvbnRleHQoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UGFpbnRTdHlsZSYgcGFpbnQKICAgICAgICAgbW9k
ZSA9IG5ld01vZGU7CiAgICAgfQogCi0gICAgQ29sb3IgZmlsbENvbG9yID0gZmlsbENvbG9yVHlw
ZSA9PSBVc2VFbXBoYXNpc01hcmtDb2xvciA/IHBhaW50U3R5bGUuZW1waGFzaXNNYXJrQ29sb3Ig
OiBwYWludFN0eWxlLmZpbGxDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgZmlsbENvbG9yID0gZmls
bENvbG9yVHlwZSA9PSBVc2VFbXBoYXNpc01hcmtDb2xvciA/IHBhaW50U3R5bGUuZW1waGFzaXNN
YXJrQ29sb3IgOiBwYWludFN0eWxlLmZpbGxDb2xvcjsKICAgICBpZiAobW9kZSAmIFRleHRNb2Rl
RmlsbCAmJiAoZmlsbENvbG9yICE9IGNvbnRleHQuZmlsbENvbG9yKCkgfHwgcGFpbnRTdHlsZS5j
b2xvclNwYWNlICE9IGNvbnRleHQuZmlsbENvbG9yU3BhY2UoKSkpCiAgICAgICAgIGNvbnRleHQu
c2V0RmlsbENvbG9yKGZpbGxDb2xvciwgcGFpbnRTdHlsZS5jb2xvclNwYWNlKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuaAppbmRleCA5OTRlNDVkY2Y0ZThhNDg5
ODg0Y2RjYmMyM2IxYzIwNmI3MGE5ODA2Li44NzA3NWNiYTVhMWE2NDc4OTllODdmYjFhMjIzMTVj
ODZhMGNiOTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50
U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuaApA
QCAtNDAsMTIgKzQwLDEyIEBAIHN0cnVjdCBQYWludEluZm87CiAKIHN0cnVjdCBUZXh0UGFpbnRT
dHlsZSB7CiAgICAgVGV4dFBhaW50U3R5bGUoQ29sb3JTcGFjZSk7Ci0gICAgVGV4dFBhaW50U3R5
bGUoQ29sb3IsIENvbG9yU3BhY2UpOworICAgIFRleHRQYWludFN0eWxlKE9wdGlvbmFsUkdCQSwg
Q29sb3JTcGFjZSk7CiAKICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2U7Ci0gICAgQ29sb3IgZmls
bENvbG9yOwotICAgIENvbG9yIHN0cm9rZUNvbG9yOwotICAgIENvbG9yIGVtcGhhc2lzTWFya0Nv
bG9yOworICAgIE9wdGlvbmFsUkdCQSBmaWxsQ29sb3I7CisgICAgT3B0aW9uYWxSR0JBIHN0cm9r
ZUNvbG9yOworICAgIE9wdGlvbmFsUkdCQSBlbXBoYXNpc01hcmtDb2xvcjsKICAgICBmbG9hdCBz
dHJva2VXaWR0aDsKICNpZiBFTkFCTEUoTEVUVEVSUFJFU1MpCiAgICAgYm9vbCB1c2VMZXR0ZXJw
cmVzc0VmZmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFp
bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCmluZGV4
IGU0Mjg2YzA0MTAzY2NiNzliNGU2ZTY2YjdiYmI1NDI2ZmMyZDY4NzMuLjc0NjJhMDk4NWFkMDRh
N2UzM2Q2ZDk5ZmU4ODJjZDg4ZGQxODkyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRQYWludGVyLmNwcApAQCAtODIsNyArODIsNyBAQCBTaGFkb3dBcHBsaWVyOjpTaGFkb3dBcHBs
aWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgU2hhZG93RGF0YSogc2hhZG93LAog
ICAgIGludCBzaGFkb3dZID0gb3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbCA/IHNoYWRvdy0+eSgp
IDogLXNoYWRvdy0+eCgpOwogICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQoc2hhZG93WCwgc2hh
ZG93WSk7CiAgICAgaW50IHNoYWRvd1JhZGl1cyA9IHNoYWRvdy0+cmFkaXVzKCk7Ci0gICAgY29u
c3QgQ29sb3ImIHNoYWRvd0NvbG9yID0gc2hhZG93LT5jb2xvcigpOworICAgIGNvbnN0IE9wdGlv
bmFsUkdCQSYgc2hhZG93Q29sb3IgPSBzaGFkb3ctPmNvbG9yKCk7CiAKICAgICAvLyBXaGVuIGRy
YXdpbmcgc2hhZG93cywgd2UgdXN1YWxseSBjbGlwIHRoZSBjb250ZXh0IHRvIHRoZSBhcmVhIHRo
ZSBzaGFkb3cgd2lsbCByZXNpZGUsIGFuZCB0aGVuCiAgICAgLy8gZHJhdyB0aGUgdGV4dCBpdHNl
bGYgb3V0c2lkZSB0aGUgY2xpcHBlZCBhcmVhIChzbyBvbmx5IHRoZSBzaGFkb3cgc2hvd3MgdXAp
LiBIb3dldmVyLCB3ZSBjYW4KQEAgLTExNywxMiArMTE3LDEyIEBAIHN0YXRpYyB2b2lkIHBhaW50
VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udENhc2Nh
ZGUmIGZvCiAgICAgaW50IGVtcGhhc2lzTWFya09mZnNldCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQg
ZW5kT2Zmc2V0LCBpbnQgdHJ1bmNhdGlvblBvaW50LCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3Jp
Z2luLCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsCiAgICAgY29uc3QgU2hhZG93RGF0YSogc2hh
ZG93LCBib29sIHN0cm9rZWQsIGJvb2wgaG9yaXpvbnRhbCkKIHsKLSAgICBDb2xvciBmaWxsQ29s
b3IgPSBjb250ZXh0LmZpbGxDb2xvcigpOworICAgIE9wdGlvbmFsUkdCQSBmaWxsQ29sb3IgPSBj
b250ZXh0LmZpbGxDb2xvcigpOwogICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2UgPSBjb250
ZXh0LmZpbGxDb2xvclNwYWNlKCk7CiAgICAgYm9vbCBvcGFxdWUgPSAhZmlsbENvbG9yLmhhc0Fs
cGhhKCk7CiAgICAgYm9vbCBsYXN0U2hhZG93SXRlcmF0aW9uU2hvdWxkRHJhd1RleHQgPSAhc3Ry
b2tlZCAmJiBvcGFxdWU7CiAgICAgaWYgKCFvcGFxdWUpCi0gICAgICAgIGNvbnRleHQuc2V0Rmls
bENvbG9yKENvbG9yOjpibGFjaywgZmlsbENvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihPcHRpb25hbFJHQkE6OmJsYWNrLCBmaWxsQ29sb3JTcGFjZSk7CiAKICAgICBk
byB7CiAgICAgICAgIFNoYWRvd0FwcGxpZXIgc2hhZG93QXBwbGllcihjb250ZXh0LCBzaGFkb3cs
IGJveFJlY3QsIGxhc3RTaGFkb3dJdGVyYXRpb25TaG91bGREcmF3VGV4dCwgb3BhcXVlLCBob3Jp
em9udGFsID8gSG9yaXpvbnRhbCA6IFZlcnRpY2FsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKaW5kZXggN2FhNTRmYjhj
MjEzZDAzOGUxOTgzMWJkOTI1MTEwYTE4N2NlNGU0Zi4uM2UwMWIxYjI4MjNkNjUxNmNmZTRjMDdl
NjBiY2Y4YTQyOGQ3OTk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFJl
bmRlck1hdGhNTEJsb2NrOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCkKICAgICAKICAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVz
cygxLjBmKTsKICAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsK
LSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDAsIDI1NSksIENvbG9y
U3BhY2VTUkdCKTsKKyAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKE9wdGlvbmFsUkdC
QSgwLCAwLCAyNTUpLCBDb2xvclNwYWNlU1JHQik7CiAgICAgCiAgICAgaW5mby5jb250ZXh0LT5k
cmF3TGluZShhZGp1c3RlZFBhaW50T2Zmc2V0LCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0
LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgp
KSk7CiAgICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zm
c2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQu
eSgpKSwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZz
ZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHBpeGVsU25hcHBlZE9mZnNldEhl
aWdodCgpKSk7CkBAIC0xMTMsMTMgKzExMywxMyBAQCB2b2lkIFJlbmRlck1hdGhNTEJsb2NrOjpw
YWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAg
ICAKICAgICBpbnQgdG9wU3RhcnQgPSBwYWRkaW5nVG9wKCk7CiAgICAgCi0gICAgaW5mby5jb250
ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAyNTUsIDApLCBDb2xvclNwYWNlU1JHQik7Cisg
ICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihPcHRpb25hbFJHQkEoMCwgMjU1LCAwKSwg
Q29sb3JTcGFjZVNSR0IpOwogICAgIAogICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9p
bnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgdG9w
U3RhcnQpLCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9m
ZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgdG9wU3RhcnQpKTsKICAgICAK
ICAgICBpbnQgYmFzZWxpbmUgPSByb3VuZFRvSW50KGJhc2VsaW5lUG9zaXRpb24oQWxwaGFiZXRp
Y0Jhc2VsaW5lLCB0cnVlLCBIb3Jpem9udGFsTGluZSkpOwogICAgIAotICAgIGluZm8uY29udGV4
dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMjU1LCAwLCAwKSwgQ29sb3JTcGFjZVNSR0IpOworICAg
IGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoT3B0aW9uYWxSR0JBKDI1NSwgMCwgMCksIENv
bG9yU3BhY2VTUkdCKTsKICAgICAKICAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50
KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIGJhc2Vs
aW5lKSwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZz
ZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIGJhc2VsaW5lKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNs
b3NlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVu
Y2xvc2UuY3BwCmluZGV4IDE3NDY4YzExOTkzMDRhNzBkNjdiNzUwMGJlMmRiNzQwNzVkNDJlNzUu
LmRkOGZlMDZmZTBkZTQxMTIwMjI0ZGMxZTEyMTUyMjNlZWRiODkyZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2Uu
Y3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxNZW5jbG9zZTo6cGFpbnQo
UGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKICAgICAgICAg
ICAgIGVsc2UgaWYgKG5vdGF0aW9uVmFsdWVzW2ldID09ICJob3Jpem9udGFsc3RyaWtlIikKICAg
ICAgICAgICAgICAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnQsIHRvcCAr
IGhhbGZib3hIZWlnaHQpLCBJbnRQb2ludChsZWZ0ICsgYm94V2lkdGgsIHRvcCArIGhhbGZib3hI
ZWlnaHQpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vdGF0aW9uVmFsdWVzW2ldID09ICJjaXJj
bGUiKSB7Ci0gICAgICAgICAgICAgICAgaW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6
OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgICAgICBpbmZv
LmNvbnRleHQtPnNldEZpbGxDb2xvcihPcHRpb25hbFJHQkE6OnRyYW5zcGFyZW50LCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKICAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQtPmRyYXdFbGxpcHNl
KHJlY3QpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChub3RhdGlvblZhbHVlc1tpXSA9PSAibG9u
Z2RpdiIpCiAgICAgICAgICAgICAgICAgaXNEZWZhdWx0TG9uZ0RpdiA9IHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oCmluZGV4IGNmMzQwZDBmNjgy
ZTc0YWU0OTJjY2VmY2ZhY2NhMTE2NzI3N2E0YmQuLmMyNGY1ZTU1NmEzZDZmNzAwN2U1MDM1NjNm
YTI0N2Q2N2M4MDk4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9Cb3JkZXJWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3Jk
ZXJWYWx1ZS5oCkBAIC02NywxMyArNjcsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvKTsKICAgICB9CiAKLSAgICB2b2lkIHNldENvbG9yKGNvbnN0IENvbG9yJiBjb2xv
cikKKyAgICB2b2lkIHNldENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IpCiAgICAgewog
ICAgICAgICBtX2NvbG9yID0gY29sb3IucmdiKCk7CiAgICAgICAgIG1fY29sb3JJc1ZhbGlkID0g
Y29sb3IuaXNWYWxpZCgpOwogICAgIH0KIAotICAgIENvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1
cm4gQ29sb3IobV9jb2xvciwgbV9jb2xvcklzVmFsaWQpOyB9CisgICAgT3B0aW9uYWxSR0JBIGNv
bG9yKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uYWxSR0JBKG1fY29sb3IsIG1fY29sb3JJc1ZhbGlk
KTsgfQogCiAgICAgZmxvYXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CiAgICAg
RUJvcmRlclN0eWxlIHN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJvcmRlclN0
eWxlPihtX3N0eWxlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0NvbGxhcHNlZEJvcmRlclZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvQ29sbGFwc2VkQm9yZGVyVmFsdWUuaAppbmRleCAxMjAxNzNiZGE3MGM4NDBjYWUxODdlZjIx
MTYxZTc3MDM4NzBiNjkxLi5kZjE2YzE1NWFiM2U0Njg4MWI0OTc0MjhiZTZjM2U1YzJlOGZhZjI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29sbGFwc2VkQm9y
ZGVyVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAot
ICAgIENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXIsIGNvbnN0
IENvbG9yJiBjb2xvciwgRUJvcmRlclByZWNlZGVuY2UgcHJlY2VkZW5jZSkKKyAgICBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZShjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyLCBjb25zdCBPcHRpb25hbFJH
QkEmIGNvbG9yLCBFQm9yZGVyUHJlY2VkZW5jZSBwcmVjZWRlbmNlKQogICAgICAgICA6IG1fY29s
b3IoY29sb3IucmdiKCkpCiAgICAgICAgICwgbV9jb2xvcklzVmFsaWQoY29sb3IuaXNWYWxpZCgp
KQogICAgICAgICAsIG1fd2lkdGgoYm9yZGVyLm5vblplcm8oKSA/IGJvcmRlci53aWR0aCgpIDog
MCkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHlsZSA+IEJISURERU4gPyBtX3dpZHRoIDogMDsgfQogICAgIEVCb3JkZXJT
dHlsZSBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3JkZXJTdHlsZT4obV9z
dHlsZSk7IH0KICAgICBib29sIGV4aXN0cygpIGNvbnN0IHsgcmV0dXJuIG1fcHJlY2VkZW5jZSAh
PSBCT0ZGOyB9Ci0gICAgQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcihtX2NvbG9y
LCBtX2NvbG9ySXNWYWxpZCk7IH0KKyAgICBPcHRpb25hbFJHQkEgY29sb3IoKSBjb25zdCB7IHJl
dHVybiBPcHRpb25hbFJHQkEobV9jb2xvciwgbV9jb2xvcklzVmFsaWQpOyB9CiAgICAgYm9vbCBp
c1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV90cmFuc3BhcmVudDsgfQogICAgIEVCb3Jk
ZXJQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm9y
ZGVyUHJlY2VkZW5jZT4obV9wcmVjZWRlbmNlKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCBkZGYwMTk4ZGFiOGMyZjU2NmQzMWRm
NjFkZmFiNjZmMDE2MjAzYTg5Li45NTQ2YWVmMzBhNGIwYTg4OGU4OTQyYjJlZmRlMGNlODJhOTQz
MzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAKQEAgLTExMzEsMTAgKzExMzEsMTAgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0TGlzdFN0eWxl
SW1hZ2UoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiB2KQogICAgICAgICByYXJlSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS0+bGlzdFN0eWxlSW1hZ2UgPSB2OwogfQogCi1Db2xvciBSZW5kZXJTdHlsZTo6
Y29sb3IoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPmNvbG9yOyB9Ci1Db2xvciBSZW5kZXJT
dHlsZTo6dmlzaXRlZExpbmtDb2xvcigpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+dmlzaXRl
ZExpbmtDb2xvcjsgfQotdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29sb3IoY29uc3QgQ29sb3ImIHYp
IHsgU0VUX1ZBUihpbmhlcml0ZWQsIGNvbG9yLCB2KTsgfQotdm9pZCBSZW5kZXJTdHlsZTo6c2V0
VmlzaXRlZExpbmtDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKGluaGVyaXRlZCwgdmlz
aXRlZExpbmtDb2xvciwgdik7IH0KK09wdGlvbmFsUkdCQSBSZW5kZXJTdHlsZTo6Y29sb3IoKSBj
b25zdCB7IHJldHVybiBpbmhlcml0ZWQtPmNvbG9yOyB9CitPcHRpb25hbFJHQkEgUmVuZGVyU3R5
bGU6OnZpc2l0ZWRMaW5rQ29sb3IoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPnZpc2l0ZWRM
aW5rQ29sb3I7IH0KK3ZvaWQgUmVuZGVyU3R5bGU6OnNldENvbG9yKGNvbnN0IE9wdGlvbmFsUkdC
QSYgdikgeyBTRVRfVkFSKGluaGVyaXRlZCwgY29sb3IsIHYpOyB9Cit2b2lkIFJlbmRlclN0eWxl
OjpzZXRWaXNpdGVkTGlua0NvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgdikgeyBTRVRfVkFSKGlu
aGVyaXRlZCwgdmlzaXRlZExpbmtDb2xvciwgdik7IH0KIAogc2hvcnQgUmVuZGVyU3R5bGU6Omhv
cml6b250YWxCb3JkZXJTcGFjaW5nKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5ob3Jpem9u
dGFsX2JvcmRlcl9zcGFjaW5nOyB9CiBzaG9ydCBSZW5kZXJTdHlsZTo6dmVydGljYWxCb3JkZXJT
cGFjaW5nKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT52ZXJ0aWNhbF9ib3JkZXJfc3BhY2lu
ZzsgfQpAQCAtMTU2NSw5ICsxNTY1LDkgQEAgdm9pZCBSZW5kZXJTdHlsZTo6Z2V0U2hhZG93VmVy
dGljYWxFeHRlbnQoY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBMYXlvdXRVbml0ICYKICAgICB9
CiB9CiAKLUNvbG9yIFJlbmRlclN0eWxlOjpjb2xvckluY2x1ZGluZ0ZhbGxiYWNrKGludCBjb2xv
clByb3BlcnR5LCBib29sIHZpc2l0ZWRMaW5rKSBjb25zdAorT3B0aW9uYWxSR0JBIFJlbmRlclN0
eWxlOjpjb2xvckluY2x1ZGluZ0ZhbGxiYWNrKGludCBjb2xvclByb3BlcnR5LCBib29sIHZpc2l0
ZWRMaW5rKSBjb25zdAogewotICAgIENvbG9yIHJlc3VsdDsKKyAgICBPcHRpb25hbFJHQkEgcmVz
dWx0OwogICAgIEVCb3JkZXJTdHlsZSBib3JkZXJTdHlsZSA9IEJOT05FOwogICAgIHN3aXRjaCAo
Y29sb3JQcm9wZXJ0eSkgewogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I6CkBA
IC0xNjIzLDEzICsxNjIzLDEzIEBAIENvbG9yIFJlbmRlclN0eWxlOjpjb2xvckluY2x1ZGluZ0Zh
bGxiYWNrKGludCBjb2xvclByb3BlcnR5LCBib29sIHZpc2l0ZWRMaW5rKSBjCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotQ29sb3IgUmVuZGVyU3R5bGU6OnZpc2l0ZWREZXBlbmRlbnRDb2xvcihp
bnQgY29sb3JQcm9wZXJ0eSkgY29uc3QKK09wdGlvbmFsUkdCQSBSZW5kZXJTdHlsZTo6dmlzaXRl
ZERlcGVuZGVudENvbG9yKGludCBjb2xvclByb3BlcnR5KSBjb25zdAogewotICAgIENvbG9yIHVu
dmlzaXRlZENvbG9yID0gY29sb3JJbmNsdWRpbmdGYWxsYmFjayhjb2xvclByb3BlcnR5LCBmYWxz
ZSk7CisgICAgT3B0aW9uYWxSR0JBIHVudmlzaXRlZENvbG9yID0gY29sb3JJbmNsdWRpbmdGYWxs
YmFjayhjb2xvclByb3BlcnR5LCBmYWxzZSk7CiAgICAgaWYgKGluc2lkZUxpbmsoKSAhPSBJbnNp
ZGVWaXNpdGVkTGluaykKICAgICAgICAgcmV0dXJuIHVudmlzaXRlZENvbG9yOwogCi0gICAgQ29s
b3IgdmlzaXRlZENvbG9yID0gY29sb3JJbmNsdWRpbmdGYWxsYmFjayhjb2xvclByb3BlcnR5LCB0
cnVlKTsKKyAgICBPcHRpb25hbFJHQkEgdmlzaXRlZENvbG9yID0gY29sb3JJbmNsdWRpbmdGYWxs
YmFjayhjb2xvclByb3BlcnR5LCB0cnVlKTsKIAogICAgIC8vIFRleHQgZGVjb3JhdGlvbiBjb2xv
ciB2YWxpZGl0eSBpcyBwcmVzZXJ2ZWQgKGNoZWNrZWQgaW4gUmVuZGVyT2JqZWN0OjpkZWNvcmF0
aW9uQ29sb3IpLgogICAgIGlmIChjb2xvclByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0VGV4
dERlY29yYXRpb25Db2xvcikKQEAgLTE2NDAsMTEgKzE2NDAsMTEgQEAgQ29sb3IgUmVuZGVyU3R5
bGU6OnZpc2l0ZWREZXBlbmRlbnRDb2xvcihpbnQgY29sb3JQcm9wZXJ0eSkgY29uc3QKICAgICAv
LyB3ZSdyZSByZXR1cm5pbmcgdW52aXNpdGVkIGluZm8gZm9yIGEgdmlzaXRlZCBsaW5rLCBidXQg
Z2l2ZW4gb3VyIHJlc3RyaWN0aW9uIHRoYXQgdGhlIGFscGhhIHZhbHVlcwogICAgIC8vIGhhdmUg
dG8gbWF0Y2gsIGl0IG1ha2VzIG1vcmUgc2Vuc2UgdG8gcmV0dXJuIHRoZSB1bnZpc2l0ZWQgYmFj
a2dyb3VuZCBjb2xvciBpZiBzcGVjaWZpZWQgdGhhbiBpdAogICAgIC8vIGRvZXMgdG8gcmV0dXJu
IGJsYWNrLiBUaGlzIGJlaGF2aW9yIG1hdGNoZXMgd2hhdCBGaXJlZm94IDQgZG9lcyBhcyB3ZWxs
LgotICAgIGlmIChjb2xvclByb3BlcnR5ID09IENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yICYm
IHZpc2l0ZWRDb2xvciA9PSBDb2xvcjo6dHJhbnNwYXJlbnQpCisgICAgaWYgKGNvbG9yUHJvcGVy
dHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IgJiYgdmlzaXRlZENvbG9yID09IE9wdGlv
bmFsUkdCQTo6dHJhbnNwYXJlbnQpCiAgICAgICAgIHJldHVybiB1bnZpc2l0ZWRDb2xvcjsKIAog
ICAgIC8vIFRha2UgdGhlIGFscGhhIGZyb20gdGhlIHVudmlzaXRlZCBjb2xvciwgYnV0IGdldCB0
aGUgUkdCIHZhbHVlcyBmcm9tIHRoZSB2aXNpdGVkIGNvbG9yLgotICAgIHJldHVybiBDb2xvcih2
aXNpdGVkQ29sb3IucmVkKCksIHZpc2l0ZWRDb2xvci5ncmVlbigpLCB2aXNpdGVkQ29sb3IuYmx1
ZSgpLCB1bnZpc2l0ZWRDb2xvci5hbHBoYSgpKTsKKyAgICByZXR1cm4gT3B0aW9uYWxSR0JBKHZp
c2l0ZWRDb2xvci5yZWQoKSwgdmlzaXRlZENvbG9yLmdyZWVuKCksIHZpc2l0ZWRDb2xvci5ibHVl
KCksIHVudmlzaXRlZENvbG9yLmFscGhhKCkpOwogfQogCiBjb25zdCBCb3JkZXJWYWx1ZSYgUmVu
ZGVyU3R5bGU6OmJvcmRlckJlZm9yZSgpIGNvbnN0CkBAIC0xNzgyLDcgKzE3ODIsNyBAQCBUZXh0
RW1waGFzaXNNYXJrIFJlbmRlclN0eWxlOjp0ZXh0RW1waGFzaXNNYXJrKCkgY29uc3QKIH0KIAog
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi1Db2xvciBSZW5kZXJTdHlsZTo6aW5pdGlhbFRhcEhp
Z2hsaWdodENvbG9yKCkKK09wdGlvbmFsUkdCQSBSZW5kZXJTdHlsZTo6aW5pdGlhbFRhcEhpZ2hs
aWdodENvbG9yKCkKIHsKICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OnRhcEhpZ2hsaWdodENvbG9y
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmlu
ZGV4IGNjY2M5M2Q4MGVmZGNkYjJiZTliMTc4MmEyYjNjNWRkOGQ1Mzc2MTIuLjEwY2EwMTFmOTVh
OWFkNTM4MTI3YTI1MTE4NDUzOGZlYTA0ZGY2ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC01NDcsNyArNTQ3LDcgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBoYXNCYWNrZ3JvdW5kKCkgY29uc3QKICAgICB7Ci0gICAgICAgIENvbG9yIGNvbG9y
ID0gdmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKKyAg
ICAgICAgT3B0aW9uYWxSR0JBIGNvbG9yID0gdmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yKTsKICAgICAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSAmJiBjb2xv
ci5hbHBoYSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIHJldHVybiBoYXNC
YWNrZ3JvdW5kSW1hZ2UoKTsKQEAgLTg5NSw3ICs4OTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBn
ZXRUZXh0U2hhZG93QmxvY2tEaXJlY3Rpb25FeHRlbnQoTGF5b3V0VW5pdCYgbG9naWNhbFRvcCwg
TGF5b3V0VW5pdCYgbG9naWNhbEJvdHRvbSkgY29uc3QgeyBnZXRTaGFkb3dCbG9ja0RpcmVjdGlv
bkV4dGVudCh0ZXh0U2hhZG93KCksIGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20pOyB9CiAKICAg
ICBmbG9hdCB0ZXh0U3Ryb2tlV2lkdGgoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0
YS0+dGV4dFN0cm9rZVdpZHRoOyB9Ci0gICAgc3RhdGljIENvbG9yU3BhY2UgY29sb3JTcGFjZSgp
IHsgcmV0dXJuIENvbG9yU3BhY2VTUkdCOyB9IC8vIEZJWE1FOiBSZW1vdmUgYWZ0ZXIgYWRkaW5n
IGNvbG9yIHNwYWNlIGhhbmRsaW5nIGludG8gdGhlIENvbG9yIGNsYXNzLgorICAgIHN0YXRpYyBD
b2xvclNwYWNlIGNvbG9yU3BhY2UoKSB7IHJldHVybiBDb2xvclNwYWNlU1JHQjsgfSAvLyBGSVhN
RTogUmVtb3ZlIGFmdGVyIGFkZGluZyBjb2xvciBzcGFjZSBoYW5kbGluZyBpbnRvIHRoZSBPcHRp
b25hbFJHQkEgY2xhc3MuCiAgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5vcGFjaXR5OyB9CiAgICAgQ29udHJvbFBhcnQgYXBwZWFyYW5jZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnRyb2xQYXJ0PihyYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9hcHBlYXJhbmNlKTsgfQogICAgIEFzcGVjdFJhdGlvVHlwZSBhc3BlY3RSYXRpb1R5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxBc3BlY3RSYXRpb1R5cGU+KHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2FzcGVjdFJhdGlvVHlwZSk7IH0KQEAgLTExMTgsNyArMTExOCw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBDb2xvciB0
YXBIaWdobGlnaHRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50YXBI
aWdobGlnaHRDb2xvcjsgfQorICAgIE9wdGlvbmFsUkdCQSB0YXBIaWdobGlnaHRDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50YXBIaWdobGlnaHRDb2xvcjsgfQogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0xMjYxLDcgKzEyNjEsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZXNldEJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSB7IFNFVF9WQVIoc3Vycm91bmQs
IGJvcmRlci5tX2JvdHRvbUxlZnQsIGluaXRpYWxCb3JkZXJSYWRpdXMoKSk7IH0KICAgICB2b2lk
IHJlc2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRl
ci5tX2JvdHRvbVJpZ2h0LCBpbml0aWFsQm9yZGVyUmFkaXVzKCkpOyB9CiAKLSAgICB2b2lkIHNl
dEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwg
bV9jb2xvciwgdik7IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBPcHRpb25h
bFJHQkEmIHYpIHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1fY29sb3IsIHYpOyB9CiAKICAgICB2
b2lkIHNldEJhY2tncm91bmRYUG9zaXRpb24oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKG1fYmFj
a2dyb3VuZCwgbV9iYWNrZ3JvdW5kLm1feFBvc2l0aW9uLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0K
ICAgICB2b2lkIHNldEJhY2tncm91bmRZUG9zaXRpb24oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFS
KG1fYmFja2dyb3VuZCwgbV9iYWNrZ3JvdW5kLm1feVBvc2l0aW9uLCBXVEY6Om1vdmUobGVuZ3Ro
KSk7IH0KQEAgLTEyOTksMjEgKzEyOTksMjEgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRCb3Jk
ZXJMZWZ0V2lkdGgoZmxvYXQgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9sZWZ0Lm1f
d2lkdGgsIHYpOyB9CiAgICAgdm9pZCBzZXRCb3JkZXJMZWZ0U3R5bGUoRUJvcmRlclN0eWxlIHYp
IHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fbGVmdC5tX3N0eWxlLCB2KTsgfQotICAgIHZv
aWQgc2V0Qm9yZGVyTGVmdENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9CT1JERVJWQUxVRV9D
T0xPUihzdXJyb3VuZCwgYm9yZGVyLm1fbGVmdCwgdik7IH0KKyAgICB2b2lkIHNldEJvcmRlckxl
ZnRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIHYpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKHN1
cnJvdW5kLCBib3JkZXIubV9sZWZ0LCB2KTsgfQogICAgIHZvaWQgc2V0Qm9yZGVyUmlnaHRXaWR0
aChmbG9hdCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3JpZ2h0Lm1fd2lkdGgsIHYp
OyB9CiAgICAgdm9pZCBzZXRCb3JkZXJSaWdodFN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9W
QVIoc3Vycm91bmQsIGJvcmRlci5tX3JpZ2h0Lm1fc3R5bGUsIHYpOyB9Ci0gICAgdm9pZCBzZXRC
b3JkZXJSaWdodENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihz
dXJyb3VuZCwgYm9yZGVyLm1fcmlnaHQsIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJSaWdodENv
bG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgdikgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1Ioc3Vycm91
bmQsIGJvcmRlci5tX3JpZ2h0LCB2KTsgfQogICAgIHZvaWQgc2V0Qm9yZGVyVG9wV2lkdGgoZmxv
YXQgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV90b3AubV93aWR0aCwgdik7IH0KICAg
ICB2b2lkIHNldEJvcmRlclRvcFN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIoc3Vycm91
bmQsIGJvcmRlci5tX3RvcC5tX3N0eWxlLCB2KTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyVG9wQ29s
b3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKHN1cnJvdW5kLCBib3Jk
ZXIubV90b3AsIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJUb3BDb2xvcihjb25zdCBPcHRpb25h
bFJHQkEmIHYpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKHN1cnJvdW5kLCBib3JkZXIubV90b3As
IHYpOyB9CiAgICAgdm9pZCBzZXRCb3JkZXJCb3R0b21XaWR0aChmbG9hdCB2KSB7IFNFVF9WQVIo
c3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbS5tX3dpZHRoLCB2KTsgfQogICAgIHZvaWQgc2V0Qm9y
ZGVyQm90dG9tU3R5bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVy
Lm1fYm90dG9tLm1fc3R5bGUsIHYpOyB9Ci0gICAgdm9pZCBzZXRCb3JkZXJCb3R0b21Db2xvcihj
b25zdCBDb2xvciYgdikgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1Ioc3Vycm91bmQsIGJvcmRlci5t
X2JvdHRvbSwgdik7IH0KKyAgICB2b2lkIHNldEJvcmRlckJvdHRvbUNvbG9yKGNvbnN0IE9wdGlv
bmFsUkdCQSYgdikgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1Ioc3Vycm91bmQsIGJvcmRlci5tX2Jv
dHRvbSwgdik7IH0KIAogICAgIHZvaWQgc2V0T3V0bGluZVdpZHRoKHVuc2lnbmVkIHNob3J0IHYp
IHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1fb3V0bGluZS5tX3dpZHRoLCB2KTsgfQogICAgIHZv
aWQgc2V0T3V0bGluZVN0eWxlSXNBdXRvKE91dGxpbmVJc0F1dG8gaXNBdXRvKSB7IFNFVF9WQVIo
bV9iYWNrZ3JvdW5kLCBtX291dGxpbmUubV9pc0F1dG8sIGlzQXV0byk7IH0KICAgICB2b2lkIHNl
dE91dGxpbmVTdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9v
dXRsaW5lLm1fc3R5bGUsIHYpOyB9Ci0gICAgdm9pZCBzZXRPdXRsaW5lQ29sb3IoY29uc3QgQ29s
b3ImIHYpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKG1fYmFja2dyb3VuZCwgbV9vdXRsaW5lLCB2
KTsgfQorICAgIHZvaWQgc2V0T3V0bGluZUNvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgdikgeyBT
RVRfQk9SREVSVkFMVUVfQ09MT1IobV9iYWNrZ3JvdW5kLCBtX291dGxpbmUsIHYpOyB9CiAKICAg
ICB2b2lkIHNldE92ZXJmbG93WChFT3ZlcmZsb3cgdikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0
T3ZlcmZsb3dYKHYpOyB9CiAgICAgdm9pZCBzZXRPdmVyZmxvd1koRU92ZXJmbG93IHYpIHsgbm9u
aW5oZXJpdGVkX2ZsYWdzLnNldE92ZXJmbG93WSh2KTsgfQpAQCAtMTM0Niw3ICsxMzQ2LDcgQEAg
cHVibGljOgogICAgIH0KICNlbmRpZgogCi0gICAgdm9pZCBzZXRDb2xvcihjb25zdCBDb2xvciYp
OworICAgIHZvaWQgc2V0Q29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJik7CiAgICAgdm9pZCBzZXRU
ZXh0SW5kZW50KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgaW5k
ZW50LCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgIHZv
aWQgc2V0VGV4dEluZGVudExpbmUoVGV4dEluZGVudExpbmUgdikgeyBTRVRfVkFSKHJhcmVJbmhl
cml0ZWREYXRhLCBtX3RleHRJbmRlbnRMaW5lLCB2KTsgfQpAQCAtMTQ4Niw5ICsxNDg2LDkgQEAg
cHVibGljOgogICAgIC8vIENTUzMgU2V0dGVycwogICAgIHZvaWQgc2V0T3V0bGluZU9mZnNldChp
bnQgdikgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9vdXRsaW5lLm1fb2Zmc2V0LCB2KTsgfQog
ICAgIHZvaWQgc2V0VGV4dFNoYWRvdyhzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4sIGJvb2wg
YWRkID0gZmFsc2UpOwotICAgIHZvaWQgc2V0VGV4dFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBj
KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRTdHJva2VDb2xvciwgYyk7IH0KKyAg
ICB2b2lkIHNldFRleHRTdHJva2VDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIGMpIHsgU0VUX1ZB
UihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFN0cm9rZUNvbG9yLCBjKTsgfQogICAgIHZvaWQgc2V0
VGV4dFN0cm9rZVdpZHRoKGZsb2F0IHcpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4
dFN0cm9rZVdpZHRoLCB3KTsgfQotICAgIHZvaWQgc2V0VGV4dEZpbGxDb2xvcihjb25zdCBDb2xv
ciYgYykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RmlsbENvbG9yLCBjKTsgfQor
ICAgIHZvaWQgc2V0VGV4dEZpbGxDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIGMpIHsgU0VUX1ZB
UihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEZpbGxDb2xvciwgYyk7IH0KICAgICB2b2lkIHNldE9w
YWNpdHkoZmxvYXQgZikgeyBmbG9hdCB2ID0gY2xhbXBUbzxmbG9hdD4oZiwgMCwgMSk7IFNFVF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG9wYWNpdHksIHYpOyB9CiAgICAgdm9pZCBzZXRBcHBl
YXJhbmNlKENvbnRyb2xQYXJ0IGEpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9h
cHBlYXJhbmNlLCBhKTsgfQogICAgIC8vIEZvciB2YWxpZCB2YWx1ZXMgb2YgYm94LWFsaWduIHNl
ZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA5L1dELWNzczMtZmxleGJveC0yMDA5MDcyMy8jYWxp
Z25tZW50CkBAIC0xNTgyLDcgKzE1ODIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb2x1bW5G
aWxsKENvbHVtbkZpbGwgY29sdW1uRmlsbCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLT5tX211bHRpQ29sLCBtX2ZpbGwsIGNvbHVtbkZpbGwpOyB9CiAgICAgdm9pZCBz
ZXRDb2x1bW5HYXAoZmxvYXQgZikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vz
cygpLT5tX211bHRpQ29sLCBtX25vcm1hbEdhcCwgZmFsc2UpOyBTRVRfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29sLCBtX2dhcCwgZik7IH0KICAgICB2b2lkIHNl
dEhhc05vcm1hbENvbHVtbkdhcCgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS0+bV9tdWx0aUNvbCwgbV9ub3JtYWxHYXAsIHRydWUpOyBTRVRfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29sLCBtX2dhcCwgMCk7IH0KLSAgICB2b2lkIHNl
dENvbHVtblJ1bGVDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1Io
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbXVsdGlDb2wsIG1fcnVsZSwgYyk7IH0K
KyAgICB2b2lkIHNldENvbHVtblJ1bGVDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIGMpIHsgU0VU
X0JPUkRFUlZBTFVFX0NPTE9SKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRp
Q29sLCBtX3J1bGUsIGMpOyB9CiAgICAgdm9pZCBzZXRDb2x1bW5SdWxlU3R5bGUoRUJvcmRlclN0
eWxlIGIpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNv
bCwgbV9ydWxlLm1fc3R5bGUsIGIpOyB9CiAgICAgdm9pZCBzZXRDb2x1bW5SdWxlV2lkdGgodW5z
aWduZWQgc2hvcnQgdykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5t
X211bHRpQ29sLCBtX3J1bGUubV93aWR0aCwgdyk7IH0KICAgICB2b2lkIHJlc2V0Q29sdW1uUnVs
ZSgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbCwg
bV9ydWxlLCBCb3JkZXJWYWx1ZSgpKTsgfQpAQCAtMTYwMSw4ICsxNjAxLDggQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0VHJhbnNmb3JtT3JpZ2luWihmbG9hdCBmKSB7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEuYWNjZXNzKCktPm1fdHJhbnNmb3JtLCBtX3osIGYpOyB9CiAgICAgdm9pZCBz
ZXRTcGVhayhFU3BlYWsgcykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBzcGVhaywgcyk7
IH0KICAgICB2b2lkIHNldFRleHRDb21iaW5lKFRleHRDb21iaW5lIHYpIHsgU0VUX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV90ZXh0Q29tYmluZSwgdik7IH0KLSAgICB2b2lkIHNldFRleHRE
ZWNvcmF0aW9uQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbV90ZXh0RGVjb3JhdGlvbkNvbG9yLCBjKTsgfQotICAgIHZvaWQgc2V0VGV4dEVtcGhh
c2lzQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4
dEVtcGhhc2lzQ29sb3IsIGMpOyB9CisgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvbkNvbG9yKGNv
bnN0IE9wdGlvbmFsUkdCQSYgYykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Rl
eHREZWNvcmF0aW9uQ29sb3IsIGMpOyB9CisgICAgdm9pZCBzZXRUZXh0RW1waGFzaXNDb2xvcihj
b25zdCBPcHRpb25hbFJHQkEmIGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVt
cGhhc2lzQ29sb3IsIGMpOyB9CiAgICAgdm9pZCBzZXRUZXh0RW1waGFzaXNGaWxsKFRleHRFbXBo
YXNpc0ZpbGwgZmlsbCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RW1waGFzaXNG
aWxsLCBmaWxsKTsgfQogICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNN
YXJrIG1hcmspIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzTWFyaywg
bWFyayk7IH0KICAgICB2b2lkIHNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsoY29uc3QgQXRvbWlj
U3RyaW5nJiBtYXJrKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc0N1
c3RvbU1hcmssIG1hcmspOyB9CkBAIC0xNjczLDcgKzE2NzMsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgdm9pZCBzZXRUYXBIaWdobGlnaHRDb2xv
cihjb25zdCBDb2xvciYgYykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0YXBIaWdobGln
aHRDb2xvciwgYyk7IH0KKyAgICB2b2lkIHNldFRhcEhpZ2hsaWdodENvbG9yKGNvbnN0IE9wdGlv
bmFsUkdCQSYgYykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0YXBIaWdobGlnaHRDb2xv
ciwgYyk7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTY5OCwxNCArMTY5OCwx
NCBAQCBwdWJsaWM6CiAgICAgU1ZHUmVuZGVyU3R5bGUmIGFjY2Vzc1NWR1N0eWxlKCkgeyByZXR1
cm4gKm1fc3ZnU3R5bGUuYWNjZXNzKCk7IH0KIAogICAgIGNvbnN0IFNWR1BhaW50OjpTVkdQYWlu
dFR5cGUmIGZpbGxQYWludFR5cGUoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmZpbGxQYWlu
dFR5cGUoKTsgfQotICAgIENvbG9yIGZpbGxQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3Zn
U3R5bGUoKS5maWxsUGFpbnRDb2xvcigpOyB9Ci0gICAgdm9pZCBzZXRGaWxsUGFpbnRDb2xvcihj
b25zdCBDb2xvciYgYykgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldEZpbGxQYWludChTVkdQYWludDo6
U1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiwgYywgIiIpOyB9CisgICAgT3B0aW9uYWxSR0JBIGZpbGxQ
YWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5maWxsUGFpbnRDb2xvcigpOyB9
CisgICAgdm9pZCBzZXRGaWxsUGFpbnRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIGMpIHsgYWNj
ZXNzU1ZHU3R5bGUoKS5zZXRGaWxsUGFpbnQoU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfUkdCQ09M
T1IsIGMsICIiKTsgfQogICAgIGZsb2F0IGZpbGxPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gc3Zn
U3R5bGUoKS5maWxsT3BhY2l0eSgpOyB9CiAgICAgdm9pZCBzZXRGaWxsT3BhY2l0eShmbG9hdCBm
KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0RmlsbE9wYWNpdHkoZik7IH0KIAogICAgIGNvbnN0IFNW
R1BhaW50OjpTVkdQYWludFR5cGUmIHN0cm9rZVBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN2
Z1N0eWxlKCkuc3Ryb2tlUGFpbnRUeXBlKCk7IH0KLSAgICBDb2xvciBzdHJva2VQYWludENvbG9y
KCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5zdHJva2VQYWludENvbG9yKCk7IH0KLSAgICB2
b2lkIHNldFN0cm9rZVBhaW50Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgYWNjZXNzU1ZHU3R5bGUo
KS5zZXRTdHJva2VQYWludChTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiwgYywgIiIp
OyB9CisgICAgT3B0aW9uYWxSR0JBIHN0cm9rZVBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBz
dmdTdHlsZSgpLnN0cm9rZVBhaW50Q29sb3IoKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlUGFpbnRD
b2xvcihjb25zdCBPcHRpb25hbFJHQkEmIGMpIHsgYWNjZXNzU1ZHU3R5bGUoKS5zZXRTdHJva2VQ
YWludChTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9SR0JDT0xPUiwgYywgIiIpOyB9CiAgICAgZmxv
YXQgc3Ryb2tlT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuc3Ryb2tlT3BhY2l0
eSgpOyB9CiAgICAgdm9pZCBzZXRTdHJva2VPcGFjaXR5KGZsb2F0IGYpIHsgYWNjZXNzU1ZHU3R5
bGUoKS5zZXRTdHJva2VPcGFjaXR5KGYpOyB9CiAgICAgY29uc3QgTGVuZ3RoJiBzdHJva2VXaWR0
aCgpIGNvbnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuc3Ryb2tlV2lkdGgoKTsgfQpAQCAtMTczOCw5
ICsxNzM4LDkgQEAgcHVibGljOgogICAgIGZsb2F0IHN0b3BPcGFjaXR5KCkgY29uc3QgeyByZXR1
cm4gc3ZnU3R5bGUoKS5zdG9wT3BhY2l0eSgpOyB9CiAgICAgdm9pZCBzZXRTdG9wT3BhY2l0eShm
bG9hdCBmKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3RvcE9wYWNpdHkoZik7IH0KIAotICAgIHZv
aWQgc2V0U3RvcENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0U3Rv
cENvbG9yKGMpOyB9Ci0gICAgdm9pZCBzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IGFj
Y2Vzc1NWR1N0eWxlKCkuc2V0Rmxvb2RDb2xvcihjKTsgfQotICAgIHZvaWQgc2V0TGlnaHRpbmdD
b2xvcihjb25zdCBDb2xvciYgYykgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldExpZ2h0aW5nQ29sb3Io
Yyk7IH0KKyAgICB2b2lkIHNldFN0b3BDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIGMpIHsgYWNj
ZXNzU1ZHU3R5bGUoKS5zZXRTdG9wQ29sb3IoYyk7IH0KKyAgICB2b2lkIHNldEZsb29kQ29sb3Io
Y29uc3QgT3B0aW9uYWxSR0JBJiBjKSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0Rmxvb2RDb2xvcihj
KTsgfQorICAgIHZvaWQgc2V0TGlnaHRpbmdDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIGMpIHsg
YWNjZXNzU1ZHU3R5bGUoKS5zZXRMaWdodGluZ0NvbG9yKGMpOyB9CiAKICAgICBTVkdMZW5ndGgg
YmFzZWxpbmVTaGlmdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5iYXNlbGluZVNo
aWZ0VmFsdWUoKTsgfQogICAgIHZvaWQgc2V0QmFzZWxpbmVTaGlmdFZhbHVlKFNWR0xlbmd0aCBz
KSB7IGFjY2Vzc1NWR1N0eWxlKCkuc2V0QmFzZWxpbmVTaGlmdFZhbHVlKHMpOyB9CkBAIC0xODQz
LDcgKzE4NDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBsYXN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5sYXN0Q2hpbGRTdGF0ZSgpOyB9CiAgICAgdm9pZCBz
ZXRMYXN0Q2hpbGRTdGF0ZSgpIHsgc2V0VW5pcXVlKCk7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRM
YXN0Q2hpbGRTdGF0ZSh0cnVlKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IgdmlzaXRl
ZERlcGVuZGVudENvbG9yKGludCBjb2xvclByb3BlcnR5KSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBPcHRpb25hbFJHQkEgdmlzaXRlZERlcGVuZGVudENvbG9yKGludCBjb2xvclByb3BlcnR5
KSBjb25zdDsKIAogICAgIHZvaWQgc2V0SGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMo
KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGll
cyh0cnVlKTsgfQogICAgIGJvb2wgaGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKSBj
b25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuaGFzRXhwbGljaXRseUluaGVyaXRlZFBy
b3BlcnRpZXMoKTsgfQpAQCAtMTg4NCw3ICsxODg0LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShD
VVJTT1JfVklTSUJJTElUWSkKICAgICBzdGF0aWMgQ3Vyc29yVmlzaWJpbGl0eSBpbml0aWFsQ3Vy
c29yVmlzaWJpbGl0eSgpIHsgcmV0dXJuIEN1cnNvclZpc2liaWxpdHlBdXRvOyB9CiAjZW5kaWYK
LSAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbENvbG9yKCkgeyByZXR1cm4gQ29sb3I6OmJsYWNrOyB9
CisgICAgc3RhdGljIE9wdGlvbmFsUkdCQSBpbml0aWFsQ29sb3IoKSB7IHJldHVybiBPcHRpb25h
bFJHQkE6OmJsYWNrOyB9CiAgICAgc3RhdGljIFN0eWxlSW1hZ2UqIGluaXRpYWxMaXN0U3R5bGVJ
bWFnZSgpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbEJvcmRlcldpZHRo
KCkgeyByZXR1cm4gMzsgfQogICAgIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpbml0aWFsQ29sdW1u
UnVsZVdpZHRoKCkgeyByZXR1cm4gMzsgfQpAQCAtMTk4NCw4ICsxOTg0LDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsUGVyc3BlY3RpdmUoKSB7IHJldHVybiAwOyB9CiAgICAg
c3RhdGljIExlbmd0aCBpbml0aWFsUGVyc3BlY3RpdmVPcmlnaW5YKCkgeyByZXR1cm4gTGVuZ3Ro
KDUwLjBmLCBQZXJjZW50KTsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFBlcnNwZWN0aXZl
T3JpZ2luWSgpIHsgcmV0dXJuIExlbmd0aCg1MC4wZiwgUGVyY2VudCk7IH0KLSAgICBzdGF0aWMg
Q29sb3IgaW5pdGlhbEJhY2tncm91bmRDb2xvcigpIHsgcmV0dXJuIENvbG9yOjp0cmFuc3BhcmVu
dDsgfQotICAgIHN0YXRpYyBDb2xvciBpbml0aWFsVGV4dEVtcGhhc2lzQ29sb3IoKSB7IHJldHVy
biBUZXh0RW1waGFzaXNGaWxsRmlsbGVkOyB9CisgICAgc3RhdGljIE9wdGlvbmFsUkdCQSBpbml0
aWFsQmFja2dyb3VuZENvbG9yKCkgeyByZXR1cm4gT3B0aW9uYWxSR0JBOjp0cmFuc3BhcmVudDsg
fQorICAgIHN0YXRpYyBPcHRpb25hbFJHQkEgaW5pdGlhbFRleHRFbXBoYXNpc0NvbG9yKCkgeyBy
ZXR1cm4gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZDsgfQogICAgIHN0YXRpYyBUZXh0RW1waGFzaXNG
aWxsIGluaXRpYWxUZXh0RW1waGFzaXNGaWxsKCkgeyByZXR1cm4gVGV4dEVtcGhhc2lzRmlsbEZp
bGxlZDsgfQogICAgIHN0YXRpYyBUZXh0RW1waGFzaXNNYXJrIGluaXRpYWxUZXh0RW1waGFzaXNN
YXJrKCkgeyByZXR1cm4gVGV4dEVtcGhhc2lzTWFya05vbmU7IH0KICAgICBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBpbml0aWFsVGV4dEVtcGhhc2lzQ3VzdG9tTWFyaygpIHsgcmV0dXJuIG51
bGxBdG9tOyB9CkBAIC0yMDYyLDcgKzIwNjIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wg
aW5pdGlhbFRvdWNoQ2FsbG91dEVuYWJsZWQoKSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIHN0YXRpYyBDb2xvciBpbml0aWFsVGFwSGlnaGxp
Z2h0Q29sb3IoKTsKKyAgICBzdGF0aWMgT3B0aW9uYWxSR0JBIGluaXRpYWxUYXBIaWdobGlnaHRD
b2xvcigpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElO
RykKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsVXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZygpIHsg
cmV0dXJuIGZhbHNlOyB9CkBAIC0yMDkxLDE4ICsyMDkxLDE4IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBjaGFuZ2VSZXF1aXJlc1JlcGFpbnRJZlRleHRPckJvcmRlck9yT3V0bGluZShjb25zdCBSZW5k
ZXJTdHlsZSYsIHVuc2lnbmVkJiBjaGFuZ2VkQ29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMpIGNv
bnN0OwogICAgIGJvb2wgY2hhbmdlUmVxdWlyZXNSZWNvbXBvc2l0ZUxheWVyKGNvbnN0IFJlbmRl
clN0eWxlJiwgdW5zaWduZWQmIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29u
c3Q7CiAKLSAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQ29sb3IoY29uc3QgQ29sb3ImKTsKLSAgICB2
b2lkIHNldFZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IsIHYp
OyB9Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcihjb25zdCBDb2xvciYg
dikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyTGVm
dENvbG9yLCB2KTsgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKGNv
bnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdmlzaXRlZExp
bmtCb3JkZXJSaWdodENvbG9yLCB2KTsgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJC
b3R0b21Db2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IsIHYpOyB9Ci0gICAgdm9pZCBzZXRWaXNp
dGVkTGlua0JvcmRlclRvcENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvciwgdik7IH0KLSAgICB2b2lk
IHNldFZpc2l0ZWRMaW5rT3V0bGluZUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IsIHYpOyB9Ci0gICAg
dm9pZCBzZXRWaXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29sLCBtX3Zpc2l0ZWRM
aW5rQ29sdW1uUnVsZUNvbG9yLCB2KTsgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUZXh0RGVj
b3JhdGlvbkNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERh
dGEsIG1fdmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9yLCB2KTsgfQotICAgIHZvaWQgc2V0
VmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJh
cmVJbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yLCB2KTsgfQotICAg
IHZvaWQgc2V0VmlzaXRlZExpbmtUZXh0RmlsbENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9W
QVIocmFyZUluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvciwgdik7IH0KLSAg
ICB2b2lkIHNldFZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNF
VF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yLCB2KTsg
fQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmKTsKKyAg
ICB2b2lkIHNldFZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYg
dikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rQmFja2dyb3Vu
ZENvbG9yLCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IoY29u
c3QgT3B0aW9uYWxSR0JBJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdmlz
aXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua0Jv
cmRlclJpZ2h0Q29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiB2KSB7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yLCB2KTsgfQorICAgIHZv
aWQgc2V0VmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcihjb25zdCBPcHRpb25hbFJHQkEmIHYp
IHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92aXNpdGVkTGlua0JvcmRlckJvdHRv
bUNvbG9yLCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcihjb25z
dCBPcHRpb25hbFJHQkEmIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92aXNp
dGVkTGlua0JvcmRlclRvcENvbG9yLCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtPdXRs
aW5lQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRWaXNp
dGVkTGlua0NvbHVtblJ1bGVDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIHYpIHsgU0VUX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbCwgbV92aXNpdGVkTGlua0Nv
bHVtblJ1bGVDb2xvciwgdik7IH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rVGV4dERlY29yYXRp
b25Db2xvcihjb25zdCBPcHRpb25hbFJHQkEmIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbV92aXNpdGVkTGlua1RleHREZWNvcmF0aW9uQ29sb3IsIHYpOyB9CisgICAgdm9pZCBz
ZXRWaXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgdikgeyBT
RVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yLCB2
KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUZXh0RmlsbENvbG9yKGNvbnN0IE9wdGlvbmFs
UkdCQSYgdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua1RleHRGaWxs
Q29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua1RleHRTdHJva2VDb2xvcihjb25z
dCBPcHRpb25hbFJHQkEmIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExp
bmtUZXh0U3Ryb2tlQ29sb3IsIHYpOyB9CiAKICAgICB2b2lkIGluaGVyaXRVbmljb2RlQmlkaUZy
b20oY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudCkgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0VW5p
Y29kZUJpZGkocGFyZW50LT5ub25pbmhlcml0ZWRfZmxhZ3MudW5pY29kZUJpZGkoKSk7IH0KICAg
ICB2b2lkIGdldFNoYWRvd0V4dGVudChjb25zdCBTaGFkb3dEYXRhKiwgTGF5b3V0VW5pdCYgdG9w
LCBMYXlvdXRVbml0JiByaWdodCwgTGF5b3V0VW5pdCYgYm90dG9tLCBMYXlvdXRVbml0JiBsZWZ0
KSBjb25zdDsKQEAgLTIxNTIsMzggKzIxNTIsMzggQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IGlzRGlzcGxheUZsZXhpYmxlQm94KGRpc3BsYXkpIHx8IGlzRGlzcGxheUdyaWRCb3goZGlzcGxh
eSk7CiAgICAgfQogCi0gICAgLy8gQ29sb3IgYWNjZXNzb3JzIGFyZSBhbGwgcHJpdmF0ZSB0byBt
YWtlIHN1cmUgY2FsbGVycyB1c2UgdmlzaXRlZERlcGVuZGVudENvbG9yIGluc3RlYWQgdG8gYWNj
ZXNzIHRoZW0uCi0gICAgc3RhdGljIENvbG9yIGludmFsaWRDb2xvcigpIHsgcmV0dXJuIENvbG9y
KCk7IH0KLSAgICBDb2xvciBib3JkZXJMZWZ0Q29sb3IoKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+Ym9yZGVyLmxlZnQoKS5jb2xvcigpOyB9Ci0gICAgQ29sb3IgYm9yZGVyUmlnaHRDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIucmlnaHQoKS5jb2xvcigpOyB9Ci0gICAg
Q29sb3IgYm9yZGVyVG9wQ29sb3IoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnRv
cCgpLmNvbG9yKCk7IH0KLSAgICBDb2xvciBib3JkZXJCb3R0b21Db2xvcigpIGNvbnN0IHsgcmV0
dXJuIHN1cnJvdW5kLT5ib3JkZXIuYm90dG9tKCkuY29sb3IoKTsgfQotICAgIENvbG9yIGJhY2tn
cm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZC0+Y29sb3IoKTsgfQotICAg
IENvbG9yIGNvbG9yKCkgY29uc3Q7Ci0gICAgQ29sb3IgY29sdW1uUnVsZUNvbG9yKCkgY29uc3Qg
eyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1fcnVsZS5jb2xvcigp
OyB9Ci0gICAgQ29sb3Igb3V0bGluZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5k
LT5vdXRsaW5lKCkuY29sb3IoKTsgfQotICAgIENvbG9yIHRleHRFbXBoYXNpc0NvbG9yKCkgY29u
c3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0NvbG9yOyB9Ci0gICAg
Q29sb3IgdGV4dEZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50
ZXh0RmlsbENvbG9yOyB9Ci0gICAgQ29sb3IgdGV4dFN0cm9rZUNvbG9yKCkgY29uc3QgeyByZXR1
cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRTdHJva2VDb2xvcjsgfQotICAgIENvbG9yIHZpc2l0
ZWRMaW5rQ29sb3IoKSBjb25zdDsKLSAgICBDb2xvciB2aXNpdGVkTGlua0JhY2tncm91bmRDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rQmFj
a2dyb3VuZENvbG9yOyB9Ci0gICAgQ29sb3IgdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IoKSBj
b25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV92aXNpdGVkTGlua0JvcmRlckxl
ZnRDb2xvcjsgfQotICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRD
b2xvcjsgfQotICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV92aXNpdGVkTGlua0JvcmRlckJvdHRvbUNv
bG9yOyB9Ci0gICAgQ29sb3IgdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3I7IH0K
LSAgICBDb2xvciB2aXNpdGVkTGlua091dGxpbmVDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9yOyB9Ci0gICAgQ29sb3Ig
dmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9tdWx0aUNvbC0+bV92aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcjsgfQotICAg
IENvbG9yIHRleHREZWNvcmF0aW9uQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV90ZXh0RGVjb3JhdGlvbkNvbG9yOyB9Ci0gICAgQ29sb3IgdmlzaXRlZExpbmtU
ZXh0RGVjb3JhdGlvbkNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fdmlzaXRlZExpbmtUZXh0RGVjb3JhdGlvbkNvbG9yOyB9Ci0gICAgQ29sb3IgdmlzaXRlZExp
bmtUZXh0RW1waGFzaXNDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT52
aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yOyB9Ci0gICAgQ29sb3IgdmlzaXRlZExpbmtUZXh0
RmlsbENvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5r
VGV4dEZpbGxDb2xvcjsgfQotICAgIENvbG9yIHZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yKCkg
Y29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNv
bG9yOyB9Ci0KLSAgICBDb2xvciBjb2xvckluY2x1ZGluZ0ZhbGxiYWNrKGludCBjb2xvclByb3Bl
cnR5LCBib29sIHZpc2l0ZWRMaW5rKSBjb25zdDsKLQotICAgIENvbG9yIHN0b3BDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIHN2Z1N0eWxlKCkuc3RvcENvbG9yKCk7IH0KLSAgICBDb2xvciBmbG9vZENv
bG9yKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5mbG9vZENvbG9yKCk7IH0KLSAgICBDb2xv
ciBsaWdodGluZ0NvbG9yKCkgY29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9y
KCk7IH0KKyAgICAvLyBPcHRpb25hbFJHQkEgYWNjZXNzb3JzIGFyZSBhbGwgcHJpdmF0ZSB0byBt
YWtlIHN1cmUgY2FsbGVycyB1c2UgdmlzaXRlZERlcGVuZGVudENvbG9yIGluc3RlYWQgdG8gYWNj
ZXNzIHRoZW0uCisgICAgc3RhdGljIE9wdGlvbmFsUkdCQSBpbnZhbGlkQ29sb3IoKSB7IHJldHVy
biBPcHRpb25hbFJHQkEoKTsgfQorICAgIE9wdGlvbmFsUkdCQSBib3JkZXJMZWZ0Q29sb3IoKSBj
b25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmxlZnQoKS5jb2xvcigpOyB9CisgICAgT3B0
aW9uYWxSR0JBIGJvcmRlclJpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9y
ZGVyLnJpZ2h0KCkuY29sb3IoKTsgfQorICAgIE9wdGlvbmFsUkdCQSBib3JkZXJUb3BDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIudG9wKCkuY29sb3IoKTsgfQorICAgIE9w
dGlvbmFsUkdCQSBib3JkZXJCb3R0b21Db2xvcigpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5i
b3JkZXIuYm90dG9tKCkuY29sb3IoKTsgfQorICAgIE9wdGlvbmFsUkdCQSBiYWNrZ3JvdW5kQ29s
b3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmQtPmNvbG9yKCk7IH0KKyAgICBPcHRpb25h
bFJHQkEgY29sb3IoKSBjb25zdDsKKyAgICBPcHRpb25hbFJHQkEgY29sdW1uUnVsZUNvbG9yKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1fcnVsZS5j
b2xvcigpOyB9CisgICAgT3B0aW9uYWxSR0JBIG91dGxpbmVDb2xvcigpIGNvbnN0IHsgcmV0dXJu
IG1fYmFja2dyb3VuZC0+b3V0bGluZSgpLmNvbG9yKCk7IH0KKyAgICBPcHRpb25hbFJHQkEgdGV4
dEVtcGhhc2lzQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVt
cGhhc2lzQ29sb3I7IH0KKyAgICBPcHRpb25hbFJHQkEgdGV4dEZpbGxDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RmlsbENvbG9yOyB9CisgICAgT3B0aW9uYWxS
R0JBIHRleHRTdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50
ZXh0U3Ryb2tlQ29sb3I7IH0KKyAgICBPcHRpb25hbFJHQkEgdmlzaXRlZExpbmtDb2xvcigpIGNv
bnN0OworICAgIE9wdGlvbmFsUkdCQSB2aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENv
bG9yOyB9CisgICAgT3B0aW9uYWxSR0JBIHZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRlZExpbmtCb3JkZXJMZWZ0
Q29sb3I7IH0KKyAgICBPcHRpb25hbFJHQkEgdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRlZExpbmtCb3JkZXJS
aWdodENvbG9yOyB9CisgICAgT3B0aW9uYWxSR0JBIHZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29s
b3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV92aXNpdGVkTGlua0Jv
cmRlckJvdHRvbUNvbG9yOyB9CisgICAgT3B0aW9uYWxSR0JBIHZpc2l0ZWRMaW5rQm9yZGVyVG9w
Q29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV92aXNpdGVkTGlu
a0JvcmRlclRvcENvbG9yOyB9CisgICAgT3B0aW9uYWxSR0JBIHZpc2l0ZWRMaW5rT3V0bGluZUNv
bG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRlZExpbmtP
dXRsaW5lQ29sb3I7IH0KKyAgICBPcHRpb25hbFJHQkEgdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29s
b3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+bV92
aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcjsgfQorICAgIE9wdGlvbmFsUkdCQSB0ZXh0RGVjb3Jh
dGlvbkNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdGV4dERl
Y29yYXRpb25Db2xvcjsgfQorICAgIE9wdGlvbmFsUkdCQSB2aXNpdGVkTGlua1RleHREZWNvcmF0
aW9uQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV92aXNpdGVk
TGlua1RleHREZWNvcmF0aW9uQ29sb3I7IH0KKyAgICBPcHRpb25hbFJHQkEgdmlzaXRlZExpbmtU
ZXh0RW1waGFzaXNDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT52aXNp
dGVkTGlua1RleHRFbXBoYXNpc0NvbG9yOyB9CisgICAgT3B0aW9uYWxSR0JBIHZpc2l0ZWRMaW5r
VGV4dEZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT52aXNpdGVk
TGlua1RleHRGaWxsQ29sb3I7IH0KKyAgICBPcHRpb25hbFJHQkEgdmlzaXRlZExpbmtUZXh0U3Ry
b2tlQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtU
ZXh0U3Ryb2tlQ29sb3I7IH0KKworICAgIE9wdGlvbmFsUkdCQSBjb2xvckluY2x1ZGluZ0ZhbGxi
YWNrKGludCBjb2xvclByb3BlcnR5LCBib29sIHZpc2l0ZWRMaW5rKSBjb25zdDsKKworICAgIE9w
dGlvbmFsUkdCQSBzdG9wQ29sb3IoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLnN0b3BDb2xv
cigpOyB9CisgICAgT3B0aW9uYWxSR0JBIGZsb29kQ29sb3IoKSBjb25zdCB7IHJldHVybiBzdmdT
dHlsZSgpLmZsb29kQ29sb3IoKTsgfQorICAgIE9wdGlvbmFsUkdCQSBsaWdodGluZ0NvbG9yKCkg
Y29uc3QgeyByZXR1cm4gc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCk7IH0KIAogICAgIHZvaWQg
YXBwZW5kQ29udGVudChzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+KTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCmluZGV4IGJmOTdh
Y2UxN2U0NTk4NDE1ZGUwNWVhMTUwMWE4ZDliODE1MDc5ZDguLjVlNDZjMDllNjVkYWNlMTkzODE1
ODI1OThlZjQzODkwMDEzMmQ5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TVkdSZW5kZXJTdHlsZS5oCkBAIC03NSwxOSArNzUsMTkgQEAgcHVibGljOgogICAgIHN0
YXRpYyBFR2x5cGhPcmllbnRhdGlvbiBpbml0aWFsR2x5cGhPcmllbnRhdGlvblZlcnRpY2FsKCkg
eyByZXR1cm4gR09fQVVUTzsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsRmlsbE9wYWNpdHko
KSB7IHJldHVybiAxOyB9CiAgICAgc3RhdGljIFNWR1BhaW50OjpTVkdQYWludFR5cGUgaW5pdGlh
bEZpbGxQYWludFR5cGUoKSB7IHJldHVybiBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9SR0JDT0xP
UjsgfQotICAgIHN0YXRpYyBDb2xvciBpbml0aWFsRmlsbFBhaW50Q29sb3IoKSB7IHJldHVybiBD
b2xvcjo6YmxhY2s7IH0KKyAgICBzdGF0aWMgT3B0aW9uYWxSR0JBIGluaXRpYWxGaWxsUGFpbnRD
b2xvcigpIHsgcmV0dXJuIE9wdGlvbmFsUkdCQTo6YmxhY2s7IH0KICAgICBzdGF0aWMgU3RyaW5n
IGluaXRpYWxGaWxsUGFpbnRVcmkoKSB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHN0YXRpYyBm
bG9hdCBpbml0aWFsU3Ryb2tlT3BhY2l0eSgpIHsgcmV0dXJuIDE7IH0KICAgICBzdGF0aWMgU1ZH
UGFpbnQ6OlNWR1BhaW50VHlwZSBpbml0aWFsU3Ryb2tlUGFpbnRUeXBlKCkgeyByZXR1cm4gU1ZH
UGFpbnQ6OlNWR19QQUlOVFRZUEVfTk9ORTsgfQotICAgIHN0YXRpYyBDb2xvciBpbml0aWFsU3Ry
b2tlUGFpbnRDb2xvcigpIHsgcmV0dXJuIENvbG9yKCk7IH0KKyAgICBzdGF0aWMgT3B0aW9uYWxS
R0JBIGluaXRpYWxTdHJva2VQYWludENvbG9yKCkgeyByZXR1cm4gT3B0aW9uYWxSR0JBKCk7IH0K
ICAgICBzdGF0aWMgU3RyaW5nIGluaXRpYWxTdHJva2VQYWludFVyaSgpIHsgcmV0dXJuIFN0cmlu
ZygpOyB9CiAgICAgc3RhdGljIFZlY3RvcjxTVkdMZW5ndGg+IGluaXRpYWxTdHJva2VEYXNoQXJy
YXkoKSB7IHJldHVybiBWZWN0b3I8U1ZHTGVuZ3RoPigpOyB9CiAgICAgc3RhdGljIGZsb2F0IGlu
aXRpYWxTdHJva2VNaXRlckxpbWl0KCkgeyByZXR1cm4gNDsgfQogICAgIHN0YXRpYyBmbG9hdCBp
bml0aWFsU3RvcE9wYWNpdHkoKSB7IHJldHVybiAxOyB9Ci0gICAgc3RhdGljIENvbG9yIGluaXRp
YWxTdG9wQ29sb3IoKSB7IHJldHVybiBDb2xvcigwLCAwLCAwKTsgfQorICAgIHN0YXRpYyBPcHRp
b25hbFJHQkEgaW5pdGlhbFN0b3BDb2xvcigpIHsgcmV0dXJuIE9wdGlvbmFsUkdCQSgwLCAwLCAw
KTsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsRmxvb2RPcGFjaXR5KCkgeyByZXR1cm4gMTsg
fQotICAgIHN0YXRpYyBDb2xvciBpbml0aWFsRmxvb2RDb2xvcigpIHsgcmV0dXJuIENvbG9yKDAs
IDAsIDApOyB9Ci0gICAgc3RhdGljIENvbG9yIGluaXRpYWxMaWdodGluZ0NvbG9yKCkgeyByZXR1
cm4gQ29sb3IoMjU1LCAyNTUsIDI1NSk7IH0KKyAgICBzdGF0aWMgT3B0aW9uYWxSR0JBIGluaXRp
YWxGbG9vZENvbG9yKCkgeyByZXR1cm4gT3B0aW9uYWxSR0JBKDAsIDAsIDApOyB9CisgICAgc3Rh
dGljIE9wdGlvbmFsUkdCQSBpbml0aWFsTGlnaHRpbmdDb2xvcigpIHsgcmV0dXJuIE9wdGlvbmFs
UkdCQSgyNTUsIDI1NSwgMjU1KTsgfQogICAgIHN0YXRpYyBTaGFkb3dEYXRhKiBpbml0aWFsU2hh
ZG93KCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBTdHJpbmcgaW5pdGlhbENsaXBwZXJSZXNv
dXJjZSgpIHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgc3RhdGljIFN0cmluZyBpbml0aWFsRmls
dGVyUmVzb3VyY2UoKSB7IHJldHVybiBTdHJpbmcoKTsgfQpAQCAtMTc0LDcgKzE3NCw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIGZpbGwuYWNjZXNzKCktPm9wYWNpdHkgPSBvYmo7CiAgICAgfQog
Ci0gICAgdm9pZCBzZXRGaWxsUGFpbnQoU1ZHUGFpbnQ6OlNWR1BhaW50VHlwZSB0eXBlLCBjb25z
dCBDb2xvciYgY29sb3IsIGNvbnN0IFN0cmluZyYgdXJpLCBib29sIGFwcGx5VG9SZWd1bGFyU3R5
bGUgPSB0cnVlLCBib29sIGFwcGx5VG9WaXNpdGVkTGlua1N0eWxlID0gZmFsc2UpCisgICAgdm9p
ZCBzZXRGaWxsUGFpbnQoU1ZHUGFpbnQ6OlNWR1BhaW50VHlwZSB0eXBlLCBjb25zdCBPcHRpb25h
bFJHQkEmIGNvbG9yLCBjb25zdCBTdHJpbmcmIHVyaSwgYm9vbCBhcHBseVRvUmVndWxhclN0eWxl
ID0gdHJ1ZSwgYm9vbCBhcHBseVRvVmlzaXRlZExpbmtTdHlsZSA9IGZhbHNlKQogICAgIHsKICAg
ICAgICAgaWYgKGFwcGx5VG9SZWd1bGFyU3R5bGUpIHsKICAgICAgICAgICAgIGlmICghKGZpbGwt
PnBhaW50VHlwZSA9PSB0eXBlKSkKQEAgLTIwMCw3ICsyMDAsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBzdHJva2UuYWNjZXNzKCktPm9wYWNpdHkgPSBvYmo7CiAgICAgfQogCi0gICAgdm9pZCBz
ZXRTdHJva2VQYWludChTVkdQYWludDo6U1ZHUGFpbnRUeXBlIHR5cGUsIGNvbnN0IENvbG9yJiBj
b2xvciwgY29uc3QgU3RyaW5nJiB1cmksIGJvb2wgYXBwbHlUb1JlZ3VsYXJTdHlsZSA9IHRydWUs
IGJvb2wgYXBwbHlUb1Zpc2l0ZWRMaW5rU3R5bGUgPSBmYWxzZSkKKyAgICB2b2lkIHNldFN0cm9r
ZVBhaW50KFNWR1BhaW50OjpTVkdQYWludFR5cGUgdHlwZSwgY29uc3QgT3B0aW9uYWxSR0JBJiBj
b2xvciwgY29uc3QgU3RyaW5nJiB1cmksIGJvb2wgYXBwbHlUb1JlZ3VsYXJTdHlsZSA9IHRydWUs
IGJvb2wgYXBwbHlUb1Zpc2l0ZWRMaW5rU3R5bGUgPSBmYWxzZSkKICAgICB7CiAgICAgICAgIGlm
IChhcHBseVRvUmVndWxhclN0eWxlKSB7CiAgICAgICAgICAgICBpZiAoIShzdHJva2UtPnBhaW50
VHlwZSA9PSB0eXBlKSkKQEAgLTI1Niw3ICsyNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBz
dG9wcy5hY2Nlc3MoKS0+b3BhY2l0eSA9IG9iajsKICAgICB9CiAKLSAgICB2b2lkIHNldFN0b3BD
b2xvcihjb25zdCBDb2xvciYgb2JqKQorICAgIHZvaWQgc2V0U3RvcENvbG9yKGNvbnN0IE9wdGlv
bmFsUkdCQSYgb2JqKQogICAgIHsKICAgICAgICAgaWYgKCEoc3RvcHMtPmNvbG9yID09IG9iaikp
CiAgICAgICAgICAgICBzdG9wcy5hY2Nlc3MoKS0+Y29sb3IgPSBvYmo7CkBAIC0yNjgsMTMgKzI2
OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtaXNjLmFjY2VzcygpLT5mbG9vZE9wYWNpdHkg
PSBvYmo7CiAgICAgfQogCi0gICAgdm9pZCBzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9yJiBvYmop
CisgICAgdm9pZCBzZXRGbG9vZENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgb2JqKQogICAgIHsK
ICAgICAgICAgaWYgKCEobWlzYy0+Zmxvb2RDb2xvciA9PSBvYmopKQogICAgICAgICAgICAgbWlz
Yy5hY2Nlc3MoKS0+Zmxvb2RDb2xvciA9IG9iajsKICAgICB9CiAKLSAgICB2b2lkIHNldExpZ2h0
aW5nQ29sb3IoY29uc3QgQ29sb3ImIG9iaikKKyAgICB2b2lkIHNldExpZ2h0aW5nQ29sb3IoY29u
c3QgT3B0aW9uYWxSR0JBJiBvYmopCiAgICAgewogICAgICAgICBpZiAoIShtaXNjLT5saWdodGlu
Z0NvbG9yID09IG9iaikpCiAgICAgICAgICAgICBtaXNjLmFjY2VzcygpLT5saWdodGluZ0NvbG9y
ID0gb2JqOwpAQCAtMzQ2LDExICszNDYsMTEgQEAgcHVibGljOgogICAgIEVHbHlwaE9yaWVudGF0
aW9uIGdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCgpIGNvbnN0IHsgcmV0dXJuIChFR2x5cGhPcmll
bnRhdGlvbikgc3ZnX2luaGVyaXRlZF9mbGFncy5fZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOyB9
CiAgICAgZmxvYXQgZmlsbE9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBmaWxsLT5vcGFjaXR5OyB9
CiAgICAgY29uc3QgU1ZHUGFpbnQ6OlNWR1BhaW50VHlwZSYgZmlsbFBhaW50VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIGZpbGwtPnBhaW50VHlwZTsgfQotICAgIGNvbnN0IENvbG9yJiBmaWxsUGFpbnRD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIGZpbGwtPnBhaW50Q29sb3I7IH0KKyAgICBjb25zdCBPcHRp
b25hbFJHQkEmIGZpbGxQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gZmlsbC0+cGFpbnRDb2xv
cjsgfQogICAgIGNvbnN0IFN0cmluZyYgZmlsbFBhaW50VXJpKCkgY29uc3QgeyByZXR1cm4gZmls
bC0+cGFpbnRVcmk7IH0gICAgCiAgICAgZmxvYXQgc3Ryb2tlT3BhY2l0eSgpIGNvbnN0IHsgcmV0
dXJuIHN0cm9rZS0+b3BhY2l0eTsgfQogICAgIGNvbnN0IFNWR1BhaW50OjpTVkdQYWludFR5cGUm
IHN0cm9rZVBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZS0+cGFpbnRUeXBlOyB9Ci0g
ICAgY29uc3QgQ29sb3ImIHN0cm9rZVBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBzdHJva2Ut
PnBhaW50Q29sb3I7IH0KKyAgICBjb25zdCBPcHRpb25hbFJHQkEmIHN0cm9rZVBhaW50Q29sb3Io
KSBjb25zdCB7IHJldHVybiBzdHJva2UtPnBhaW50Q29sb3I7IH0KICAgICBjb25zdCBTdHJpbmcm
IHN0cm9rZVBhaW50VXJpKCkgY29uc3QgeyByZXR1cm4gc3Ryb2tlLT5wYWludFVyaTsgfQogICAg
IFZlY3RvcjxTVkdMZW5ndGg+IHN0cm9rZURhc2hBcnJheSgpIGNvbnN0IHsgcmV0dXJuIHN0cm9r
ZS0+ZGFzaEFycmF5OyB9CiAgICAgZmxvYXQgc3Ryb2tlTWl0ZXJMaW1pdCgpIGNvbnN0IHsgcmV0
dXJuIHN0cm9rZS0+bWl0ZXJMaW1pdDsgfQpAQCAtMzU4LDEwICszNTgsMTAgQEAgcHVibGljOgog
ICAgIGNvbnN0IExlbmd0aCYgc3Ryb2tlRGFzaE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHN0cm9r
ZS0+ZGFzaE9mZnNldDsgfQogICAgIFNWR0xlbmd0aCBrZXJuaW5nKCkgY29uc3QgeyByZXR1cm4g
dGV4dC0+a2VybmluZzsgfQogICAgIGZsb2F0IHN0b3BPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4g
c3RvcHMtPm9wYWNpdHk7IH0KLSAgICBjb25zdCBDb2xvciYgc3RvcENvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gc3RvcHMtPmNvbG9yOyB9CisgICAgY29uc3QgT3B0aW9uYWxSR0JBJiBzdG9wQ29sb3Io
KSBjb25zdCB7IHJldHVybiBzdG9wcy0+Y29sb3I7IH0KICAgICBmbG9hdCBmbG9vZE9wYWNpdHko
KSBjb25zdCB7IHJldHVybiBtaXNjLT5mbG9vZE9wYWNpdHk7IH0KLSAgICBjb25zdCBDb2xvciYg
Zmxvb2RDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1pc2MtPmZsb29kQ29sb3I7IH0KLSAgICBjb25z
dCBDb2xvciYgbGlnaHRpbmdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1pc2MtPmxpZ2h0aW5nQ29s
b3I7IH0KKyAgICBjb25zdCBPcHRpb25hbFJHQkEmIGZsb29kQ29sb3IoKSBjb25zdCB7IHJldHVy
biBtaXNjLT5mbG9vZENvbG9yOyB9CisgICAgY29uc3QgT3B0aW9uYWxSR0JBJiBsaWdodGluZ0Nv
bG9yKCkgY29uc3QgeyByZXR1cm4gbWlzYy0+bGlnaHRpbmdDb2xvcjsgfQogICAgIFNWR0xlbmd0
aCBiYXNlbGluZVNoaWZ0VmFsdWUoKSBjb25zdCB7IHJldHVybiBtaXNjLT5iYXNlbGluZVNoaWZ0
VmFsdWU7IH0KICAgICBTaGFkb3dEYXRhKiBzaGFkb3coKSBjb25zdCB7IHJldHVybiBzaGFkb3dT
VkctPnNoYWRvdy5nZXQoKTsgfQogICAgIGNvbnN0IExlbmd0aCYgY3goKSBjb25zdCB7IHJldHVy
biBsYXlvdXQtPmN4OyB9CkBAIC0zODIsMTAgKzM4MiwxMCBAQCBwdWJsaWM6CiAgICAgVmVjdG9y
PFBhaW50VHlwZSwgMz4gcGFpbnRUeXBlc0ZvclBhaW50T3JkZXIoKSBjb25zdDsKIAogICAgIGNv
bnN0IFNWR1BhaW50OjpTVkdQYWludFR5cGUmIHZpc2l0ZWRMaW5rRmlsbFBhaW50VHlwZSgpIGNv
bnN0IHsgcmV0dXJuIGZpbGwtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlOyB9Ci0gICAgY29uc3QgQ29s
b3ImIHZpc2l0ZWRMaW5rRmlsbFBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBmaWxsLT52aXNp
dGVkTGlua1BhaW50Q29sb3I7IH0KKyAgICBjb25zdCBPcHRpb25hbFJHQkEmIHZpc2l0ZWRMaW5r
RmlsbFBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBmaWxsLT52aXNpdGVkTGlua1BhaW50Q29s
b3I7IH0KICAgICBjb25zdCBTdHJpbmcmIHZpc2l0ZWRMaW5rRmlsbFBhaW50VXJpKCkgY29uc3Qg
eyByZXR1cm4gZmlsbC0+dmlzaXRlZExpbmtQYWludFVyaTsgfQogICAgIGNvbnN0IFNWR1BhaW50
OjpTVkdQYWludFR5cGUmIHZpc2l0ZWRMaW5rU3Ryb2tlUGFpbnRUeXBlKCkgY29uc3QgeyByZXR1
cm4gc3Ryb2tlLT52aXNpdGVkTGlua1BhaW50VHlwZTsgfQotICAgIGNvbnN0IENvbG9yJiB2aXNp
dGVkTGlua1N0cm9rZVBhaW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBzdHJva2UtPnZpc2l0ZWRM
aW5rUGFpbnRDb2xvcjsgfQorICAgIGNvbnN0IE9wdGlvbmFsUkdCQSYgdmlzaXRlZExpbmtTdHJv
a2VQYWludENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3Ryb2tlLT52aXNpdGVkTGlua1BhaW50Q29s
b3I7IH0KICAgICBjb25zdCBTdHJpbmcmIHZpc2l0ZWRMaW5rU3Ryb2tlUGFpbnRVcmkoKSBjb25z
dCB7IHJldHVybiBzdHJva2UtPnZpc2l0ZWRMaW5rUGFpbnRVcmk7IH0KIAogICAgIC8vIGNvbnZl
bmllbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVu
ZGVyU3R5bGVEZWZzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVy
U3R5bGVEZWZzLmgKaW5kZXggNzZjMWE0OWUzMTIyOGQ2YWY4YTdlMDNhNTYzMjdlMDc4YzFjMjI3
Yi4uYTZkYTM2Y2FlZGU3MTNhZTBiNDZhZmZhOGJhYzcxYzU4ZmNhODU1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaApAQCAt
MTI4LDEwICsxMjgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGZsb2F0IG9w
YWNpdHk7CiAgICAgICAgIFNWR1BhaW50OjpTVkdQYWludFR5cGUgcGFpbnRUeXBlOwotICAgICAg
ICBDb2xvciBwYWludENvbG9yOworICAgICAgICBPcHRpb25hbFJHQkEgcGFpbnRDb2xvcjsKICAg
ICAgICAgU3RyaW5nIHBhaW50VXJpOwogICAgICAgICBTVkdQYWludDo6U1ZHUGFpbnRUeXBlIHZp
c2l0ZWRMaW5rUGFpbnRUeXBlOwotICAgICAgICBDb2xvciB2aXNpdGVkTGlua1BhaW50Q29sb3I7
CisgICAgICAgIE9wdGlvbmFsUkdCQSB2aXNpdGVkTGlua1BhaW50Q29sb3I7CiAgICAgICAgIFN0
cmluZyB2aXNpdGVkTGlua1BhaW50VXJpOwogCiAgICAgcHJpdmF0ZToKQEAgLTE1OCwxMCArMTU4
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgVmVjdG9yPFNWR0xlbmd0aD4gZGFz
aEFycmF5OwogCiAgICAgICAgIFNWR1BhaW50OjpTVkdQYWludFR5cGUgcGFpbnRUeXBlOwotICAg
ICAgICBDb2xvciBwYWludENvbG9yOworICAgICAgICBPcHRpb25hbFJHQkEgcGFpbnRDb2xvcjsK
ICAgICAgICAgU3RyaW5nIHBhaW50VXJpOwogICAgICAgICBTVkdQYWludDo6U1ZHUGFpbnRUeXBl
IHZpc2l0ZWRMaW5rUGFpbnRUeXBlOwotICAgICAgICBDb2xvciB2aXNpdGVkTGlua1BhaW50Q29s
b3I7CisgICAgICAgIE9wdGlvbmFsUkdCQSB2aXNpdGVkTGlua1BhaW50Q29sb3I7CiAgICAgICAg
IFN0cmluZyB2aXNpdGVkTGlua1BhaW50VXJpOwogCiAgICAgcHJpdmF0ZTogICAgICAgIApAQCAt
MTgxLDcgKzE4MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogCiAgICAgICAg
IGZsb2F0IG9wYWNpdHk7Ci0gICAgICAgIENvbG9yIGNvbG9yOworICAgICAgICBPcHRpb25hbFJH
QkEgY29sb3I7CiAKICAgICBwcml2YXRlOiAgICAgICAgCiAgICAgICAgIFN0eWxlU3RvcERhdGEo
KTsKQEAgLTIxOCw5ICsyMTgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiAgICAgICAgIH0KIAotICAgICAgICBDb2xvciBmbG9v
ZENvbG9yOworICAgICAgICBPcHRpb25hbFJHQkEgZmxvb2RDb2xvcjsKICAgICAgICAgZmxvYXQg
Zmxvb2RPcGFjaXR5OwotICAgICAgICBDb2xvciBsaWdodGluZ0NvbG9yOworICAgICAgICBPcHRp
b25hbFJHQkEgbGlnaHRpbmdDb2xvcjsKIAogICAgICAgICAvLyBub24taW5oZXJpdGVkIHRleHQg
c3R1ZmYgbGl2ZXMgaGVyZSBub3QgaW4gU3R5bGVUZXh0RGF0YS4KICAgICAgICAgU1ZHTGVuZ3Ro
IGJhc2VsaW5lU2hpZnRWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TaGFkb3dEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hh
ZG93RGF0YS5oCmluZGV4IDhhMWNhYzMzODM2ZTcxYzlmMmJlZTBkM2U4YTgxMzJjZGE3NmI4MDIu
Ljg0MDVkZjkyZDU3MzQ5OWZmZGM1NjQzODBmN2I1ZTQ2ZDU3ODc4ODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgIH0KIAotICAgIFNoYWRvd0RhdGEoY29uc3QgSW50UG9pbnQmIGxvY2F0
aW9uLCBpbnQgcmFkaXVzLCBpbnQgc3ByZWFkLCBTaGFkb3dTdHlsZSBzdHlsZSwgYm9vbCBpc1dl
YmtpdEJveFNoYWRvdywgY29uc3QgQ29sb3ImIGNvbG9yKQorICAgIFNoYWRvd0RhdGEoY29uc3Qg
SW50UG9pbnQmIGxvY2F0aW9uLCBpbnQgcmFkaXVzLCBpbnQgc3ByZWFkLCBTaGFkb3dTdHlsZSBz
dHlsZSwgYm9vbCBpc1dlYmtpdEJveFNoYWRvdywgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvcikK
ICAgICAgICAgOiBtX2xvY2F0aW9uKGxvY2F0aW9uKQogICAgICAgICAsIG1fcmFkaXVzKHJhZGl1
cykKICAgICAgICAgLCBtX3NwcmVhZChzcHJlYWQpCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoK
ICAgICB9CiAgICAgaW50IHNwcmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3ByZWFkOyB9CiAgICAg
U2hhZG93U3R5bGUgc3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlOyB9Ci0gICAgY29uc3Qg
Q29sb3ImIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfQorICAgIGNvbnN0IE9wdGlv
bmFsUkdCQSYgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CiAgICAgYm9vbCBpc1dl
YmtpdEJveFNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIG1faXNXZWJraXRCb3hTaGFkb3c7IH0KIAog
ICAgIGNvbnN0IFNoYWRvd0RhdGEqIG5leHQoKSBjb25zdCB7IHJldHVybiBtX25leHQuZ2V0KCk7
IH0KQEAgLTkxLDcgKzkxLDcgQEAgcHJpdmF0ZToKICAgICBJbnRQb2ludCBtX2xvY2F0aW9uOwog
ICAgIGludCBtX3JhZGl1czsgLy8gVGhpcyBpcyB0aGUgImJsdXIgcmFkaXVzIiwgb3IgdHdpY2Ug
dGhlIHN0YW5kYXJkIGRldmlhdGlvbiBvZiB0aGUgR2F1c3NpYW4gYmx1ci4KICAgICBpbnQgbV9z
cHJlYWQ7Ci0gICAgQ29sb3IgbV9jb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgbV9jb2xvcjsKICAg
ICBTaGFkb3dTdHlsZSBtX3N0eWxlOwogICAgIGJvb2wgbV9pc1dlYmtpdEJveFNoYWRvdzsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gbV9uZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmgKaW5kZXggMmUxYjY5
ODIwNzAwOTQ3M2VmZmQ3MTIwODdmOWJjZWMzN2ViYTg2NS4uNzY2MWQ1MWJlYzczZDJmNGI1ZWMw
YjQ5OTUxZTg0MzgwNGMyNTExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzRXF1aXZhbGVudEZvclBhaW50aW5nKGNvbnN0IFN0eWxlQmFja2dyb3VuZERh
dGEmKSBjb25zdDsKIAogICAgIGNvbnN0IEZpbGxMYXllciYgYmFja2dyb3VuZCgpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2dyb3VuZDsgfQotICAgIGNvbnN0IENvbG9yJiBjb2xvcigpIGNvbnN0IHsg
cmV0dXJuIG1fY29sb3I7IH0KKyAgICBjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2xvcjsgfQogICAgIGNvbnN0IE91dGxpbmVWYWx1ZSYgb3V0bGluZSgpIGNv
bnN0IHsgcmV0dXJuIG1fb3V0bGluZTsgfQogCiBwcml2YXRlOgpAQCAtNTgsNyArNTgsNyBAQCBw
cml2YXRlOgogICAgIFN0eWxlQmFja2dyb3VuZERhdGEoY29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0
YSYpOyAKIAogICAgIEZpbGxMYXllciBtX2JhY2tncm91bmQ7Ci0gICAgQ29sb3IgbV9jb2xvcjsK
KyAgICBPcHRpb25hbFJHQkEgbV9jb2xvcjsKICAgICBPdXRsaW5lVmFsdWUgbV9vdXRsaW5lOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5o
ZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJp
dGVkRGF0YS5oCmluZGV4IGFlMmNmNjc4YzM5ZWRkOGNjYzUyNTYzNjYzODk5YTFiYzhiYjczNzMu
LjNjN2MwYWRjYTdmYjIyMzU4ZmMwMmRkMzYwZDU3ZTc4YWE0ODUxZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmgKQEAgLTU3
LDggKzU3LDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBGb250Q2FzY2FkZSBmb250Q2FzY2Fk
ZTsKLSAgICBDb2xvciBjb2xvcjsKLSAgICBDb2xvciB2aXNpdGVkTGlua0NvbG9yOworICAgIE9w
dGlvbmFsUkdCQSBjb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgdmlzaXRlZExpbmtDb2xvcjsKIAog
cHJpdmF0ZToKICAgICBTdHlsZUluaGVyaXRlZERhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmgKaW5kZXggZjM3NTYyMTA5MWJk
OGI3MGUyNmM5MDRlOWJmOGVmNjBjZGNiMTRmZC4uOTc3MWQwNTBlYjJjNGRhMjA2MDQ0OTViNjk3
MDIyZmE2MmEyYjQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlTXVsdGlDb2xEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlTXVsdGlDb2xEYXRhLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHVuc2ln
bmVkIHNob3J0IG1fY291bnQ7CiAgICAgZmxvYXQgbV9nYXA7CiAgICAgQm9yZGVyVmFsdWUgbV9y
dWxlOwotICAgIENvbG9yIG1fdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3I7CisgICAgT3B0aW9u
YWxSR0JBIG1fdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3I7CiAKICAgICBib29sIG1fYXV0b1dp
ZHRoIDogMTsKICAgICBib29sIG1fYXV0b0NvdW50IDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAppbmRl
eCA2YjM5MjRjNGJjYTZiNjc5YjVlNjEwMjVkN2Y3NDMyOTFjOGFmNjk0Li41N2MzNWE3ZGY2YzEx
NTIxYWUwZDNiZGU0MGI2NzQxOGJlZDFjNTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCkBAIC0zMyw5
ICszMyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEdyZWF0ZXJUaGFuT3JTYW1l
U2l6ZUFzU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEdyZWF0ZXJU
aGFuT3JTYW1lU2l6ZUFzU3R5bGVSYXJlSW5oZXJpdGVkRGF0YT4gewogICAgIHZvaWQqIHN0eWxl
SW1hZ2U7Ci0gICAgQ29sb3IgZmlyc3RDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgZmlyc3RDb2xv
cjsKICAgICBmbG9hdCBmaXJzdEZsb2F0OwotICAgIENvbG9yIGNvbG9yc1s1XTsKKyAgICBPcHRp
b25hbFJHQkEgY29sb3JzWzVdOwogICAgIHZvaWQqIG93blB0cnNbMV07CiAgICAgQXRvbWljU3Ry
aW5nIGF0b21pY1N0cmluZ3NbNV07CiAgICAgdm9pZCogcmVmUHRyc1syXTsKQEAgLTQ3LDcgKzQ3
LDcgQEAgc3RydWN0IEdyZWF0ZXJUaGFuT3JTYW1lU2l6ZUFzU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YSA6IHB1YmxpYyBSZWZDb3VudGVkPEdyZWF0ZXIKICAgICBzaG9ydCBoeXBoZW5hdGlvblNob3J0
c1szXTsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICBDb2xvciBjb21wb3NpdGlvbkNvbG9yOwor
ICAgIE9wdGlvbmFsUkdCQSBjb21wb3NpdGlvbkNvbG9yOwogI2VuZGlmCiAjaWYgRU5BQkxFKElP
U19URVhUX0FVVE9TSVpJTkcpCiAgICAgVGV4dFNpemVBZGp1c3RtZW50IHRleHRTaXplQWRqdXN0
OwpAQCAtNTgsNyArNTgsNyBAQCBzdHJ1Y3QgR3JlYXRlclRoYW5PclNhbWVTaXplQXNTdHlsZVJh
cmVJbmhlcml0ZWREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8R3JlYXRlcgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIENvbG9yIHRhcEhpZ2hsaWdodENvbG9yOworICAg
IE9wdGlvbmFsUkdCQSB0YXBIaWdobGlnaHRDb2xvcjsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRh
LmgKaW5kZXggZTg1MDMxYjE4NTQzODQ1MzU3ZWJmNWY3MmNkMmZiOTRhNzU3MTk2NC4uZDMzYWE1
NWQ3MDMyYTM1MjVhY2ExYmQyZjFlOWM1Y2VlN2JkNzlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCkBAIC02
MCwxNCArNjAsMTQgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IGxpc3RTdHls
ZUltYWdlOwogCi0gICAgQ29sb3IgdGV4dFN0cm9rZUNvbG9yOworICAgIE9wdGlvbmFsUkdCQSB0
ZXh0U3Ryb2tlQ29sb3I7CiAgICAgZmxvYXQgdGV4dFN0cm9rZVdpZHRoOwotICAgIENvbG9yIHRl
eHRGaWxsQ29sb3I7Ci0gICAgQ29sb3IgdGV4dEVtcGhhc2lzQ29sb3I7CisgICAgT3B0aW9uYWxS
R0JBIHRleHRGaWxsQ29sb3I7CisgICAgT3B0aW9uYWxSR0JBIHRleHRFbXBoYXNpc0NvbG9yOwog
ICAgIAotICAgIENvbG9yIHZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yOwotICAgIENvbG9yIHZp
c2l0ZWRMaW5rVGV4dEZpbGxDb2xvcjsKLSAgICBDb2xvciB2aXNpdGVkTGlua1RleHRFbXBoYXNp
c0NvbG9yOyAgICAKKyAgICBPcHRpb25hbFJHQkEgdmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3I7
CisgICAgT3B0aW9uYWxSR0JBIHZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvcjsKKyAgICBPcHRpb25h
bFJHQkEgdmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcjsgICAgCiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2hhZG93RGF0YT4gdGV4dFNoYWRvdzsgLy8gT3VyIHRleHQgc2hhZG93IGluZm9ybWF0
aW9uIGZvciBzaGFkb3dlZCB0ZXh0IGRyYXdpbmcuCiAgICAgCkBAIC0xNTQsNyArMTU0LDcgQEAg
cHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIENvbG9yIHRh
cEhpZ2hsaWdodENvbG9yOworICAgIE9wdGlvbmFsUkdCQSB0YXBIaWdobGlnaHRDb2xvcjsKICNl
bmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKaW5kZXggZGM5N2UxNTQ0MzNlYjgw
ZGM2MWQ3NzQ4Y2JmY2RmNmYxNzgxMjliZS4uYTU1ODYwNTY2NjU3YWM2N2Y0NTdkMjhmNDhkYzc2
NzVhNmY4YjYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCkBAIC0xNjMsMTQgKzE2MywxNCBAQCBw
dWJsaWM6CiAKICAgICBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IG1fY2xpcFBhdGg7CiAKLSAg
ICBDb2xvciBtX3RleHREZWNvcmF0aW9uQ29sb3I7Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlua1Rl
eHREZWNvcmF0aW9uQ29sb3I7Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xv
cjsKLSAgICBDb2xvciBtX3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9yOwotICAgIENvbG9yIG1fdmlz
aXRlZExpbmtCb3JkZXJMZWZ0Q29sb3I7Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlua0JvcmRlclJp
Z2h0Q29sb3I7Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlua0JvcmRlclRvcENvbG9yOwotICAgIENv
bG9yIG1fdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcjsKKyAgICBPcHRpb25hbFJHQkEgbV90
ZXh0RGVjb3JhdGlvbkNvbG9yOworICAgIE9wdGlvbmFsUkdCQSBtX3Zpc2l0ZWRMaW5rVGV4dERl
Y29yYXRpb25Db2xvcjsKKyAgICBPcHRpb25hbFJHQkEgbV92aXNpdGVkTGlua0JhY2tncm91bmRD
b2xvcjsKKyAgICBPcHRpb25hbFJHQkEgbV92aXNpdGVkTGlua091dGxpbmVDb2xvcjsKKyAgICBP
cHRpb25hbFJHQkEgbV92aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcjsKKyAgICBPcHRpb25hbFJH
QkEgbV92aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3I7CisgICAgT3B0aW9uYWxSR0JBIG1fdmlz
aXRlZExpbmtCb3JkZXJUb3BDb2xvcjsKKyAgICBPcHRpb25hbFJHQkEgbV92aXNpdGVkTGlua0Jv
cmRlckJvdHRvbUNvbG9yOwogCiAgICAgaW50IG1fb3JkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHAKaW5kZXggMTExZGM1Nzcx
YTdkOWU1Zjg5MWFjOTk2MjZmZGY2MzdjODc4YmRjMC4uNjk3NmM2MWI4Zjg0NjgyMWE3NmFhNmZm
OGEwMTBhYmJmNmM4ZGJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGF0aWMgaW5saW5lIGJvb2wgaW5oZXJpdENvbG9yRnJvbVBhcmVudFN0eWxl
SWZOZWVkZWQoUmVuZGVyRWxlbWVudCYgb2JqZWN0LCBib29sIGFwcGx5VG9GaWxsLCBDb2xvciYg
Y29sb3IpCitzdGF0aWMgaW5saW5lIGJvb2wgaW5oZXJpdENvbG9yRnJvbVBhcmVudFN0eWxlSWZO
ZWVkZWQoUmVuZGVyRWxlbWVudCYgb2JqZWN0LCBib29sIGFwcGx5VG9GaWxsLCBPcHRpb25hbFJH
QkEmIGNvbG9yKQogewogICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaW5oZXJpdENvbG9yRnJv
bVBhcmVudFN0eWxlSWZOZWVkZWQoUmVuZGVyRWxlbWVudCYgb2JqZWN0LCBibwogICAgIHJldHVy
biB0cnVlOwogfQogCi1zdGF0aWMgaW5saW5lIFJlbmRlclNWR1Jlc291cmNlKiByZXF1ZXN0UGFp
bnRpbmdSZXNvdXJjZShSZW5kZXJTVkdSZXNvdXJjZU1vZGUgbW9kZSwgUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgQ29sb3ImIGZhbGxiYWNrQ29sb3Ip
CitzdGF0aWMgaW5saW5lIFJlbmRlclNWR1Jlc291cmNlKiByZXF1ZXN0UGFpbnRpbmdSZXNvdXJj
ZShSZW5kZXJTVkdSZXNvdXJjZU1vZGUgbW9kZSwgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgT3B0aW9uYWxSR0JBJiBmYWxsYmFja0NvbG9yKQogewog
ICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlLnN2Z1N0eWxlKCk7CiAK
QEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIGlubGluZSBSZW5kZXJTVkdSZXNvdXJjZSogcmVxdWVz
dFBhaW50aW5nUmVzb3VyY2UoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlIG0KICAgICBpZiAocGFpbnRU
eXBlID09IFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX05PTkUpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgQ29sb3IgY29sb3I7CisgICAgT3B0aW9uYWxSR0JBIGNvbG9yOwogICAgIHN3
aXRjaCAocGFpbnRUeXBlKSB7CiAgICAgY2FzZSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9DVVJS
RU5UQ09MT1I6CiAgICAgY2FzZSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9SR0JDT0xPUjoKQEAg
LTk0LDkgKzk0LDkgQEAgc3RhdGljIGlubGluZSBSZW5kZXJTVkdSZXNvdXJjZSogcmVxdWVzdFBh
aW50aW5nUmVzb3VyY2UoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlIG0KIAogICAgICAgICAvLyBGb3Ig
U1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IsICdjb2xvcicgYWxyZWFkeSBjb250YWlucyB0aGUg
J3Zpc2l0ZWRDb2xvcicuCiAgICAgICAgIGlmICh2aXNpdGVkUGFpbnRUeXBlIDwgU1ZHUGFpbnQ6
OlNWR19QQUlOVFRZUEVfVVJJX05PTkUgJiYgdmlzaXRlZFBhaW50VHlwZSAhPSBTVkdQYWludDo6
U1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IpIHsKLSAgICAgICAgICAgIGNvbnN0IENvbG9yJiB2
aXNpdGVkQ29sb3IgPSBhcHBseVRvRmlsbCA/IHN2Z1N0eWxlLnZpc2l0ZWRMaW5rRmlsbFBhaW50
Q29sb3IoKSA6IHN2Z1N0eWxlLnZpc2l0ZWRMaW5rU3Ryb2tlUGFpbnRDb2xvcigpOworICAgICAg
ICAgICAgY29uc3QgT3B0aW9uYWxSR0JBJiB2aXNpdGVkQ29sb3IgPSBhcHBseVRvRmlsbCA/IHN2
Z1N0eWxlLnZpc2l0ZWRMaW5rRmlsbFBhaW50Q29sb3IoKSA6IHN2Z1N0eWxlLnZpc2l0ZWRMaW5r
U3Ryb2tlUGFpbnRDb2xvcigpOwogICAgICAgICAgICAgaWYgKHZpc2l0ZWRDb2xvci5pc1ZhbGlk
KCkpCi0gICAgICAgICAgICAgICAgY29sb3IgPSBDb2xvcih2aXNpdGVkQ29sb3IucmVkKCksIHZp
c2l0ZWRDb2xvci5ncmVlbigpLCB2aXNpdGVkQ29sb3IuYmx1ZSgpLCBjb2xvci5hbHBoYSgpKTsK
KyAgICAgICAgICAgICAgICBjb2xvciA9IE9wdGlvbmFsUkdCQSh2aXNpdGVkQ29sb3IucmVkKCks
IHZpc2l0ZWRDb2xvci5ncmVlbigpLCB2aXNpdGVkQ29sb3IuYmx1ZSgpLCBjb2xvci5hbHBoYSgp
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTM2LDEyICsxMzYsMTIgQEAgc3RhdGljIGlubGlu
ZSBSZW5kZXJTVkdSZXNvdXJjZSogcmVxdWVzdFBhaW50aW5nUmVzb3VyY2UoUmVuZGVyU1ZHUmVz
b3VyY2VNb2RlIG0KICAgICByZXR1cm4gdXJpUmVzb3VyY2U7CiB9CiAKLVJlbmRlclNWR1Jlc291
cmNlKiBSZW5kZXJTVkdSZXNvdXJjZTo6ZmlsbFBhaW50aW5nUmVzb3VyY2UoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgQ29sb3ImIGZhbGxiYWNrQ29s
b3IpCitSZW5kZXJTVkdSZXNvdXJjZSogUmVuZGVyU1ZHUmVzb3VyY2U6OmZpbGxQYWludGluZ1Jl
c291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IE9wdGlvbmFsUkdCQSYgZmFsbGJhY2tDb2xvcikKIHsKICAgICByZXR1cm4gcmVxdWVzdFBhaW50
aW5nUmVzb3VyY2UoQXBwbHlUb0ZpbGxNb2RlLCByZW5kZXJlciwgc3R5bGUsIGZhbGxiYWNrQ29s
b3IpOwogfQogCi1SZW5kZXJTVkdSZXNvdXJjZSogUmVuZGVyU1ZHUmVzb3VyY2U6OnN0cm9rZVBh
aW50aW5nUmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSwgQ29sb3ImIGZhbGxiYWNrQ29sb3IpCitSZW5kZXJTVkdSZXNvdXJjZSogUmVuZGVy
U1ZHUmVzb3VyY2U6OnN0cm9rZVBhaW50aW5nUmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgT3B0aW9uYWxSR0JBJiBmYWxsYmFja0NvbG9y
KQogewogICAgIHJldHVybiByZXF1ZXN0UGFpbnRpbmdSZXNvdXJjZShBcHBseVRvU3Ryb2tlTW9k
ZSwgcmVuZGVyZXIsIHN0eWxlLCBmYWxsYmFja0NvbG9yKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuaAppbmRleCBlZDdhNzBmNTA3NWRi
NzQ2ZmVkZDRlNjNmMzQ5YzAwOTYxODRhMTQ3Li40MjA2YTkyZDE1Y2M3Y2Y0MWMwYzhkZmVjOTU4
OTZlYjY4ZDRlODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZS5oCkBAIC00Niw3ICs0Niw3IEBAIGVudW0gUmVuZGVyU1ZHUmVzb3VyY2VN
b2RlIHsKICAgICBBcHBseVRvVGV4dE1vZGUgICAgPSAxIDw8IDMgLy8gdXNlZCBpbiBjb21iaW5h
dGlvbiB3aXRoIEFwcGx5VG97RmlsbHxTdHJva2V9TW9kZQogfTsKIAotY2xhc3MgQ29sb3I7Citj
bGFzcyBPcHRpb25hbFJHQkE7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBHcmFwaGljc0NvbnRl
eHQ7CiBjbGFzcyBQYXRoOwpAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBS
ZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3QgPSAwOwogCiAgICAgLy8g
SGVscGVyIHV0aWxpdGllcyB1c2VkIGluIHRoZSByZW5kZXIgdHJlZSB0byBhY2Nlc3MgcmVzb3Vy
Y2VzIHVzZWQgZm9yIHBhaW50aW5nIHNoYXBlcy90ZXh0IChncmFkaWVudHMgJiBwYXR0ZXJucyAm
IHNvbGlkIGNvbG9ycyBvbmx5KQotICAgIHN0YXRpYyBSZW5kZXJTVkdSZXNvdXJjZSogZmlsbFBh
aW50aW5nUmVzb3VyY2UoUmVuZGVyRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgQ29sb3Im
IGZhbGxiYWNrQ29sb3IpOwotICAgIHN0YXRpYyBSZW5kZXJTVkdSZXNvdXJjZSogc3Ryb2tlUGFp
bnRpbmdSZXNvdXJjZShSZW5kZXJFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBDb2xvciYg
ZmFsbGJhY2tDb2xvcik7CisgICAgc3RhdGljIFJlbmRlclNWR1Jlc291cmNlKiBmaWxsUGFpbnRp
bmdSZXNvdXJjZShSZW5kZXJFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBPcHRpb25hbFJH
QkEmIGZhbGxiYWNrQ29sb3IpOworICAgIHN0YXRpYyBSZW5kZXJTVkdSZXNvdXJjZSogc3Ryb2tl
UGFpbnRpbmdSZXNvdXJjZShSZW5kZXJFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBPcHRp
b25hbFJHQkEmIGZhbGxiYWNrQ29sb3IpOwogICAgIHN0YXRpYyBSZW5kZXJTVkdSZXNvdXJjZVNv
bGlkQ29sb3IqIHNoYXJlZFNvbGlkUGFpbnRpbmdSZXNvdXJjZSgpOwogCiAgICAgc3RhdGljIHZv
aWQgbWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKFJlbmRlck9iamVj
dCYsIGJvb2wgbmVlZHNMYXlvdXQgPSB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5oCmluZGV4IDRi
YWQ1YjUyMjY4NjJhMWFkNjk5YjQ3MjZkNmEwYjc1MTgxOGE2NjQuLjE1NjFjNzViNGEwYWM0M2Q1
MWVlMDY5MGNmYWRjNjMzZTA4NTEzODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuaApAQCAtNDAsMTEg
KzQwLDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJl
c291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNvbGlkQ29sb3JSZXNvdXJjZVR5
cGU7IH0KIAotICAgIGNvbnN0IENvbG9yJiBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7
IH0KLSAgICB2b2lkIHNldENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX2NvbG9yID0gY29s
b3I7IH0KKyAgICBjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9j
b2xvcjsgfQorICAgIHZvaWQgc2V0Q29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvcikgeyBt
X2NvbG9yID0gY29sb3I7IH0KIAogcHJpdmF0ZToKLSAgICBDb2xvciBtX2NvbG9yOworICAgIE9w
dGlvbmFsUkdCQSBtX2NvbG9yOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAppbmRleCBhMTljZGJiNmM1YjE3YzNiN2VlYzg2NmNk
NDU1NWFmNjY2NTYwZWIwLi40MWQxYTBkMTFjMzBkN2JhMDExODNhYWQzM2I0MTEzMDBhNTZmZGU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNw
cApAQCAtMTMzLDcgKzEzMyw3IEBAIGJvb2wgUmVuZGVyU1ZHU2hhcGU6OmZpbGxDb250YWlucyhj
b25zdCBGbG9hdFBvaW50JiBwb2ludCwgYm9vbCByZXF1aXJlc0ZpbGwsIGNvCiAgICAgaWYgKCFt
X2ZpbGxCb3VuZGluZ0JveC5jb250YWlucyhwb2ludCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIENvbG9yIGZhbGxiYWNrQ29sb3I7CisgICAgT3B0aW9uYWxSR0JBIGZhbGxiYWNrQ29s
b3I7CiAgICAgaWYgKHJlcXVpcmVzRmlsbCAmJiAhUmVuZGVyU1ZHUmVzb3VyY2U6OmZpbGxQYWlu
dGluZ1Jlc291cmNlKCp0aGlzLCBzdHlsZSgpLCBmYWxsYmFja0NvbG9yKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBSZW5kZXJTVkdTaGFwZTo6c3Ry
b2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGJvb2wgcmVxdWlyZXNTdHJva2UK
ICAgICBpZiAoIXN0cm9rZUJvdW5kaW5nQm94KCkuY29udGFpbnMocG9pbnQpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBDb2xvciBmYWxsYmFja0NvbG9yOworICAgIE9wdGlvbmFsUkdC
QSBmYWxsYmFja0NvbG9yOwogICAgIGlmIChyZXF1aXJlc1N0cm9rZSAmJiAhUmVuZGVyU1ZHUmVz
b3VyY2U6OnN0cm9rZVBhaW50aW5nUmVzb3VyY2UoKnRoaXMsIHN0eWxlKCksIGZhbGxiYWNrQ29s
b3IpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCBib29sIFJl
bmRlclNWR1NoYXBlOjpzaG91bGRHZW5lcmF0ZU1hcmtlclBvc2l0aW9ucygpIGNvbnN0CiAKIHZv
aWQgUmVuZGVyU1ZHU2hhcGU6OmZpbGxTaGFwZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBDb2xvciBmYWxsYmFja0NvbG9yOworICAg
IE9wdGlvbmFsUkdCQSBmYWxsYmFja0NvbG9yOwogICAgIGlmIChSZW5kZXJTVkdSZXNvdXJjZSog
ZmlsbFBhaW50aW5nUmVzb3VyY2UgPSBSZW5kZXJTVkdSZXNvdXJjZTo6ZmlsbFBhaW50aW5nUmVz
b3VyY2UoKnRoaXMsIHN0eWxlLCBmYWxsYmFja0NvbG9yKSkgewogICAgICAgICBpZiAoZmlsbFBh
aW50aW5nUmVzb3VyY2UtPmFwcGx5UmVzb3VyY2UoKnRoaXMsIHN0eWxlLCBjb250ZXh0LCBBcHBs
eVRvRmlsbE1vZGUpKQogICAgICAgICAgICAgZmlsbFBhaW50aW5nUmVzb3VyY2UtPnBvc3RBcHBs
eVJlc291cmNlKCp0aGlzLCBjb250ZXh0LCBBcHBseVRvRmlsbE1vZGUsIDAsIHRoaXMpOwpAQCAt
MjQyLDcgKzI0Miw3IEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OmZpbGxTaGFwZShjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIEdyYXBoaWNzQ29udGV4dCogY29udGV4CiAKIHZvaWQgUmVuZGVyU1ZH
U2hhcGU6OnN0cm9rZVNoYXBlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0KQogewotICAgIENvbG9yIGZhbGxiYWNrQ29sb3I7CisgICAgT3B0aW9uYWxS
R0JBIGZhbGxiYWNrQ29sb3I7CiAgICAgaWYgKFJlbmRlclNWR1Jlc291cmNlKiBzdHJva2VQYWlu
dGluZ1Jlc291cmNlID0gUmVuZGVyU1ZHUmVzb3VyY2U6OnN0cm9rZVBhaW50aW5nUmVzb3VyY2Uo
KnRoaXMsIHN0eWxlLCBmYWxsYmFja0NvbG9yKSkgewogICAgICAgICBpZiAoc3Ryb2tlUGFpbnRp
bmdSZXNvdXJjZS0+YXBwbHlSZXNvdXJjZSgqdGhpcywgc3R5bGUsIGNvbnRleHQsIEFwcGx5VG9T
dHJva2VNb2RlKSkKICAgICAgICAgICAgIHN0cm9rZVBhaW50aW5nUmVzb3VyY2UtPnBvc3RBcHBs
eVJlc291cmNlKCp0aGlzLCBjb250ZXh0LCBBcHBseVRvU3Ryb2tlTW9kZSwgMCwgdGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcApp
bmRleCA4M2IxNzVkZmM1NDg0ZWE1ZWIxNWRjMjk2MWI4MmMwNmNhY2M0ZWM4Li5lNTUwMWRjOGEx
MWY3NDkyMzc1M2ZjNGJkYTYxODZiNzNhZDc4NTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2
b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZChQYWludEluZm8m
IHBhaW50SW5mbykKICAgICBpZiAoIWhhc1NlbGVjdGlvbiB8fCBwYWludFNlbGVjdGVkVGV4dE9u
bHkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IHJlbmRl
cmVyKCkuc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7CisgICAgT3B0aW9uYWxSR0JBIGJhY2tn
cm91bmRDb2xvciA9IHJlbmRlcmVyKCkuc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7CiAgICAg
aWYgKCFiYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpIHx8ICFiYWNrZ3JvdW5kQ29sb3IuYWxwaGEo
KSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNDAsNyArMzQwLDcgQEAgYm9vbCBTVkdJbmxpbmVU
ZXh0Qm94OjphY3F1aXJlUGFpbnRpbmdSZXNvdXJjZShHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0
LCBmbG9hdAogICAgIEFTU0VSVChzdHlsZSk7CiAgICAgQVNTRVJUKG1fcGFpbnRpbmdSZXNvdXJj
ZU1vZGUgIT0gQXBwbHlUb0RlZmF1bHRNb2RlKTsKIAotICAgIENvbG9yIGZhbGxiYWNrQ29sb3I7
CisgICAgT3B0aW9uYWxSR0JBIGZhbGxiYWNrQ29sb3I7CiAgICAgaWYgKG1fcGFpbnRpbmdSZXNv
dXJjZU1vZGUgJiBBcHBseVRvRmlsbE1vZGUpCiAgICAgICAgIG1fcGFpbnRpbmdSZXNvdXJjZSA9
IFJlbmRlclNWR1Jlc291cmNlOjpmaWxsUGFpbnRpbmdSZXNvdXJjZShyZW5kZXJlciwgKnN0eWxl
LCBmYWxsYmFja0NvbG9yKTsKICAgICBlbHNlIGlmIChtX3BhaW50aW5nUmVzb3VyY2VNb2RlICYg
QXBwbHlUb1N0cm9rZU1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCBmYzg1ZjIzZmMwNGI3MTJhMjAzZWQxYzVl
NmQ5NWRjYTQwYjAzMzE2Li4yM2U5OTM2NWUzZWVhZTU3Zjg0ZGQ0NTZiYjVjMzk2ZGFjMmY2ODRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVB
c1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJl
ZUFzVGV4dC5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU1ZHTWFya2VyVW5pdHNUeXBlJiBtYXJrZXJVbgog
ICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgQ29sb3ImIGMpCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBPcHRpb25hbFJHQkEmIGMpCiB7CiAgICAgcmV0dXJuIHRzIDw8IGMubmFtZUZvclJl
bmRlclRyZWVBc1RleHQoKTsKIH0KQEAgLTI2MSw3ICsyNjEsNyBAQCBzdGF0aWMgdm9pZCB3cml0
ZVN0eWxlKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKICAg
ICBpZiAoaXM8UmVuZGVyU1ZHU2hhcGU+KHJlbmRlcmVyKSkgewogICAgICAgICBjb25zdCBhdXRv
JiBzaGFwZSA9IGRvd25jYXN0PFJlbmRlclNWR1NoYXBlPihyZW5kZXJlcik7CiAKLSAgICAgICAg
Q29sb3IgZmFsbGJhY2tDb2xvcjsKKyAgICAgICAgT3B0aW9uYWxSR0JBIGZhbGxiYWNrQ29sb3I7
CiAgICAgICAgIGlmIChSZW5kZXJTVkdSZXNvdXJjZSogc3Ryb2tlUGFpbnRpbmdSZXNvdXJjZSA9
IFJlbmRlclNWR1Jlc291cmNlOjpzdHJva2VQYWludGluZ1Jlc291cmNlKGNvbnN0X2Nhc3Q8UmVu
ZGVyU1ZHU2hhcGUmPihzaGFwZSksIHNoYXBlLnN0eWxlKCksIGZhbGxiYWNrQ29sb3IpKSB7CiAg
ICAgICAgICAgICBUZXh0U3RyZWFtU2VwYXJhdG9yIHMoIiAiKTsKICAgICAgICAgICAgIHRzIDw8
ICIgW3N0cm9rZT17IiA8PCBzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlclRyZWVBc1RleHQuaAppbmRleCBlYmMzOTMyZjQ5ZDIyZTg2OWQ2MTg5OTJjYjk4
ZmQ0MGMwN2ZkNzIyLi44NDBiNGQ3ZGQ5OWZhYzljMzhmNDgxYjYxYjRjNmUwODM4MTExYThjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1Rl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1Rl
eHQuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENv
bG9yOworY2xhc3MgT3B0aW9uYWxSR0JBOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgRmxvYXRT
aXplOwogY2xhc3MgTm9kZTsKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCB3cml0ZVJlc291cmNlcyhU
ZXh0U3RyZWFtJiwgY29uc3QgUmVuZGVyT2JqZWN0JiwgaW50IGluZGVudCk7CiAKIC8vIGhlbHBl
ciBvcGVyYXRvcnMgZGVmaW5lZCB1c2VkIGluIHZhcmlvdXMgY2xhc3NlcyB0byBkdW1wIHRoZSBy
ZW5kZXIgdHJlZS4KIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYpOwotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29u
c3QgQ29sb3ImKTsKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IE9w
dGlvbmFsUkdCQSYpOwogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3Qg
RmxvYXRSZWN0Jik7CiAKIC8vIGhlbHBlciBvcGVyYXRvcnMgc3BlY2lmaWMgdG8gZHVtcGluZyB0
aGUgcmVuZGVyIHRyZWUuIHRoZXNlIGFyZSB1c2VkIGluIHZhcmlvdXMgY2xhc3NlcyB0byBkdW1w
IHRoZSByZW5kZXIgdHJlZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL0NvbG9yRGlz
dGFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL0NvbG9yRGlzdGFuY2UuY3BwCmluZGV4IGEy
ZWU5MzBiNTQ0MGFhMjFhZDU4ODk5ZDY1NGRkOWY0MGFkZDBjMDYuLmE0ZDZiOWVlZDExZTBlYzE4
MDA2NDY5YmQzNGFjZWJmNDBkYTk2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9D
b2xvckRpc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvQ29sb3JEaXN0YW5jZS5j
cHAKQEAgLTMyLDcgKzMyLDcgQEAgQ29sb3JEaXN0YW5jZTo6Q29sb3JEaXN0YW5jZSgpCiB7CiB9
CiAKLUNvbG9yRGlzdGFuY2U6OkNvbG9yRGlzdGFuY2UoY29uc3QgQ29sb3ImIGZyb21Db2xvciwg
Y29uc3QgQ29sb3ImIHRvQ29sb3IpCitDb2xvckRpc3RhbmNlOjpDb2xvckRpc3RhbmNlKGNvbnN0
IE9wdGlvbmFsUkdCQSYgZnJvbUNvbG9yLCBjb25zdCBPcHRpb25hbFJHQkEmIHRvQ29sb3IpCiAg
ICAgOiBtX3JlZERpZmYodG9Db2xvci5yZWQoKSAtIGZyb21Db2xvci5yZWQoKSkKICAgICAsIG1f
Z3JlZW5EaWZmKHRvQ29sb3IuZ3JlZW4oKSAtIGZyb21Db2xvci5ncmVlbigpKQogICAgICwgbV9i
bHVlRGlmZih0b0NvbG9yLmJsdWUoKSAtIGZyb21Db2xvci5ibHVlKCkpCkBAIC02MiwxOSArNjIs
MTkgQEAgQ29sb3JEaXN0YW5jZSBDb2xvckRpc3RhbmNlOjpzY2FsZWREaXN0YW5jZShmbG9hdCBz
Y2FsZUZhY3RvcikgY29uc3QKICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxp
bnQ+KHNjYWxlRmFjdG9yICogbV9ibHVlRGlmZikpOwogfQogCi1Db2xvciBDb2xvckRpc3RhbmNl
OjpjbGFtcENvbG9yKGludCByZWQsIGludCBncmVlbiwgaW50IGJsdWUsIGludCBhbHBoYSkKK09w
dGlvbmFsUkdCQSBDb2xvckRpc3RhbmNlOjpjbGFtcENvbG9yKGludCByZWQsIGludCBncmVlbiwg
aW50IGJsdWUsIGludCBhbHBoYSkKIHsKLSAgICByZXR1cm4gQ29sb3IoY2xhbXBDb2xvclZhbHVl
KHJlZCksIGNsYW1wQ29sb3JWYWx1ZShncmVlbiksIGNsYW1wQ29sb3JWYWx1ZShibHVlKSwgY2xh
bXBDb2xvclZhbHVlKGFscGhhKSk7CisgICAgcmV0dXJuIE9wdGlvbmFsUkdCQShjbGFtcENvbG9y
VmFsdWUocmVkKSwgY2xhbXBDb2xvclZhbHVlKGdyZWVuKSwgY2xhbXBDb2xvclZhbHVlKGJsdWUp
LCBjbGFtcENvbG9yVmFsdWUoYWxwaGEpKTsKIH0KIAotQ29sb3IgQ29sb3JEaXN0YW5jZTo6YWRk
Q29sb3JzKGNvbnN0IENvbG9yJiBmaXJzdCwgY29uc3QgQ29sb3ImIHNlY29uZCkKK09wdGlvbmFs
UkdCQSBDb2xvckRpc3RhbmNlOjphZGRDb2xvcnMoY29uc3QgT3B0aW9uYWxSR0JBJiBmaXJzdCwg
Y29uc3QgT3B0aW9uYWxSR0JBJiBzZWNvbmQpCiB7Ci0gICAgcmV0dXJuIENvbG9yKGZpcnN0LnJl
ZCgpICsgc2Vjb25kLnJlZCgpLCBmaXJzdC5ncmVlbigpICsgc2Vjb25kLmdyZWVuKCksIGZpcnN0
LmJsdWUoKSArIHNlY29uZC5ibHVlKCkpOworICAgIHJldHVybiBPcHRpb25hbFJHQkEoZmlyc3Qu
cmVkKCkgKyBzZWNvbmQucmVkKCksIGZpcnN0LmdyZWVuKCkgKyBzZWNvbmQuZ3JlZW4oKSwgZmly
c3QuYmx1ZSgpICsgc2Vjb25kLmJsdWUoKSk7CiB9CiAKLUNvbG9yIENvbG9yRGlzdGFuY2U6OmFk
ZFRvQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSBjb25zdAorT3B0aW9uYWxSR0JBIENvbG9yRGlz
dGFuY2U6OmFkZFRvQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvcikgY29uc3QKIHsKLSAg
ICByZXR1cm4gQ29sb3IoY29sb3IucmVkKCkgKyBtX3JlZERpZmYsIGNvbG9yLmdyZWVuKCkgKyBt
X2dyZWVuRGlmZiwgY29sb3IuYmx1ZSgpICsgbV9ibHVlRGlmZik7CisgICAgcmV0dXJuIE9wdGlv
bmFsUkdCQShjb2xvci5yZWQoKSArIG1fcmVkRGlmZiwgY29sb3IuZ3JlZW4oKSArIG1fZ3JlZW5E
aWZmLCBjb2xvci5ibHVlKCkgKyBtX2JsdWVEaWZmKTsKIH0KIAogYm9vbCBDb2xvckRpc3RhbmNl
Ojppc1plcm8oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL0NvbG9yRGlz
dGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9Db2xvckRpc3RhbmNlLmgKaW5kZXggNTdkZDJh
ZGM4ZWE4OTg0N2QwZGJmNzY0OGE1MzMxZTg1NTg4ZWJhMy4uMTg3YmY5OGUzZTIwNTZjODkwNjk5
ZWY3MmI5ZDRjY2QxMTEyMjg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL0NvbG9y
RGlzdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvQ29sb3JEaXN0YW5jZS5oCkBAIC0y
MiwxOSArMjIsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotY2xhc3MgQ29sb3I7
CitjbGFzcyBPcHRpb25hbFJHQkE7CiAgICAgCiBjbGFzcyBDb2xvckRpc3RhbmNlIHsKIHB1Ymxp
YzoKICAgICBDb2xvckRpc3RhbmNlKCk7Ci0gICAgQ29sb3JEaXN0YW5jZShjb25zdCBDb2xvciYg
ZnJvbUNvbG9yLCBjb25zdCBDb2xvciYgdG9Db2xvcik7CisgICAgQ29sb3JEaXN0YW5jZShjb25z
dCBPcHRpb25hbFJHQkEmIGZyb21Db2xvciwgY29uc3QgT3B0aW9uYWxSR0JBJiB0b0NvbG9yKTsK
ICAgICBDb2xvckRpc3RhbmNlKGludCByZWREaWZmLCBpbnQgYmx1ZURpZmYsIGludCBncmVlbkRp
ZmYpOwogCiAgICAgQ29sb3JEaXN0YW5jZSBzY2FsZWREaXN0YW5jZShmbG9hdCBzY2FsZUZhY3Rv
cikgY29uc3Q7Ci0gICAgQ29sb3IgYWRkVG9Db2xvcihjb25zdCBDb2xvciYpIGNvbnN0OworICAg
IE9wdGlvbmFsUkdCQSBhZGRUb0NvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYpIGNvbnN0OwogICAg
ICAgICAKLSAgICBzdGF0aWMgQ29sb3IgYWRkQ29sb3JzKGNvbnN0IENvbG9yJiwgY29uc3QgQ29s
b3ImKTsKLSAgICBzdGF0aWMgQ29sb3IgY2xhbXBDb2xvcihpbnQgcmVkLCBpbnQgZ3JlZW4sIGlu
dCBibHVlLCBpbnQgYWxwaGEpOworICAgIHN0YXRpYyBPcHRpb25hbFJHQkEgYWRkQ29sb3JzKGNv
bnN0IE9wdGlvbmFsUkdCQSYsIGNvbnN0IE9wdGlvbmFsUkdCQSYpOworICAgIHN0YXRpYyBPcHRp
b25hbFJHQkEgY2xhbXBDb2xvcihpbnQgcmVkLCBpbnQgZ3JlZW4sIGludCBibHVlLCBpbnQgYWxw
aGEpOwogCiAgICAgYm9vbCBpc1plcm8oKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkQ29sb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkQ29sb3IuY3BwCmluZGV4IGFjNDg2NDU4ZGQyNTBmZDg5MjAyNDM1NWI4ZDY0Njk0ZDUw
NzIzOTkuLmY5NWM4MzE5MDZjNzQxNjMwODU0YzE0N2MyNjlhNGIzNTdkZmU1YjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZENvbG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAKQEAgLTM0LDggKzM0LDggQEAgU1ZHQW5p
bWF0ZWRDb2xvckFuaW1hdG9yOjpTVkdBbmltYXRlZENvbG9yQW5pbWF0b3IoU1ZHQW5pbWF0aW9u
RWxlbWVudCogYW5pbWF0aW8KIAogc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZH
QW5pbWF0ZWRDb2xvckFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogewotICAgIGF1dG8gYW5pbWF0ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVh
dGVDb2xvcihzdGQ6Om1ha2VfdW5pcXVlPENvbG9yPigpKTsKLSAgICBhbmltYXRlZFR5cGUtPmNv
bG9yKCkgPSBzdHJpbmcuaXNFbXB0eSgpID8gQ29sb3IoKSA6IFNWR0NvbG9yOjpjb2xvckZyb21S
R0JDb2xvclN0cmluZyhzdHJpbmcpOworICAgIGF1dG8gYW5pbWF0ZWRUeXBlID0gU1ZHQW5pbWF0
ZWRUeXBlOjpjcmVhdGVDb2xvcihzdGQ6Om1ha2VfdW5pcXVlPE9wdGlvbmFsUkdCQT4oKSk7Cisg
ICAgYW5pbWF0ZWRUeXBlLT5jb2xvcigpID0gc3RyaW5nLmlzRW1wdHkoKSA/IE9wdGlvbmFsUkdC
QSgpIDogU1ZHQ29sb3I6OmNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKHN0cmluZyk7CiAgICAgcmV0
dXJuIGFuaW1hdGVkVHlwZTsKIH0KIApAQCAtNDYsMTcgKzQ2LDE3IEBAIHZvaWQgU1ZHQW5pbWF0
ZWRDb2xvckFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSogZnJvbSwg
U1ZHQW5pbWF0CiAgICAgdG8tPmNvbG9yKCkgPSBDb2xvckRpc3RhbmNlOjphZGRDb2xvcnMoZnJv
bS0+Y29sb3IoKSwgdG8tPmNvbG9yKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgYWRqdXN0
Rm9yQ3VycmVudENvbG9yKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIENvbG9yJiBjb2xvcikK
K3N0YXRpYyBpbmxpbmUgdm9pZCBhZGp1c3RGb3JDdXJyZW50Q29sb3IoU1ZHRWxlbWVudCogdGFy
Z2V0RWxlbWVudCwgT3B0aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICBBU1NFUlQodGFyZ2V0RWxl
bWVudCk7CiAKICAgICBpZiAoUmVuZGVyRWxlbWVudCogdGFyZ2V0UmVuZGVyZXIgPSB0YXJnZXRF
bGVtZW50LT5yZW5kZXJlcigpKQogICAgICAgICBjb2xvciA9IHRhcmdldFJlbmRlcmVyLT5zdHls
ZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICBlbHNlCi0g
ICAgICAgIGNvbG9yID0gQ29sb3IoKTsKKyAgICAgICAgY29sb3IgPSBPcHRpb25hbFJHQkEoKTsK
IH0KIAotc3RhdGljIENvbG9yIHBhcnNlQ29sb3JGcm9tU3RyaW5nKFNWR0FuaW1hdGlvbkVsZW1l
bnQqLCBjb25zdCBTdHJpbmcmIHN0cmluZykKK3N0YXRpYyBPcHRpb25hbFJHQkEgcGFyc2VDb2xv
ckZyb21TdHJpbmcoU1ZHQW5pbWF0aW9uRWxlbWVudCosIGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
ewogICAgIHJldHVybiBTVkdDb2xvcjo6Y29sb3JGcm9tUkdCQ29sb3JTdHJpbmcoc3RyaW5nKTsK
IH0KQEAgLTY2LDE0ICs2NiwxNCBAQCB2b2lkIFNWR0FuaW1hdGVkQ29sb3JBbmltYXRvcjo6Y2Fs
Y3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZAogICAgIEFTU0VS
VChtX2FuaW1hdGlvbkVsZW1lbnQpOwogICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKIAot
ICAgIENvbG9yIGZyb21Db2xvciA9IG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgp
ID09IFRvQW5pbWF0aW9uID8gYW5pbWF0ZWQtPmNvbG9yKCkgOiBmcm9tLT5jb2xvcigpOwotICAg
IENvbG9yIHRvQ29sb3IgPSB0by0+Y29sb3IoKTsKLSAgICBjb25zdCBDb2xvciYgdG9BdEVuZE9m
RHVyYXRpb25Db2xvciA9IHRvQXRFbmRPZkR1cmF0aW9uLT5jb2xvcigpOwotICAgIENvbG9yJiBh
bmltYXRlZENvbG9yID0gYW5pbWF0ZWQtPmNvbG9yKCk7CisgICAgT3B0aW9uYWxSR0JBIGZyb21D
b2xvciA9IG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgpID09IFRvQW5pbWF0aW9u
ID8gYW5pbWF0ZWQtPmNvbG9yKCkgOiBmcm9tLT5jb2xvcigpOworICAgIE9wdGlvbmFsUkdCQSB0
b0NvbG9yID0gdG8tPmNvbG9yKCk7CisgICAgY29uc3QgT3B0aW9uYWxSR0JBJiB0b0F0RW5kT2ZE
dXJhdGlvbkNvbG9yID0gdG9BdEVuZE9mRHVyYXRpb24tPmNvbG9yKCk7CisgICAgT3B0aW9uYWxS
R0JBJiBhbmltYXRlZENvbG9yID0gYW5pbWF0ZWQtPmNvbG9yKCk7CiAKICAgICAvLyBBcHBseSBD
U1MgaW5oZXJpdGFuY2UgcnVsZXMuCi0gICAgbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGb3JJ
bmhlcml0YW5jZTxDb2xvcj4ocGFyc2VDb2xvckZyb21TdHJpbmcsIG1fYW5pbWF0aW9uRWxlbWVu
dC0+ZnJvbVByb3BlcnR5VmFsdWVUeXBlKCksIGZyb21Db2xvciwgbV9jb250ZXh0RWxlbWVudCk7
Ci0gICAgbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGb3JJbmhlcml0YW5jZTxDb2xvcj4ocGFy
c2VDb2xvckZyb21TdHJpbmcsIG1fYW5pbWF0aW9uRWxlbWVudC0+dG9Qcm9wZXJ0eVZhbHVlVHlw
ZSgpLCB0b0NvbG9yLCBtX2NvbnRleHRFbGVtZW50KTsKKyAgICBtX2FuaW1hdGlvbkVsZW1lbnQt
PmFkanVzdEZvckluaGVyaXRhbmNlPE9wdGlvbmFsUkdCQT4ocGFyc2VDb2xvckZyb21TdHJpbmcs
IG1fYW5pbWF0aW9uRWxlbWVudC0+ZnJvbVByb3BlcnR5VmFsdWVUeXBlKCksIGZyb21Db2xvciwg
bV9jb250ZXh0RWxlbWVudCk7CisgICAgbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGb3JJbmhl
cml0YW5jZTxPcHRpb25hbFJHQkE+KHBhcnNlQ29sb3JGcm9tU3RyaW5nLCBtX2FuaW1hdGlvbkVs
ZW1lbnQtPnRvUHJvcGVydHlWYWx1ZVR5cGUoKSwgdG9Db2xvciwgbV9jb250ZXh0RWxlbWVudCk7
CiAKICAgICAvLyBBcHBseSA8YW5pbWF0ZUNvbG9yPiBydWxlcy4KICAgICBpZiAobV9hbmltYXRp
b25FbGVtZW50LT5mcm9tUHJvcGVydHlWYWx1ZVR5cGUoKSA9PSBDdXJyZW50Q29sb3JWYWx1ZSkK
QEAgLTk5LDEwICs5OSwxMCBAQCB2b2lkIFNWR0FuaW1hdGVkQ29sb3JBbmltYXRvcjo6Y2FsY3Vs
YXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZAogZmxvYXQgU1ZHQW5p
bWF0ZWRDb2xvckFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21T
dHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCiB7CiAgICAgQVNTRVJUKG1fY29udGV4dEVs
ZW1lbnQpOwotICAgIENvbG9yIGZyb20gPSBTVkdDb2xvcjo6Y29sb3JGcm9tUkdCQ29sb3JTdHJp
bmcoZnJvbVN0cmluZyk7CisgICAgT3B0aW9uYWxSR0JBIGZyb20gPSBTVkdDb2xvcjo6Y29sb3JG
cm9tUkdCQ29sb3JTdHJpbmcoZnJvbVN0cmluZyk7CiAgICAgaWYgKCFmcm9tLmlzVmFsaWQoKSkK
ICAgICAgICAgcmV0dXJuIC0xOwotICAgIENvbG9yIHRvID0gU1ZHQ29sb3I6OmNvbG9yRnJvbVJH
QkNvbG9yU3RyaW5nKHRvU3RyaW5nKTsKKyAgICBPcHRpb25hbFJHQkEgdG8gPSBTVkdDb2xvcjo6
Y29sb3JGcm9tUkdCQ29sb3JTdHJpbmcodG9TdHJpbmcpOwogICAgIGlmICghdG8uaXNWYWxpZCgp
KQogICAgICAgICByZXR1cm4gLTE7CiAgICAgcmV0dXJuIENvbG9yRGlzdGFuY2UoZnJvbSwgdG8p
LmRpc3RhbmNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCmluZGV4IGVm
ODZmMjkxMTM5MjNjM2U5YzcyOWI5MTA1ODU3ZTM2ZDI4MWY1N2QuLjdkMTQ1MzJkZDU1OGYwMmY4
MjBkZDJmNmYzYzFiZWQyN2E3MjA0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5
cGUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlw
ZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVCb29sZWFuKHN0ZDo6dW5pcXVlX3B0cjwKICAgICBy
ZXR1cm4gYW5pbWF0ZWRUeXBlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUNvbG9yKHN0ZDo6dW5pcXVlX3B0cjxDb2xvcj4gY29s
b3IpCitzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNy
ZWF0ZUNvbG9yKHN0ZDo6dW5pcXVlX3B0cjxPcHRpb25hbFJHQkE+IGNvbG9yKQogewogICAgIEFT
U0VSVChjb2xvcik7CiAgICAgYXV0byBhbmltYXRlZFR5cGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNW
R0FuaW1hdGVkVHlwZT4oQW5pbWF0ZWRDb2xvcik7CkBAIC0yNzUsNyArMjc1LDcgQEAgYm9vbCBT
VkdBbmltYXRlZFR5cGU6OnNldFZhbHVlQXNTdHJpbmcoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUsIGNvbnN0IFN0cmkKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgQW5pbWF0
ZWRDb2xvcjoKICAgICAgICAgQVNTRVJUKG1fZGF0YS5jb2xvcik7Ci0gICAgICAgICptX2RhdGEu
Y29sb3IgPSB2YWx1ZS5pc0VtcHR5KCkgPyBDb2xvcigpIDogU1ZHQ29sb3I6OmNvbG9yRnJvbVJH
QkNvbG9yU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgKm1fZGF0YS5jb2xvciA9IHZhbHVlLmlzRW1w
dHkoKSA/IE9wdGlvbmFsUkdCQSgpIDogU1ZHQ29sb3I6OmNvbG9yRnJvbVJHQkNvbG9yU3RyaW5n
KHZhbHVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aDogewogICAg
ICAgICBBU1NFUlQobV9kYXRhLmxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBl
LmgKaW5kZXggMjkxNGMyYTEwMTI3NDBmNTNjZTJjMWFiM2QzYTdiNjlhNTdiYjdlMy4uMDRlMzRi
OGY3N2MwMmVlYTExYWQxZjU0ZTEwMDhmNzA2YmMxMDc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZFR5cGUuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlQW5nbGVBbmRFbnVtZXJhdGlvbihz
dGQ6OnVuaXF1ZV9wdHI8c3RkOjpwYWlyPFNWR0FuZ2xlLCB1bnNpZ25lZD4+KTsKICAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlQm9vbGVhbihzdGQ6OnVu
aXF1ZV9wdHI8Ym9vbD4pOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBjcmVhdGVDb2xvcihzdGQ6OnVuaXF1ZV9wdHI8Q29sb3I+KTsKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlQ29sb3Ioc3RkOjp1bmlxdWVfcHRy
PE9wdGlvbmFsUkdCQT4pOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBjcmVhdGVFbnVtZXJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8dW5zaWduZWQ+KTsKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlSW50ZWdlcihzdGQ6
OnVuaXF1ZV9wdHI8aW50Pik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRl
ZFR5cGU+IGNyZWF0ZUludGVnZXJPcHRpb25hbEludGVnZXIoc3RkOjp1bmlxdWVfcHRyPHN0ZDo6
cGFpcjxpbnQsIGludD4+KTsKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gKm1fZGF0YS5ib29sZWFuOwogICAgIH0KIAotICAgIGNvbnN0IENvbG9yJiBjb2xvcigpIGNv
bnN0CisgICAgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvcigpIGNvbnN0CiAgICAgewogICAgICAg
ICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkQ29sb3IpOwogICAgICAgICByZXR1cm4gKm1fZGF0
YS5jb2xvcjsKQEAgLTE3OCw3ICsxNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqbV9k
YXRhLmJvb2xlYW47CiAgICAgfQogCi0gICAgQ29sb3ImIGNvbG9yKCkKKyAgICBPcHRpb25hbFJH
QkEmIGNvbG9yKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRDb2xv
cik7CiAgICAgICAgIHJldHVybiAqbV9kYXRhLmNvbG9yOwpAQCAtMjgyLDcgKzI4Miw3IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgc3RkOjpwYWlyPFNWR0FuZ2xlLCB1bnNpZ25lZD4qIGFuZ2xlQW5k
RW51bWVyYXRpb247CiAgICAgICAgIGJvb2wqIGJvb2xlYW47Ci0gICAgICAgIENvbG9yKiBjb2xv
cjsKKyAgICAgICAgT3B0aW9uYWxSR0JBKiBjb2xvcjsKICAgICAgICAgdW5zaWduZWQqIGVudW1l
cmF0aW9uOwogICAgICAgICBpbnQqIGludGVnZXI7CiAgICAgICAgIHN0ZDo6cGFpcjxpbnQsIGlu
dD4qIGludGVnZXJPcHRpb25hbEludGVnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ29sb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNwcAppbmRleCA4
ZTg2YmRhYjk4YTBhMDNkNDljMjFhOTNjYTAyMDg4YWM0OTUxZDY2Li4wNTQ1ZWU1YWY3MGE1NWFi
YTY1OTRlNTc5MDI5N2ZmZjdlNmFhN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5jcHAKQEAgLTQ1
LDEzICs0NSwxMyBAQCBSZWY8UkdCQ29sb3I+IFNWR0NvbG9yOjpyZ2JDb2xvcigpIGNvbnN0CiAg
ICAgcmV0dXJuIFJHQkNvbG9yOjpjcmVhdGUobV9jb2xvci5yZ2IoKSk7CiB9CiAKLUNvbG9yIFNW
R0NvbG9yOjpjb2xvckZyb21SR0JDb2xvclN0cmluZyhjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5n
KQorT3B0aW9uYWxSR0JBIFNWR0NvbG9yOjpjb2xvckZyb21SR0JDb2xvclN0cmluZyhjb25zdCBT
dHJpbmcmIGNvbG9yU3RyaW5nKQogewogICAgIC8vIEZJWE1FOiBSZXdvcmsgY3NzIHBhcnNlciBz
byBpdCBpcyBtb3JlIFNWRyBhd2FyZS4KICAgICBSR0JBMzIgY29sb3I7CiAgICAgaWYgKENTU1Bh
cnNlcjo6cGFyc2VDb2xvcihjb2xvciwgY29sb3JTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCkpKQog
ICAgICAgICByZXR1cm4gY29sb3I7Ci0gICAgcmV0dXJuIENvbG9yKCk7CisgICAgcmV0dXJuIE9w
dGlvbmFsUkdCQSgpOwogfQogCiB2b2lkIFNWR0NvbG9yOjpzZXRSR0JDb2xvcihjb25zdCBTdHJp
bmcmLCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdDb2xvci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmgKaW5kZXggMDFjNjYyNTEy
YzJkZDcwMDM0OTE2ODkwNjYzMTAwN2RjMTFjYmRhYy4uZDkzOTFhNTVlNmM1Njg2YmM3OGExZjc0
Y2FjMjM3ZWZiY2M5NzA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmgKQEAgLTQ1LDcgKzQ1LDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gY29sb3I7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxT
VkdDb2xvcj4gY3JlYXRlRnJvbUNvbG9yKGNvbnN0IENvbG9yJiByZ2JDb2xvcikKKyAgICBzdGF0
aWMgUmVmPFNWR0NvbG9yPiBjcmVhdGVGcm9tQ29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiByZ2JD
b2xvcikKICAgICB7CiAgICAgICAgIGF1dG8gY29sb3IgPSBhZG9wdFJlZigqbmV3IFNWR0NvbG9y
KFNWR19DT0xPUlRZUEVfUkdCQ09MT1IpKTsKICAgICAgICAgY29sb3IuZ2V0KCkuc2V0Q29sb3Io
cmdiQ29sb3IpOwpAQCAtNTcsMTEgKzU3LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU1ZHQ29sb3IoU1ZHX0NPTE9SVFlQRV9DVVJSRU5UQ09MT1IpKTsKICAgICB9
CiAKLSAgICBjb25zdCBDb2xvciYgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9Cisg
ICAgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH0K
ICAgICBjb25zdCBTVkdDb2xvclR5cGUmIGNvbG9yVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29s
b3JUeXBlOyB9CiAgICAgUmVmPFJHQkNvbG9yPiByZ2JDb2xvcigpIGNvbnN0OwogCi0gICAgc3Rh
dGljIENvbG9yIGNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKGNvbnN0IFN0cmluZyYpOworICAgIHN0
YXRpYyBPcHRpb25hbFJHQkEgY29sb3JGcm9tUkdCQ29sb3JTdHJpbmcoY29uc3QgU3RyaW5nJik7
CiAKICAgICB2b2lkIHNldFJHQkNvbG9yKGNvbnN0IFN0cmluZyYgcmdiQ29sb3IsIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2b2lkIHNldFJHQkNvbG9ySUNDQ29sb3IoY29uc3QgU3RyaW5nJiByZ2JD
b2xvciwgY29uc3QgU3RyaW5nJiBpY2NDb2xvciwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtODEsMTMg
KzgxLDEzIEBAIHByb3RlY3RlZDoKICAgICBTVkdDb2xvcihDbGFzc1R5cGUsIGNvbnN0IFNWR0Nv
bG9yVHlwZSYpOwogICAgIFNWR0NvbG9yKENsYXNzVHlwZSwgY29uc3QgU1ZHQ29sb3ImIGNsb25l
RnJvbSk7CiAKLSAgICB2b2lkIHNldENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX2NvbG9y
ID0gY29sb3I7IH0KKyAgICB2b2lkIHNldENvbG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3Ip
IHsgbV9jb2xvciA9IGNvbG9yOyB9CiAgICAgdm9pZCBzZXRDb2xvclR5cGUoY29uc3QgU1ZHQ29s
b3JUeXBlJiB0eXBlKSB7IG1fY29sb3JUeXBlID0gdHlwZTsgfQogCiBwcml2YXRlOgogICAgIFNW
R0NvbG9yKGNvbnN0IFNWR0NvbG9yVHlwZSYpOwogCi0gICAgQ29sb3IgbV9jb2xvcjsKKyAgICBP
cHRpb25hbFJHQkEgbV9jb2xvcjsKICAgICBTVkdDb2xvclR5cGUgbV9jb2xvclR5cGU7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQu
aWRsIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmlkbAppbmRl
eCA2ZGNiZDVjM2UzN2ExNDg5NjllYzk1N2Q2YmE5M2E1MmM0YTg5YWVjLi5lZjUxOTVjM2JhMTIx
NTRjZGM4YTQyMDhmYWEzODMxZjA2MzdlMDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbG9yTWF0cml4RWxlbWVudC5pZGwKQEAgLTI2LDcgKzI2LDcgQEAKIFsKICAgICBEb05v
dENoZWNrQ29uc3RhbnRzCiBdIGludGVyZmFjZSBTVkdGRUNvbG9yTWF0cml4RWxlbWVudCA6IFNW
R0VsZW1lbnQgewotICAgIC8vIENvbG9yIE1hdHJpeCBUeXBlcworICAgIC8vIE9wdGlvbmFsUkdC
QSBNYXRyaXggVHlwZXMKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJ
WF9UWVBFX1VOS05PV04gICAgICAgICAgPSAwOwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNW
R19GRUNPTE9STUFUUklYX1RZUEVfTUFUUklYICAgICAgICAgICA9IDE7CiAgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9TQVRVUkFURSAgICAgICAgID0gMjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5j
cHAKaW5kZXggYmEyYTNkNDA5NDllNGVhNTI4Zjc1MzAyOWU2Njg5OTMxZjNjMDQ2OC4uMDRmNTNj
YTViNTg0MjFlMWJmZDMyZDI0M2FhM2Y1NjQwMTgyMmYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTE4Nyw3ICsxODcs
NyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlcgogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIAotICAgIENvbG9yIGNvbG9yID0gcmVuZGVyZXItPnN0eWxl
KCkuc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCk7CisgICAgT3B0aW9uYWxSR0JBIGNvbG9yID0g
cmVuZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCk7CiAKICAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGZpbHRl
ciwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXJu
ZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBsaWdodFNvdXJjZS5yZWxlYXNl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCmlu
ZGV4IGFlZTA4ZGQ1NmQyYTFjOTJkM2ZkMDI1OGU2ODIxOTMyNDVkNWE2ZTcuLmQ4NWQ2YzkzZDA5
ZTZkOTQ4ZTIyMmM3YWJiMGIzZDU5NGEzNDk5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiBmaWx0ZXJCdWlsZAogCiAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gcmVu
ZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUoKTsKICAgICAKLSAgICBDb2xvciBjb2xvciA9IHN2Z1N0
eWxlLmZsb29kQ29sb3IoKTsKKyAgICBPcHRpb25hbFJHQkEgY29sb3IgPSBzdmdTdHlsZS5mbG9v
ZENvbG9yKCk7CiAgICAgZmxvYXQgb3BhY2l0eSA9IHN2Z1N0eWxlLmZsb29kT3BhY2l0eSgpOwog
CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlk
KGluMSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCmluZGV4IGU5
ZGVlYWY5ZDIwN2I5OTY4MzM3MGQ2M2UzNjNiYjcxMTYyMGEwYTcuLjczMGFlMzBlYzY4Y2Q1MWQ1
MmYxNWIxZGUxODA2NGQxZGRkYjI5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUZsb29kRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RF
bGVtZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUZs
b29kRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYgZmlsdGVyKQogICAg
IAogICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgp
LnN2Z1N0eWxlKCk7CiAKLSAgICBDb2xvciBjb2xvciA9IHN2Z1N0eWxlLmZsb29kQ29sb3IoKTsK
KyAgICBPcHRpb25hbFJHQkEgY29sb3IgPSBzdmdTdHlsZS5mbG9vZENvbG9yKCk7CiAgICAgZmxv
YXQgb3BhY2l0eSA9IHN2Z1N0eWxlLmZsb29kT3BhY2l0eSgpOwogCiAgICAgcmV0dXJuIEZFRmxv
b2Q6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBvcGFjaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCBmZWY3ZWVkMTlm
NGViZGZjODNjOWQxOWRhN2RhZGVmMzU0Y2RmNTg2Li44ODhjMjM2ZGE0OWU0MWQxNTZiYThiMTMy
ZDZkODk4YzJiNWM0MTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciogZmlsdGUKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAKLSAgICBDb2xvciBjb2xvciA9IHJlbmRlcmVyLT5zdHlsZSgpLnN2Z1N0eWxlKCkubGln
aHRpbmdDb2xvcigpOworICAgIE9wdGlvbmFsUkdCQSBjb2xvciA9IHJlbmRlcmVyLT5zdHlsZSgp
LnN2Z1N0eWxlKCkubGlnaHRpbmdDb2xvcigpOwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
ZWZmZWN0ID0gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFj
ZVNjYWxlKCksIHNwZWN1bGFyQ29uc3RhbnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNwZWN1bGFyRXhwb25lbnQoKSwga2VybmVsVW5pdExlbmd0aFgoKSwg
a2VybmVsVW5pdExlbmd0aFkoKSwgbGlnaHRTb3VyY2UucmVsZWFzZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggYjFjMjUwNjc2YjBkNDQ1MjEwMzVl
MTA5MDU3NjQ5NWMxZDRmNGI1MS4uZTE0NjVlN2RmZGZmZTFkOWE3ODgyZTA2MzU5Y2Q5YjJmYmQy
NDk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKQEAgLTEz
Myw3ICsxMzMsNyBAQCBWZWN0b3I8R3JhZGllbnQ6OkNvbG9yU3RvcD4gU1ZHR3JhZGllbnRFbGVt
ZW50OjpidWlsZFN0b3BzKCkKICAgICBmbG9hdCBwcmV2aW91c09mZnNldCA9IDAuMGY7CiAKICAg
ICBmb3IgKGF1dG8mIHN0b3AgOiBjaGlsZHJlbk9mVHlwZTxTVkdTdG9wRWxlbWVudD4oKnRoaXMp
KSB7Ci0gICAgICAgIENvbG9yIGNvbG9yID0gc3RvcC5zdG9wQ29sb3JJbmNsdWRpbmdPcGFjaXR5
KCk7CisgICAgICAgIE9wdGlvbmFsUkdCQSBjb2xvciA9IHN0b3Auc3RvcENvbG9ySW5jbHVkaW5n
T3BhY2l0eSgpOwogCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgcmlnaHQgbW9ub3RvbmljIG9mZnNl
dAogICAgICAgICBmbG9hdCBvZmZzZXQgPSBzdG9wLm9mZnNldCgpOwpAQCAtMTQxLDcgKzE0MSw3
IEBAIFZlY3RvcjxHcmFkaWVudDo6Q29sb3JTdG9wPiBTVkdHcmFkaWVudEVsZW1lbnQ6OmJ1aWxk
U3RvcHMoKQogICAgICAgICBwcmV2aW91c09mZnNldCA9IG9mZnNldDsKIAogICAgICAgICAvLyBF
eHRyYWN0IGluZGl2aWR1YWwgY2hhbm5lbCB2YWx1ZXMKLSAgICAgICAgLy8gRklYTUU6IFdoeSBk
b2Vzbid0IENvbG9yU3RvcCB0YWtlIGEgQ29sb3IgYW5kIGFuIG9mZnNldD8/CisgICAgICAgIC8v
IEZJWE1FOiBXaHkgZG9lc24ndCBDb2xvclN0b3AgdGFrZSBhIE9wdGlvbmFsUkdCQSBhbmQgYW4g
b2Zmc2V0Pz8KICAgICAgICAgZmxvYXQgciwgZywgYiwgYTsKICAgICAgICAgY29sb3IuZ2V0UkdC
QShyLCBnLCBiLCBhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuaAppbmRleCA1YjMxM2Y0YTUwZTUxYTMw
NWY5MWY0MmQyN2NmYzEyMDEyYzE5NzJmLi4zM2E0Njk4MGVlYzExYjIxZDg5OGY5NDBlNTA1YTY0
MDU3MTUxYzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1BhaW50KFNWR19QQUlOVFRZUEVfQ1VS
UkVOVENPTE9SKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxTVkdQYWludD4gY3JlYXRlQ29s
b3IoY29uc3QgQ29sb3ImIGNvbG9yKQorICAgIHN0YXRpYyBSZWY8U1ZHUGFpbnQ+IGNyZWF0ZUNv
bG9yKGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IpCiAgICAgewogICAgICAgICBhdXRvIHBhaW50
ID0gYWRvcHRSZWYoKm5ldyBTVkdQYWludChTVkdfUEFJTlRUWVBFX1JHQkNPTE9SKSk7CiAgICAg
ICAgIHBhaW50LmdldCgpLnNldENvbG9yKGNvbG9yKTsKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdQYWludChTVkdfUEFJTlRUWVBFX1VS
SSwgdXJpKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxTVkdQYWludD4gY3JlYXRlVVJJQW5k
Q29sb3IoY29uc3QgU3RyaW5nJiB1cmksIGNvbnN0IENvbG9yJiBjb2xvcikKKyAgICBzdGF0aWMg
UmVmPFNWR1BhaW50PiBjcmVhdGVVUklBbmRDb2xvcihjb25zdCBTdHJpbmcmIHVyaSwgY29uc3Qg
T3B0aW9uYWxSR0JBJiBjb2xvcikKICAgICB7CiAgICAgICAgIGF1dG8gcGFpbnQgPSBhZG9wdFJl
ZigqbmV3IFNWR1BhaW50KFNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SLCB1cmkpKTsKICAgICAg
ICAgcGFpbnQuZ2V0KCkuc2V0Q29sb3IoY29sb3IpOwpAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOwogCi0g
ICAgc3RhdGljIFJlZjxTVkdQYWludD4gY3JlYXRlKGNvbnN0IFNWR1BhaW50VHlwZSYgdHlwZSwg
Y29uc3QgU3RyaW5nJiB1cmksIGNvbnN0IENvbG9yJiBjb2xvcikKKyAgICBzdGF0aWMgUmVmPFNW
R1BhaW50PiBjcmVhdGUoY29uc3QgU1ZHUGFpbnRUeXBlJiB0eXBlLCBjb25zdCBTdHJpbmcmIHVy
aSwgY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvcikKICAgICB7CiAgICAgICAgIGF1dG8gcGFpbnQg
PSBhZG9wdFJlZigqbmV3IFNWR1BhaW50KHR5cGUsIHVyaSkpOwogICAgICAgICBwYWludC5nZXQo
KS5zZXRDb2xvcihjb2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3Rv
cEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAppbmRl
eCBiYmU0ZjY2MGFkMmZkMmNlMTM1MGEzZTE5MGRhYjhkMjZjZTc1ZGM3Li4xNGExZmQ4YmFlNzZl
Njc0NmMzYWU0MGRiMmQ0ZDdhYTZjODZlM2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU3RvcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxl
bWVudC5jcHAKQEAgLTg2LDE0ICs4NiwxNCBAQCBib29sIFNWR1N0b3BFbGVtZW50OjpyZW5kZXJl
cklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQ29s
b3IgU1ZHU3RvcEVsZW1lbnQ6OnN0b3BDb2xvckluY2x1ZGluZ09wYWNpdHkoKSBjb25zdAorT3B0
aW9uYWxSR0JBIFNWR1N0b3BFbGVtZW50OjpzdG9wQ29sb3JJbmNsdWRpbmdPcGFjaXR5KCkgY29u
c3QKIHsKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSByZW5kZXJlcigpID8gJnJlbmRlcmVyKCkt
PnN0eWxlKCkgOiBudWxscHRyOwogICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIGZvciBudWxsIHN0
eWxlIGV4aXN0cyB0byBhZGRyZXNzIEJ1ZyBXSyA5MDgxNCwgYSByYXJlIGNyYXNoIGNvbmRpdGlv
biBpbgogICAgIC8vIHdoaWNoIHRoZSByZW5kZXJlciBvciBzdHlsZSBpcyBudWxsLiBUaGlzIGVu
dGlyZSBjbGFzcyBpcyBzY2hlZHVsZWQgZm9yIHJlbW92YWwgKEJ1ZyBXSyA4Njk0MSkKICAgICAv
LyBhbmQgd2Ugd2lsbCB0b2xlcmF0ZSB0aGlzIG51bGwgY2hlY2sgdW50aWwgdGhlbi4KICAgICBp
ZiAoIXN0eWxlKQotICAgICAgICByZXR1cm4gQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCB0cnVl
KTsgLy8gVHJhbnNwYXJlbnQgYmxhY2suCisgICAgICAgIHJldHVybiBPcHRpb25hbFJHQkEoT3B0
aW9uYWxSR0JBOjp0cmFuc3BhcmVudCwgdHJ1ZSk7IC8vIFRyYW5zcGFyZW50IGJsYWNrLgogCiAg
ICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gc3R5bGUtPnN2Z1N0eWxlKCk7CiAg
ICAgcmV0dXJuIGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoc3ZnU3R5bGUuc3RvcENvbG9yKCkucmdi
KCksIHN2Z1N0eWxlLnN0b3BPcGFjaXR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0b3BFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQu
aAppbmRleCBhODM3NDk4YTIzZjBmYzUxMmJlYTk3NDJhZTNhOGM0NDVlYzA3MDk5Li44YzQ5OWMw
ZDZiYmYzZmIxNDEyYjg2NDI1OWMzMDM0NGRiZDM2MjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3Rv
cEVsZW1lbnQuaApAQCAtMzAsNyArMzAsNyBAQCBjbGFzcyBTVkdTdG9wRWxlbWVudCBmaW5hbCA6
IHB1YmxpYyBTVkdFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNWR1N0b3BFbGVt
ZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBDb2xv
ciBzdG9wQ29sb3JJbmNsdWRpbmdPcGFjaXR5KCkgY29uc3Q7CisgICAgT3B0aW9uYWxSR0JBIHN0
b3BDb2xvckluY2x1ZGluZ09wYWNpdHkoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBTVkdTdG9w
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAppbmRleCA1YTIyMGIxMmVjZDRjNDZmN2ExMDc1NWJhZGM2N2QyNThi
M2E0NGFiLi5mMzA5NDRkZmQwYzY5ODA5YmVkMzRlZjRiMmE2NDA4YmExNDA2YjkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC04NDMsNyArODQzLDcgQEAgdm9pZCBJbnRl
cm5hbHM6OnNlbGVjdENvbG9ySW5Db2xvckNob29zZXIoRWxlbWVudCogZWxlbWVudCwgY29uc3Qg
U3RyaW5nJiBjb2xvclYKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBlbGVt
ZW50LT50b0lucHV0RWxlbWVudCgpOwogICAgIGlmICghaW5wdXRFbGVtZW50KQogICAgICAgICBy
ZXR1cm47Ci0gICAgaW5wdXRFbGVtZW50LT5zZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKENvbG9y
KGNvbG9yVmFsdWUpKTsKKyAgICBpbnB1dEVsZW1lbnQtPnNlbGVjdENvbG9ySW5Db2xvckNob29z
ZXIoT3B0aW9uYWxSR0JBKGNvbG9yVmFsdWUpKTsKIH0KICNlbmRpZgogCkBAIC0xMDUyLDcgKzEw
NTIsNyBAQCB2b2lkIEludGVybmFsczo6c2V0Vmlld0Jhc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3Qg
U3RyaW5nJiBjb2xvclZhbHVlLCBFeGNlcHRpb25DbwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgZG9jdW1lbnQtPnZpZXcoKS0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihDb2xvcihjb2xv
clZhbHVlKSk7CisgICAgZG9jdW1lbnQtPnZpZXcoKS0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihP
cHRpb25hbFJHQkEoY29sb3JWYWx1ZSkpOwogfQogCiB2b2lkIEludGVybmFsczo6c2V0UGFnaW5h
dGlvbihjb25zdCBTdHJpbmcmIG1vZGUsIGludCBnYXAsIGludCBwYWdlTGVuZ3RoLCBFeGNlcHRp
b25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VP
dmVybGF5Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVybGF5
Q2xpZW50LmNwcAppbmRleCA2MWYxOWJmMTY1MDFhOWRmZjE2ZDdiOWU4OTgyMDQ4NGUyMTExNWQ4
Li40NGVmNzUzNTRkY2EyNDVmMzQyZmJiMjJhNjc4NzI0OWIyYTMzNWNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwCkBAIC04NywxMCAr
ODcsMTAgQEAgdm9pZCBNb2NrUGFnZU92ZXJsYXlDbGllbnQ6OmRyYXdSZWN0KFBhZ2VPdmVybGF5
JiBvdmVybGF5LCBHcmFwaGljc0NvbnRleHQmIGNvbnQKICAgICBGbG9hdFJlY3QgaW5zZXRSZWN0
ID0gb3ZlcmxheS5ib3VuZHMoKTsKIAogICAgIGlmIChvdmVybGF5Lm92ZXJsYXlUeXBlKCkgPT0g
UGFnZU92ZXJsYXk6Ok92ZXJsYXlUeXBlOjpEb2N1bWVudCkgewotICAgICAgICBjb250ZXh0LnNl
dFN0cm9rZUNvbG9yKENvbG9yKDAsIDI1NSwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
ICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKE9wdGlvbmFsUkdCQSgwLCAyNTUsIDApLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgaW5zZXRSZWN0LmluZmxhdGUoLTUwKTsKICAgICB9
IGVsc2UgewotICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDAsIDI1NSks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKE9w
dGlvbmFsUkdCQSgwLCAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgaW5z
ZXRSZWN0LmluZmxhdGUoLTIwKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
aW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYlZpZXcv
V2ViUERGVmlld0lPUy5tbQppbmRleCBmMWU3NDk5M2FjNzg0MjBlNTE1Njk4MDE0MTc4MDhlOGFl
ZGJhMzZjLi44N2ZiYTdmYTlhNTc4YWVmMmE0ODQwMDc5MDEwNjEyZTRiMWE2NmNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCkBAIC0xMjAsNyArMTIwLDcg
QEAgLSAodm9pZClkcmF3UGFnZTooQ0dQREZQYWdlUmVmKWFQYWdlCiAgICAgQ0dDb250ZXh0U2F2
ZUdTdGF0ZShjb250ZXh0KTsKICAgICBDR0Zsb2F0IGhlaWdodCA9IFdlYktpdExpbmtlZE9uT3JB
ZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX0ZMSVBQRURfU0hBRE9XUykgPyAyLjBmIDog
LTIuMGY7CiAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKGNvbnRleHQsIENHU2l6ZU1h
a2UoMC4wZiwgaGVpZ2h0KSwgMy4wZiwgW1tzZWxmIGNsYXNzXSBzaGFkb3dDb2xvcl0pOwotICAg
IENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKENv
bG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQikpOworICAgIENHQ29udGV4dFNldEZpbGxD
b2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKE9wdGlvbmFsUkdCQTo6d2hpdGUs
IENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKICAgICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCBw
YWdlUmVjdCk7CiAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsgICAgCiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJWaWV3L1dlYlBsYWluV2hpdGVWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9pb3MvV2ViVmlldy9XZWJQbGFpbldoaXRlVmlldy5tbQppbmRl
eCAxZTBlMDdjNGY5N2ZlZTRhYTQyMDEzYjE1MTZjYjRjOTM4ZDk5OGQyLi5mMjgzZDM1ODZiNzYy
OGI4ZDc1N2IxZjY5N2MyOTc1OTEzZDg5YjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lv
cy9XZWJWaWV3L1dlYlBsYWluV2hpdGVWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dl
YlZpZXcvV2ViUGxhaW5XaGl0ZVZpZXcubW0KQEAgLTQyLDcgKzQyLDcgQEAgQGltcGxlbWVudGF0
aW9uIFdlYlBsYWluV2hpdGVWaWV3CiAtICh2b2lkKWRyYXdSZWN0OihOU1JlY3QpcmVjdAogewog
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gV0tHZXRDdXJyZW50R3JhcGhpY3NDb250ZXh0KCk7
Ci0gICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29s
b3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7CisgICAgQ0dDb250ZXh0U2V0
RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3IoT3B0aW9uYWxSR0JBOjp3
aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQikpOwogICAgIFdLUmVjdEZpbGwoY29udGV4dCwgW3Nl
bGYgYm91bmRzXSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZDc1NWZjN2MxOTZhY2Q3OGJjNmNiY2FmNzViMmM2
YzY2ZjViNTg0Mi4uNDhlMzIxNzJlZmI2Y2NhYmNhMTI2MmY2MTVjNWVkOGY3YWIzMTEzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNvbG9y
Q2hvb3Nlcj4gY3JlYXRlQ29sb3JDaG9vc2VyKFdlYkNvcmU6OkNvbG9yQ2hvb3NlckNsaWVudCos
IGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29zZXIoV2ViQ29yZTo6
Q29sb3JDaG9vc2VyQ2xpZW50KiwgY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJikgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6S2V5Ym9hcmRVSU1vZGUga2V5Ym9h
cmRVSU1vZGUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCAxYjljZjljM2E3YTI2MjUyMzBlNDIzM2Rj
MDc5MzZlMDk5ODAxYWM4Li44YjBiYTE5NWU1N2IwNGJjMzhjZTIwMmMzMDAyNGJlNTRiMWI5ZWEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lm1tCkBAIC03MDEsNyArNzAxLDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmFubm90
YXRlZFJlZ2lvbnNDaGFuZ2VkKCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCi1zdGQ6OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0
ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCwgY29uc3QgQ29sb3ImIGlu
aXRpYWxDb2xvcikKK3N0ZDo6dW5pcXVlX3B0cjxDb2xvckNob29zZXI+IFdlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVudCogY2xpZW50LCBjb25zdCBP
cHRpb25hbFJHQkEmIGluaXRpYWxDb2xvcikKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IDxp
bnB1dCB0eXBlPSdjb2xvcic+IGZvciBXSzEgKEJ1ZyAxMTkwOTQpLgogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lm1tCmluZGV4IGMxODhiOWQ3Mzk1N2E0YTIzMDNkODcwMjE4MzEzMDZjZDYw
MTNiMjkuLmIzNTBkZWQxMjZlN2RlMDBjYTliMWIyOTdhMDBkNmJjMDdlNDRlZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0K
QEAgLTU1OSw4ICs1NTksOCBAQCBzdGF0aWMgTlNTdHJpbmcqIHVuZG9OYW1lRm9yRWRpdEFjdGlv
bihFZGl0QWN0aW9uIGVkaXRBY3Rpb24pCiAgICAgc3dpdGNoIChlZGl0QWN0aW9uKSB7CiAgICAg
ICAgIGNhc2UgRWRpdEFjdGlvblVuc3BlY2lmaWVkOiByZXR1cm4gbmlsOwogICAgICAgICBjYXNl
IEVkaXRBY3Rpb25JbnNlcnQ6IHJldHVybiBuaWw7Ci0gICAgICAgIGNhc2UgRWRpdEFjdGlvblNl
dENvbG9yOiByZXR1cm4gVUlfU1RSSU5HX0tFWV9JTlRFUk5BTCgiU2V0IENvbG9yIiwgIlNldCBD
b2xvciAoVW5kbyBhY3Rpb24gbmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFtZSIpOwotICAgICAgICBj
YXNlIEVkaXRBY3Rpb25TZXRCYWNrZ3JvdW5kQ29sb3I6IHJldHVybiBVSV9TVFJJTkdfS0VZX0lO
VEVSTkFMKCJTZXQgQmFja2dyb3VuZCBDb2xvciIsICJTZXQgQmFja2dyb3VuZCBDb2xvciAoVW5k
byBhY3Rpb24gbmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFtZSIpOworICAgICAgICBjYXNlIEVkaXRB
Y3Rpb25TZXRDb2xvcjogcmV0dXJuIFVJX1NUUklOR19LRVlfSU5URVJOQUwoIlNldCBDb2xvciIs
ICJTZXQgT3B0aW9uYWxSR0JBIChVbmRvIGFjdGlvbiBuYW1lKSIsICJVbmRvIGFjdGlvbiBuYW1l
Iik7CisgICAgICAgIGNhc2UgRWRpdEFjdGlvblNldEJhY2tncm91bmRDb2xvcjogcmV0dXJuIFVJ
X1NUUklOR19LRVlfSU5URVJOQUwoIlNldCBCYWNrZ3JvdW5kIENvbG9yIiwgIlNldCBCYWNrZ3Jv
dW5kIE9wdGlvbmFsUkdCQSAoVW5kbyBhY3Rpb24gbmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFtZSIp
OwogICAgICAgICBjYXNlIEVkaXRBY3Rpb25UdXJuT2ZmS2VybmluZzogcmV0dXJuIFVJX1NUUklO
R19LRVlfSU5URVJOQUwoIlR1cm4gT2ZmIEtlcm5pbmciLCAiVHVybiBPZmYgS2VybmluZyAoVW5k
byBhY3Rpb24gbmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFtZSIpOwogICAgICAgICBjYXNlIEVkaXRB
Y3Rpb25UaWdodGVuS2VybmluZzogcmV0dXJuIFVJX1NUUklOR19LRVlfSU5URVJOQUwoIlRpZ2h0
ZW4gS2VybmluZyIsICJUaWdodGVuIEtlcm5pbmcgKFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8g
YWN0aW9uIG5hbWUiKTsKICAgICAgICAgY2FzZSBFZGl0QWN0aW9uTG9vc2VuS2VybmluZzogcmV0
dXJuIFVJX1NUUklOR19LRVlfSU5URVJOQUwoIkxvb3NlbiBLZXJuaW5nIiwgIkxvb3NlbiBLZXJu
aW5nIChVbmRvIGFjdGlvbiBuYW1lKSIsICJVbmRvIGFjdGlvbiBuYW1lIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCmluZGV4IDhlNDhkOGY2ZmEwZDcwN2I3Zjc0OGMyNjIxZThkNWFmODczNzYxMjMuLmZiMWUx
MzUxYmI5ZjU4ZWY4MmJhZmU1NTkwN2JlZTdmZjI0ODEyNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBA
IC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGxvbmcgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBTdHJpbmcgdW5pcXVlTmFt
ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29sb3IgY29sb3IoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpPcHRp
b25hbFJHQkEgY29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBXZWJDb3JlOjpVUkwgdXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBsb25nIGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IDkxNTUzZmI4Y2ZhMTlmMTgyMGEyYWJlMWVmNjA5
MzRmNzNiOTAxMWEuLjQ1MTFlODU2OGU4YTM1MGZmMWZkZmE0MWJjNTU3NWYzNDE0YzRlYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTE3OCw3ICsxNzgsNyBAQCBTdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjp1bmlxdWVOYW1lKCkKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp1
bmlxdWVOYW1lKCk7CiB9CiAKLUNvbG9yIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29sb3IoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK09wdGlvbmFsUkdCQSBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7CiAgICAgcmV0dXJu
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY29sb3IoKTsgICAgCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA0OWM0ZjFlMzRmNGI3YzQwYTAyMDkw
MWIzYWJmZmIzNGY2ZDE3Njc2Li4wNGFlMWMxYTc1YjA1YjRhMWZjMzI2NjUyYzNlYWZlYzk0YTEy
YTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTQ0NSw5ICs0NDUs
OSBAQCAtICh2b2lkKV91cGRhdGVCYWNrZ3JvdW5kQW5kVXBkYXRlc1doaWxlT2Zmc2NyZWVuCiAg
ICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpKSB7CiAgICAgICAgICAg
ICB2aWV3LT5zZXRUcmFuc3BhcmVudCghZHJhd3NCYWNrZ3JvdW5kKTsKICNpZiAhUExBVEZPUk0o
SU9TKQotICAgICAgICAgICAgQ29sb3IgY29sb3IgPSBjb2xvckZyb21OU0NvbG9yKFtiYWNrZ3Jv
dW5kQ29sb3IgY29sb3JVc2luZ0NvbG9yU3BhY2VOYW1lOk5TRGV2aWNlUkdCQ29sb3JTcGFjZV0p
OworICAgICAgICAgICAgT3B0aW9uYWxSR0JBIGNvbG9yID0gY29sb3JGcm9tTlNDb2xvcihbYmFj
a2dyb3VuZENvbG9yIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTpOU0RldmljZVJHQkNvbG9yU3Bh
Y2VdKTsKICNlbHNlCi0gICAgICAgICAgICBDb2xvciBjb2xvciA9IENvbG9yKGJhY2tncm91bmRD
b2xvcik7CisgICAgICAgICAgICBPcHRpb25hbFJHQkEgY29sb3IgPSBPcHRpb25hbFJHQkEoYmFj
a2dyb3VuZENvbG9yKTsKICNlbmRpZgogICAgICAgICAgICAgdmlldy0+c2V0QmFzZUJhY2tncm91
bmRDb2xvcihjb2xvcik7CiAgICAgICAgICAgICB2aWV3LT5zZXRTaG91bGRVcGRhdGVXaGlsZU9m
ZnNjcmVlbihbd2ViVmlldyBzaG91bGRVcGRhdGVXaGlsZU9mZnNjcmVlbl0pOwpAQCAtMTAyMCw3
ICsxMDIwLDcgQEAgLSAoQ0dDb2xvclJlZilfYm9keUJhY2tncm91bmRDb2xvcgogICAgIFJlbmRl
ck9iamVjdCogYm9keVJlbmRlcmVyID0gYm9keS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIWJvZHlS
ZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBDb2xvciBjb2xvciA9IGJvZHlSZW5k
ZXJlci0+c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IpOworICAgIE9wdGlvbmFsUkdCQSBjb2xvciA9IGJvZHlSZW5kZXJlci0+c3R5bGUoKS52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogICAgIGlm
ICghY29sb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbmlsOwogI2lmICFQTEFURk9STShJ
T1MpCkBAIC0xNDA4LDcgKzE0MDgsNyBAQCAtIChOU1JlY3QpcmVjdEZvclNjcm9sbFRvVmlzaWJs
ZQogCiAtICh2b2lkKXNldENhcmV0Q29sb3I6KENHQ29sb3JSZWYpY29sb3IKIHsKLSAgICBDb2xv
ciBxQ29sb3IgPSBjb2xvciA/IENvbG9yKGNvbG9yKSA6IENvbG9yOjpibGFjazsKKyAgICBPcHRp
b25hbFJHQkEgcUNvbG9yID0gY29sb3IgPyBPcHRpb25hbFJHQkEoY29sb3IpIDogT3B0aW9uYWxS
R0JBOjpibGFjazsKICAgICBXZWJDb3JlOjpGcmFtZSAqZnJhbWUgPSBjb3JlKHNlbGYpOwogICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRDYXJldENvbG9yKHFDb2xvcik7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCmluZGV4IDFjN2ZhNGE0ODliMzkxYWMwZDdj
YzhmZWYyMWNiMGM3OTFmMzdjMTMuLmZhN2Y4MGIyODc0MGVjNmJhYWFmNTU2MDdjYzhkODMxMWE3
YjY0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCkBAIC01
MjYsNyArNTI2LDcgQEAgLSAodm9pZClkcmF3UmVjdDooTlNSZWN0KXJlY3QKICAgICAgICAgICAg
IE5TUmVjdEZpbGwocmVjdCk7CiAjZWxzZQogICAgICAgICAgICAgQ0dDb250ZXh0UmVmIGNnQ29u
dGV4dCA9IFdLR2V0Q3VycmVudEdyYXBoaWNzQ29udGV4dCgpOwotICAgICAgICAgICAgQ0dDb250
ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNnQ29udGV4dCwgY2FjaGVkQ0dDb2xvcihDb2xvcjo6
d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKKyAgICAgICAgICAgIENHQ29udGV4dFNldEZp
bGxDb2xvcldpdGhDb2xvcihjZ0NvbnRleHQsIGNhY2hlZENHQ29sb3IoT3B0aW9uYWxSR0JBOjp3
aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQikpOwogICAgICAgICAgICAgV0tSZWN0RmlsbChjZ0Nv
bnRleHQsIHJlY3QpOwogI2VuZGlmCiAgICAgICAgIH0KQEAgLTUzOCw3ICs1MzgsNyBAQCAtICh2
b2lkKWRyYXdSZWN0OihOU1JlY3QpcmVjdAogICAgICAgICAgICAgTlNSZWN0RmlsbChyZWN0KTsK
ICNlbHNlCiAgICAgICAgICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gV0tHZXRDdXJyZW50
R3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRo
Q29sb3IoY2dDb250ZXh0LCBjYWNoZWRDR0NvbG9yKENvbG9yOjpjeWFuLCBDb2xvclNwYWNlRGV2
aWNlUkdCKSk7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY2dD
b250ZXh0LCBjYWNoZWRDR0NvbG9yKE9wdGlvbmFsUkdCQTo6Y3lhbiwgQ29sb3JTcGFjZURldmlj
ZVJHQikpOwogICAgICAgICAgICAgV0tSZWN0RmlsbChjZ0NvbnRleHQsIHJlY3QpOwogI2VuZGlm
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4
IDM2MzUyMThlOTliNTdhNzE4ODcwNjQzNjVlMjJjOWMxNDdjOTY3YWQuLjAxNjI1ZjI3NjIzNTYw
N2FjMTg0YzQ0ZDExYmFiNzhiYWM5ZTVlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQpAQCAtNjI2NCw3ICs2MjY0LDcgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVu
ZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVu
ZGUKICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRycyA9IFtzdHJpbmcgYXR0cmlidXRlc0F0SW5k
ZXg6aSBsb25nZXN0RWZmZWN0aXZlUmFuZ2U6JnJhbmdlIGluUmFuZ2U6TlNNYWtlUmFuZ2UoaSwg
bGVuZ3RoIC0gaSldOwogCiAgICAgICAgIGlmIChOU051bWJlciAqc3R5bGUgPSBbYXR0cnMgb2Jq
ZWN0Rm9yS2V5Ok5TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXSkgewotICAgICAgICAgICAg
Q29sb3IgY29sb3IgPSBDb2xvcjo6YmxhY2s7CisgICAgICAgICAgICBPcHRpb25hbFJHQkEgY29s
b3IgPSBPcHRpb25hbFJHQkE6OmJsYWNrOwogICAgICAgICAgICAgaWYgKE5TQ29sb3IgKmNvbG9y
QXR0ciA9IFthdHRycyBvYmplY3RGb3JLZXk6TlNVbmRlcmxpbmVDb2xvckF0dHJpYnV0ZU5hbWVd
KQogICAgICAgICAgICAgICAgIGNvbG9yID0gY29sb3JGcm9tTlNDb2xvcihjb2xvckF0dHIpOwog
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChDb21wb3NpdGlvblVuZGVybGluZShyYW5nZS5sb2Nh
dGlvbiwgTlNNYXhSYW5nZShyYW5nZSksIGNvbG9yLCBbc3R5bGUgaW50VmFsdWVdID4gMSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJJbmRpY2F0ZUxheWVyLm1t
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJJbmRpY2F0ZUxheWVyLm1tCmluZGV4IDVl
ZDg0YmM3MzgyZThmNzIwNGJjM2UxOGUyOWUxNWJkYzg3ZjQwMDYuLjZlMDdhYjI1MGY5OWY0NTll
ZDM1MzEyMTBiZTVlMzRmN2QyYjMyODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSW5kaWNhdGVMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkluZGljYXRlTGF5ZXIubW0KQEAgLTQ5LDcgKzQ5LDcgQEAgLSAoaWQpaW5pdFdpdGhXZWJW
aWV3OihXZWJWaWV3ICopd2ViVmlldwogICAgIHNlbGYuY29udGVudHNTY2FsZSA9IFtbX3dlYlZp
ZXcgd2luZG93XSBzY3JlZW5TY2FsZV07CiAKICAgICAvLyBCbHVlIGhpZ2hsaWdodCBjb2xvci4K
LSAgICBzdGF0aWMgQ29sb3IgaGlnaGxpZ2h0Q29sb3IoMTExLjBmIC8gMjU1LjBmLCAxNjguMGYg
LyAyNTUuMGYsIDIyMC4wZiAvIDI1NS4wZiwgMC42NmYpOworICAgIHN0YXRpYyBPcHRpb25hbFJH
QkEgaGlnaGxpZ2h0Q29sb3IoMTExLjBmIC8gMjU1LjBmLCAxNjguMGYgLyAyNTUuMGYsIDIyMC4w
ZiAvIDI1NS4wZiwgMC42NmYpOwogICAgIHNlbGYuYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dD
b2xvcihoaWdobGlnaHRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICByZXR1cm4g
c2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA2NDE5ZGRjMDA4MzYw
ZWFiMTE1ZGFlYmE0MjVlMzI2YTljMTM4YzdkLi5hZWZjMzA4OTU5ZDM1MzU0NjVlMzYwOWNkNDIx
YzM2M2E5M2VmZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC04ODks
NyArODg5LDcgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOihO
U1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QKICNpZiAhUExBVEZPUk0oSU9TKQog
ICAgIF9wcml2YXRlLT5iYWNrZ3JvdW5kQ29sb3IgPSBbW05TQ29sb3IgY29sb3JXaXRoRGV2aWNl
V2hpdGU6MSBhbHBoYToxXSByZXRhaW5dOwogI2Vsc2UKLSAgICBfcHJpdmF0ZS0+YmFja2dyb3Vu
ZENvbG9yID0gQ0dDb2xvclJldGFpbihjYWNoZWRDR0NvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JT
cGFjZURldmljZVJHQikpOworICAgIF9wcml2YXRlLT5iYWNrZ3JvdW5kQ29sb3IgPSBDR0NvbG9y
UmV0YWluKGNhY2hlZENHQ29sb3IoT3B0aW9uYWxSR0JBOjp3aGl0ZSwgQ29sb3JTcGFjZURldmlj
ZVJHQikpOwogI2VuZGlmCiAgICAgX3ByaXZhdGUtPmluY2x1ZGVzRmxhdHRlbmVkQ29tcG9zaXRp
bmdMYXllcnNXaGVuRHJhd2luZ1RvQml0bWFwID0gWUVTOwogCkBAIC0xMTg4LDcgKzExODgsNyBA
QCAtIChpZClpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOihOU1N0cmluZyAqKXN0eWxl
IGZyYW1lOihDR1JlY3QpZnJhbWUgcHJlZgogICAgIF9wcml2YXRlLT5wcmVmZXJlbmNlcyA9IFtw
cmVmZXJlbmNlcyByZXRhaW5dOwogICAgIF9wcml2YXRlLT5tYWluRnJhbWVEb2N1bWVudFJlYWR5
ID0gTk87CiAgICAgX3ByaXZhdGUtPmRyYXdzQmFja2dyb3VuZCA9IFlFUzsKLSAgICBfcHJpdmF0
ZS0+YmFja2dyb3VuZENvbG9yID0gQ0dDb2xvclJldGFpbihjYWNoZWRDR0NvbG9yKENvbG9yOjp3
aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQikpOworICAgIF9wcml2YXRlLT5iYWNrZ3JvdW5kQ29s
b3IgPSBDR0NvbG9yUmV0YWluKGNhY2hlZENHQ29sb3IoT3B0aW9uYWxSR0JBOjp3aGl0ZSwgQ29s
b3JTcGFjZURldmljZVJHQikpOwogCiAgICAgV2ViRnJhbWVWaWV3ICpmcmFtZVZpZXcgPSBuaWw7
CiAgICAgZnJhbWVWaWV3ID0gW1tXZWJGcmFtZVZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6IENH
UmVjdE1ha2UoMCwwLGZyYW1lLnNpemUud2lkdGgsZnJhbWUuc2l6ZS5oZWlnaHQpXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAppbmRleCA3OTZjMGY0MmE3Njk5
ZjE4NmYwZTRjMDM3ZDExNDY3YzQ2YjEwMjk0Li40ZWE1MDA2NWI3NDBlNTJjMjQyNDI2ZDA5ZDY5
M2YwMGIxMjNhNDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0
ZS5oCkBAIC0zNDMsNyArMzQzLDcgQEAgdHlwZWRlZiBlbnVtIHsKICNpZiAhVEFSR0VUX09TX0lQ
SE9ORQogLyohCiAgICAgQG1ldGhvZCBzZXRCYWNrZ3JvdW5kQ29sb3I6Ci0gICAgQHBhcmFtIGJh
Y2tncm91bmRDb2xvciBDb2xvciB0byB1c2UgYXMgdGhlIGRlZmF1bHQgYmFja2dyb3VuZC4KKyAg
ICBAcGFyYW0gYmFja2dyb3VuZENvbG9yIE9wdGlvbmFsUkdCQSB0byB1c2UgYXMgdGhlIGRlZmF1
bHQgYmFja2dyb3VuZC4KICAgICBAYWJzdHJhY3QgU2V0cyB3aGF0IGNvbG9yIHRoZSByZWNlaXZl
ciBkcmF3cyB1bmRlciB0cmFuc3BhcmVudCBwYWdlIGJhY2tncm91bmQgY29sb3JzIGFuZCBpbWFn
ZXMuCiAgICAgVGhpcyBjb2xvciBpcyBhbHNvIHVzZWQgd2hlbiBubyBwYWdlIGlzIGxvYWRlZC4g
QSBjb2xvciB3aXRoIGFscGhhIHNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgcmVjZWl2ZXIg
aXMKICAgICBpbiBhIG5vbi1vcGFxdWUgd2luZG93LCBzaW5jZSB0aGUgY29sb3IgaXMgZHJhd24g
dXNpbmcgTlNDb21wb3NpdGVDb3B5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyLmNwcAppbmRleCA3ZDJmYzk0NmQ3OTYxN2U1ZmY0MjhjNzQwOWJhNDVj
MGJhNDNkNjA4Li5mNWIwZTA1ODg4MzQ1ZmRlYTQ0ZDcxZmEwYjMxOWE2MGMxOGUwZWI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAt
MTMzLDExICsxMzMsMTEgQEAgdm9pZCBIVURTbGlkZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KQogewogICAgIC8vIERyYXcgZ3V0dGVyCiAgICAgSW50U2l6ZSByYWRpdXMobV9yZWN0
LmhlaWdodCgpIC8gMiwgbV9yZWN0LmhlaWdodCgpIC8gMik7Ci0gICAgY29udGV4dC5maWxsUm91
bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChtX3JlY3QsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMs
IHJhZGl1cyksIENvbG9yKHNsaWRlckd1dHRlckNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7
CisgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChtX3JlY3QsIHJh
ZGl1cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cyksIE9wdGlvbmFsUkdCQShzbGlkZXJHdXR0ZXJD
b2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgLy8gRHJhdyBidXR0b24KLSAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yKHNsaWRlckJ1dHRvbkNvbG9yKSwgQ29sb3JTcGFj
ZURldmljZVJHQik7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3Ioc2xpZGVyQnV0dG9u
Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9y
KE9wdGlvbmFsUkdCQShzbGlkZXJCdXR0b25Db2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKE9wdGlvbmFsUkdCQShzbGlkZXJCdXR0b25Db2xvciks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgaWYgKG1fYnV0dG9uU2hhcGUgPT0gUm91bmRC
dXR0b24pIHsKICAgICAgICAgY29udGV4dC5kcmF3RWxsaXBzZShJbnRSZWN0KG1fcmVjdC5sb2Nh
dGlvbigpLngoKSArIG1fYnV0dG9uUG9zaXRpb24sIG1fcmVjdC5sb2NhdGlvbigpLnkoKSAtICht
X2J1dHRvblNpemUgLSBtX3JlY3QuaGVpZ2h0KCkpIC8gMiwgbV9idXR0b25TaXplLCBtX2J1dHRv
blNpemUpKTsKQEAgLTQ4OSw5ICs0ODksOSBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI6OmRyYXcoKQogICAgIEludFNpemUgaW5uZXJSYWRpdXMoYm9yZGVyUmFkaXVzIC0gYm9yZGVy
VGhpY2tuZXNzLCBib3JkZXJSYWRpdXMgLSBib3JkZXJUaGlja25lc3MpOwogICAgIEludFJlY3Qg
aW5uZXJSZWN0KGJvcmRlclRoaWNrbmVzcywgYm9yZGVyVGhpY2tuZXNzLCB3aW5kb3dXaWR0aCAt
IGJvcmRlclRoaWNrbmVzcyAqIDIsIHdpbmRvd0hlaWdodCAtIGJvcmRlclRoaWNrbmVzcyAqIDIp
OwogCi0gICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChvdXRlclJl
Y3QsIG91dGVyUmFkaXVzLCBvdXRlclJhZGl1cywgb3V0ZXJSYWRpdXMsIG91dGVyUmFkaXVzKSwg
Q29sb3IoYm9yZGVyQ29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LmZp
bGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KG91dGVyUmVjdCwgb3V0ZXJSYWRpdXMsIG91
dGVyUmFkaXVzLCBvdXRlclJhZGl1cywgb3V0ZXJSYWRpdXMpLCBPcHRpb25hbFJHQkEoYm9yZGVy
Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9w
ZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKLSAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9h
dFJvdW5kZWRSZWN0KGlubmVyUmVjdCwgaW5uZXJSYWRpdXMsIGlubmVyUmFkaXVzLCBpbm5lclJh
ZGl1cywgaW5uZXJSYWRpdXMpLCBDb2xvcihiYWNrZ3JvdW5kQ29sb3IpLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGlu
bmVyUmVjdCwgaW5uZXJSYWRpdXMsIGlubmVyUmFkaXVzLCBpbm5lclJhZGl1cywgaW5uZXJSYWRp
dXMpLCBPcHRpb25hbFJHQkEoYmFja2dyb3VuZENvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7
CiAKICAgICAvLyBEcmF3IHRoZSB3aWRnZXRzCiAgICAgbV9wbGF5UGF1c2VCdXR0b24uZHJhdyhj
b250ZXh0KTsKQEAgLTUyNSwxMyArNTI1LDEzIEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcjo6ZHJhdygpCiAgICAgcyA9IHRpbWVUb1N0cmluZyhjdXJyZW50VGltZSgpKTsKICAgICBp
bnQgZm9udEhlaWdodCA9IGZvbnQuZm9udE1ldHJpY3MoKS5oZWlnaHQoKTsKICAgICBUZXh0UnVu
IGxlZnRUZXh0KHMpOwotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yKHRleHRDb2xvciks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKE9wdGlvbmFs
UkdCQSh0ZXh0Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBjb250ZXh0LmRyYXdU
ZXh0KGZvbnQsIGxlZnRUZXh0LCBJbnRQb2ludCh3aW5kb3dXaWR0aCAvIDIgLSB0aW1lU2xpZGVy
V2lkdGggLyAyIC0gbWFyZ2luIC0gZm9udC53aWR0aChsZWZ0VGV4dCksIHdpbmRvd0hlaWdodCAt
IG1hcmdpbiAtIHNsaWRlckhlaWdodCAvIDIgKyBmb250SGVpZ2h0IC8gNCkpOwogCiAgICAgLy8g
UmlnaHQgc3RyaW5nCiAgICAgcyA9IHRpbWVUb1N0cmluZyhjdXJyZW50VGltZSgpIC0gZHVyYXRp
b24oKSk7CiAgICAgVGV4dFJ1biByaWdodFRleHQocyk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29s
b3IoQ29sb3IodGV4dENvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5z
ZXRGaWxsQ29sb3IoT3B0aW9uYWxSR0JBKHRleHRDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwogICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgcmlnaHRUZXh0LCBJbnRQb2ludCh3aW5kb3dX
aWR0aCAvIDIgKyB0aW1lU2xpZGVyV2lkdGggLyAyICsgbWFyZ2luLCB3aW5kb3dIZWlnaHQgLSBt
YXJnaW4gLSBzbGlkZXJIZWlnaHQgLyAyICsgZm9udEhlaWdodCAvIDQpKTsKIAogICAgIC8vIENv
cHkgdG8gdGhlIHdpbmRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGE4MjUzZDM0ZDFhYWY0NzU2
YTI0ZWJjZjcwMzA3YTUxMmY5ZTc2NmYuLjVkZWIyYzVhOGU3NTZhMjgzZGFiNjY4YmYxZDEwZDk5
NWJlM2NlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTEwMjAsNyArMTAyMCw3IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQog
ICAgIFJFQ1QgcGl4ZWxSZWN0OwogICAgIHZpZXctPmZyYW1lUmVjdCgmcGl4ZWxSZWN0KTsKICAg
ICBib29sIHRyYW5zcGFyZW50ID0gdmlldy0+dHJhbnNwYXJlbnQoKTsKLSAgICBDb2xvciBiYWNr
Z3JvdW5kQ29sb3IgPSB0cmFuc3BhcmVudCA/IENvbG9yOjp0cmFuc3BhcmVudCA6IENvbG9yOjp3
aGl0ZTsKKyAgICBPcHRpb25hbFJHQkEgYmFja2dyb3VuZENvbG9yID0gdHJhbnNwYXJlbnQgPyBP
cHRpb25hbFJHQkE6OnRyYW5zcGFyZW50IDogT3B0aW9uYWxSR0JBOjp3aGl0ZTsKICAgICBJbnRS
ZWN0IGxvZ2ljYWxGcmFtZShwaXhlbFJlY3QpOwogICAgIGxvZ2ljYWxGcmFtZS5zY2FsZSgxLjBm
IC8gdmlldy0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgY29yZShtX3dlYkZyYW1lKS0+Y3Jl
YXRlVmlldyhsb2dpY2FsRnJhbWUuc2l6ZSgpLCBiYWNrZ3JvdW5kQ29sb3IsIHRyYW5zcGFyZW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkZyYW1lLmNwcAppbmRleCA5MDNjY2I2OWU2MmVjNzUzOTgzNzc4NTI2ZGYy
YWViZTI3ZDAzNDgwLi5iYmJlZjE3ZmFlNzU4ZGRiMTg1NzFlY2Q4NzcxZDlmNzIwNjkzOWIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViRnJhbWUuY3BwCkBAIC0yMDkyLDcgKzIwOTIsNyBAQCBDT01QdHI8SUFjY2Vz
c2libGU+IFdlYkZyYW1lOjphY2Nlc3NpYmxlKCkgY29uc3QKIAogdm9pZCBXZWJGcmFtZTo6dXBk
YXRlQmFja2dyb3VuZCgpCiB7Ci0gICAgQ29sb3IgYmFja2dyb3VuZENvbG9yID0gd2ViVmlldygp
LT50cmFuc3BhcmVudCgpID8gQ29sb3I6OnRyYW5zcGFyZW50IDogQ29sb3I6OndoaXRlOworICAg
IE9wdGlvbmFsUkdCQSBiYWNrZ3JvdW5kQ29sb3IgPSB3ZWJWaWV3KCktPnRyYW5zcGFyZW50KCkg
PyBPcHRpb25hbFJHQkE6OnRyYW5zcGFyZW50IDogT3B0aW9uYWxSR0JBOjp3aGl0ZTsKICAgICBG
cmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlzKTsKIAogICAgIGlmICghY29yZUZyYW1lIHx8ICFj
b3JlRnJhbWUtPnZpZXcoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggOGQyZjVkZDQwMjVhNjA2
YTJjNzZlNzQ0ODc3YWUzYTg4YzAwMTg3YS4uODAxYjU3NGI0YzgwZWQyYjVkYjdmM2NkNDExM2U0
MDMxMjBmNzI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTEyOTQsNyArMTI5NCw3IEBAIHZv
aWQgV2ViVmlldzo6cGFpbnRJbnRvQmFja2luZ1N0b3JlKEZyYW1lVmlldyogZnJhbWVWaWV3LCBI
REMgYml0bWFwREMsIGNvbnN0IEluCiAgICAgICAgIGZyYW1lVmlldy0+cGFpbnQoJmdjLCBsb2dp
Y2FsRGlydHlSZWN0KTsKICAgICAgICAgZ2MucmVzdG9yZSgpOwogICAgICAgICBpZiAobV9zaG91
bGRJbnZlcnRDb2xvcnMpCi0gICAgICAgICAgICBnYy5maWxsUmVjdChsb2dpY2FsRGlydHlSZWN0
LCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZURpZmZlcmVuY2Up
OworICAgICAgICAgICAgZ2MuZmlsbFJlY3QobG9naWNhbERpcnR5UmVjdCwgT3B0aW9uYWxSR0JB
Ojp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlRGlmZmVyZW5jZSk7CiAgICAg
fQogICAgIGdjLnJlc3RvcmUoKTsKIH0KQEAgLTU4NDUsNyArNTg0NSw3IEBAIHN0YXRpYyB2b2lk
IGNvbXBvc2l0aW9uVG9VbmRlcmxpbmVzKGNvbnN0IFZlY3RvcjxEV09SRD4mIGNsYXVzZXMsIGNv
bnN0IFZlY3RvcjxCCiAgICAgICAgIHVuZGVybGluZXNbaV0uZW5kT2Zmc2V0ID0gY2xhdXNlc1tp
ICsgMV07CiAgICAgICAgIEJZVEUgYXR0cmlidXRlID0gYXR0cmlidXRlc1tjbGF1c2VzW2ldXTsK
ICAgICAgICAgdW5kZXJsaW5lc1tpXS50aGljayA9IGF0dHJpYnV0ZSA9PSBBVFRSX1RBUkdFVF9D
T05WRVJURUQgfHwgYXR0cmlidXRlID09IEFUVFJfVEFSR0VUX05PVENPTlZFUlRFRDsKLSAgICAg
ICAgdW5kZXJsaW5lc1tpXS5jb2xvciA9IENvbG9yKDAsMCwwKTsKKyAgICAgICAgdW5kZXJsaW5l
c1tpXS5jb2xvciA9IE9wdGlvbmFsUkdCQSgwLDAsMCk7CiAgICAgfQogfQogCkBAIC03MjMxLDcg
KzcyMzEsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnNldENvbXBvc2l0
aW9uRm9yVGVzdGluZygKICAgICBTdHJpbmcgY29tcG9zaXRpb25TdHIgPSB0b1N0cmluZyhjb21w
b3NpdGlvbik7CiAKICAgICBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXM7
Ci0gICAgdW5kZXJsaW5lcy5hcHBlbmQoQ29tcG9zaXRpb25VbmRlcmxpbmUoMCwgY29tcG9zaXRp
b25TdHIubGVuZ3RoKCksIENvbG9yKENvbG9yOjpibGFjayksIGZhbHNlKSk7CisgICAgdW5kZXJs
aW5lcy5hcHBlbmQoQ29tcG9zaXRpb25VbmRlcmxpbmUoMCwgY29tcG9zaXRpb25TdHIubGVuZ3Ro
KCksIE9wdGlvbmFsUkdCQShPcHRpb25hbFJHQkE6OmJsYWNrKSwgZmFsc2UpKTsKICAgICBmcmFt
ZS5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0ciwgdW5kZXJsaW5lcywgZnJv
bSwgZnJvbSArIGxlbmd0aCk7CiAKICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCA1MWRiMDhjZTM2MGJmOGFjZmI2MGEzZWJjODAw
OGUwZjJhOTQwMGZkLi5lN2I4MjUyZjZmZDRlOWEyYWU0NzA3ODc2YjE1ZjUyMGU2NGYyMTc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCkBAIC0xNTUsMTQgKzE1
NSwxNCBAQCB2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBl
cihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLAogICAgIHBhaW50VGlsZXNUb1RleHR1cmVN
YXBwZXIodGlsZXNUb1BhaW50LCB0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3Bh
Y2l0eSwgcmVjdCgpKTsKIH0KIAotdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6ZHJhd0Jv
cmRlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBDb2xvciYgYm9yZGVyQ29s
b3IsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCit2b2lkIENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlOjpkcmF3Qm9yZGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IE9w
dGlvbmFsUkdCQSYgYm9yZGVyQ29sb3IsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCiB7
CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm0g
KiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7CiAgICAgZm9yIChhdXRvJiB0
aWxlIDogbV90aWxlcy52YWx1ZXMoKSkKICAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRl
cihib3JkZXJDb2xvciwgYm9yZGVyV2lkdGgsIHRpbGUucmVjdCgpLCBhZGp1c3RlZFRyYW5zZm9y
bSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmRyYXdSZXBhaW50Q291bnRl
cihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBD
b2xvciYgYm9yZGVyQ29sb3IsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKK3ZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmU6OmRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBpbnQg
cmVwYWludENvdW50LCBjb25zdCBPcHRpb25hbFJHQkEmIGJvcmRlckNvbG9yLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0p
CiB7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zv
cm0gKiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7CiAgICAgZm9yIChhdXRv
JiB0aWxlIDogbV90aWxlcy52YWx1ZXMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdT
dG9yZS5oCmluZGV4IDVkYWZhMDExMjg3ZTlhY2E0Mjc0NDJiM2VkNjdjN2FkOTNjNWRjMjAuLjQ0
MzhjOTJhMDI5YTQ3YjU2M2RlYzkyYzdhZGIwMzczMWU5NjU4ZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmUuaApAQCAtNjYsOCArNjYsOCBAQCBwdWJsaWM6CiAgICAgUmVm
UHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdDsKICAgICB2b2lkIHNl
dFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50
VG9UZXh0dXJlTWFwcGVyKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIqLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KTsK
LSAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKiwgY29u
c3QgV2ViQ29yZTo6Q29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ciosIGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlciosIGludCByZXBhaW50Q291bnQsIGNvbnN0IFdlYkNvcmU6Ok9wdGlv
bmFsUkdCQSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NB
cmd1bWVudENvZGVycy5jcHAKaW5kZXggMmJlOWM4N2RhYWRmNzQ3ODEzMWFkOTgxNDNhYTk2ZDMz
YmY2MjUzYS4uNjM5NDcwNWFlM2ZmMmY4MjM5OTZmNmI5MDg2YmY5MjVhYzg1M2YyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3Bw
CkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0ZXJPcGVy
YXRpb25zPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwKICAgICAgICAgICAgIGNv
bnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24mIHNoYWRvdyA9IGRvd25jYXN0PERyb3BTaGFk
b3dGaWx0ZXJPcGVyYXRpb24+KGZpbHRlcik7CiAgICAgICAgICAgICBBcmd1bWVudENvZGVyPElu
dFBvaW50Pjo6ZW5jb2RlKGVuY29kZXIsIHNoYWRvdy5sb2NhdGlvbigpKTsKICAgICAgICAgICAg
IGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2hhZG93LnN0ZERldmlhdGlvbigpKTsK
LSAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8Q29sb3I+OjplbmNvZGUoZW5jb2Rlciwgc2hhZG93
LmNvbG9yKCkpOworICAgICAgICAgICAgQXJndW1lbnRDb2RlcjxPcHRpb25hbFJHQkE+OjplbmNv
ZGUoZW5jb2Rlciwgc2hhZG93LmNvbG9yKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRToKQEAgLTE0NCwxMiAr
MTQ0LDEyIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPjo6
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246OkRST1BfU0hBRE9XOiB7CiAgICAgICAgICAgICBJbnRQb2ludCBsb2NhdGlvbjsKICAg
ICAgICAgICAgIGludDMyX3Qgc3RkRGV2aWF0aW9uOwotICAgICAgICAgICAgQ29sb3IgY29sb3I7
CisgICAgICAgICAgICBPcHRpb25hbFJHQkEgY29sb3I7CiAgICAgICAgICAgICBpZiAoIUFyZ3Vt
ZW50Q29kZXI8SW50UG9pbnQ+OjpkZWNvZGUoZGVjb2RlciwgbG9jYXRpb24pKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3Rk
RGV2aWF0aW9uKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBp
ZiAoIUFyZ3VtZW50Q29kZXI8Q29sb3I+OjpkZWNvZGUoZGVjb2RlciwgY29sb3IpKQorICAgICAg
ICAgICAgaWYgKCFBcmd1bWVudENvZGVyPE9wdGlvbmFsUkdCQT46OmRlY29kZShkZWNvZGVyLCBj
b2xvcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgZmlsdGVy
ID0gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKGxvY2F0aW9uLCBzdGREZXZpYXRp
b24sIGNvbG9yKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggM2IzZmM3N2U0OThkMzY2Mzc3ZmI3MzZkNmI3ODBlMTg2
M2VjMWUwYy4uM2UzYWMxNjYzZWVkZjc4MWIxOTdiYTRlMDk2YmVjNTBhZmZiMzc4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCkBAIC02MCw3ICs2MCw3IEBA
IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZUNsaWVuCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBt
X2lzQWN0aXZlKGZhbHNlKQogICAgICwgbV9yb290TGF5ZXJJRChJbnZhbGlkQ29vcmRpbmF0ZWRM
YXllcklEKQotICAgICwgbV92aWV3QmFja2dyb3VuZENvbG9yKENvbG9yOjp3aGl0ZSkKKyAgICAs
IG1fdmlld0JhY2tncm91bmRDb2xvcihPcHRpb25hbFJHQkE6OndoaXRlKQogICAgICwgbV9jbGll
bnRSdW5Mb29wKFJ1bkxvb3A6OmN1cnJlbnQoKSkKIHsKIH0KQEAgLTY5LDcgKzY5LDcgQEAgQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lOjp+Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCkKIHsKIH0K
IAotdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0
IEZsb2F0UmVjdCYgY2xpcFJlY3QsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IsIGJvb2wg
ZHJhd3NCYWNrZ3JvdW5kLCBjb25zdCBGbG9hdFBvaW50JiBjb250ZW50UG9zaXRpb24sIFRleHR1
cmVNYXBwZXI6OlBhaW50RmxhZ3MgUGFpbnRGbGFncykKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lOjpwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBGbG9hdFJlY3QmIGNsaXBSZWN0LCBjb25z
dCBPcHRpb25hbFJHQkEmIGJhY2tncm91bmRDb2xvciwgYm9vbCBkcmF3c0JhY2tncm91bmQsIGNv
bnN0IEZsb2F0UG9pbnQmIGNvbnRlbnRQb3NpdGlvbiwgVGV4dHVyZU1hcHBlcjo6UGFpbnRGbGFn
cyBQYWludEZsYWdzKQogewogICAgIGlmICghbV90ZXh0dXJlTWFwcGVyKSB7CiAgICAgICAgIG1f
dGV4dHVyZU1hcHBlciA9IFRleHR1cmVNYXBwZXI6OmNyZWF0ZSgpOwpAQCAtOTIsNyArOTIsNyBA
QCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQo
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaQogICAgICAgICBSR0JBMzIgcmdiYSA9IG1ha2VSR0JB
MzJGcm9tRmxvYXRzKGJhY2tncm91bmRDb2xvci5yZWQoKSwKICAgICAgICAgICAgIGJhY2tncm91
bmRDb2xvci5ncmVlbigpLCBiYWNrZ3JvdW5kQ29sb3IuYmx1ZSgpLAogICAgICAgICAgICAgYmFj
a2dyb3VuZENvbG9yLmFscGhhKCkgKiBvcGFjaXR5KTsKLSAgICAgICAgbV90ZXh0dXJlTWFwcGVy
LT5kcmF3U29saWRDb2xvcihjbGlwUmVjdCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgQ29sb3Io
cmdiYSkpOworICAgICAgICBtX3RleHR1cmVNYXBwZXItPmRyYXdTb2xpZENvbG9yKGNsaXBSZWN0
LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBPcHRpb25hbFJHQkEocmdiYSkpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8VGV4
dHVyZU1hcHBlckdMKj4obV90ZXh0dXJlTWFwcGVyLmdldCgpKS0+Z3JhcGhpY3NDb250ZXh0M0Qo
KTsKICAgICAgICAgY29udGV4dC0+Y2xlYXJDb2xvcihtX3ZpZXdCYWNrZ3JvdW5kQ29sb3IucmVk
KCkgLyAyNTUuMGYsIG1fdmlld0JhY2tncm91bmRDb2xvci5ncmVlbigpIC8gMjU1LjBmLCBtX3Zp
ZXdCYWNrZ3JvdW5kQ29sb3IuYmx1ZSgpIC8gMjU1LjBmLCBtX3ZpZXdCYWNrZ3JvdW5kQ29sb3Iu
YWxwaGEoKSAvIDI1NS4wZik7CkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cmkKICAgICB9CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRv
R3JhcGhpY3NDb250ZXh0KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwbGF0Zm9ybUNvbnRleHQs
IGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IsIGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQordm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9HcmFwaGljc0NvbnRleHQoUGxhdGZv
cm1HcmFwaGljc0NvbnRleHQqIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgT3B0aW9uYWxSR0JBJiBi
YWNrZ3JvdW5kQ29sb3IsIGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQogewogICAgIGlmICghbV90ZXh0
dXJlTWFwcGVyKQogICAgICAgICBtX3RleHR1cmVNYXBwZXIgPSBUZXh0dXJlTWFwcGVyOjpjcmVh
dGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKaW5kZXggZjcxNzE5
Y2Q0OTQxYjJiODk1Zjc5MmM3MDhjNGJjMDI2NjY4NTBmZS4uNjlhNWI4OGJhNDliNGRkMTEwMmE1
YTJkOTk5NjQ5YmIzOTg0ZDZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmgKQEAgLTYxLDggKzYxLDggQEAgY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENvb3JkaW5hdGVkR3JhcGhpY3MKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7
Ci0gICAgdm9pZCBwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBXZWJDb3JlOjpUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBX
ZWJDb3JlOjpDb2xvciYgYmFja2dyb3VuZENvbG9yLCBib29sIGRyYXdzQmFja2dyb3VuZCwgY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6OlBhaW50Rmxh
Z3MgPSAwKTsKLSAgICB2b2lkIHBhaW50VG9HcmFwaGljc0NvbnRleHQoUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgYmFja2dyb3VuZENvbG9yLCBib29sIGRy
YXdzQmFja2dyb3VuZCk7CisgICAgdm9pZCBwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBX
ZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmIGJhY2tncm91bmRDb2xvciwgYm9v
bCBkcmF3c0JhY2tncm91bmQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzID0gMCk7CisgICAgdm9pZCBwYWludFRvR3JhcGhpY3ND
b250ZXh0KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxS
R0JBJiBiYWNrZ3JvdW5kQ29sb3IsIGJvb2wgZHJhd3NCYWNrZ3JvdW5kKTsKICAgICB2b2lkIGRl
dGFjaCgpOwogICAgIHZvaWQgYXBwZW5kVXBkYXRlKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPik7CiAK
QEAgLTc5LDggKzc5LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21taXRTY2VuZVN0YXRlKGNv
bnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYpOwogCi0gICAgdm9pZCBzZXRW
aWV3QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikgeyBtX3ZpZXdC
YWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQotICAgIFdlYkNvcmU6OkNvbG9yIHZpZXdCYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdCYWNrZ3JvdW5kQ29sb3I7IH0KKyAgICB2
b2lkIHNldFZpZXdCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJiBj
b2xvcikgeyBtX3ZpZXdCYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQorICAgIFdlYkNvcmU6Ok9w
dGlvbmFsUkdCQSB2aWV3QmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV92aWV3QmFj
a2dyb3VuZENvbG9yOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzZXRSb290TGF5ZXJJRChXZWJD
b3JlOjpDb29yZGluYXRlZExheWVySUQpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIHByaXZhdGU6CiAg
ICAgV2ViQ29yZTo6Q29vcmRpbmF0ZWRMYXllcklEIG1fcm9vdExheWVySUQ7CiAgICAgV2ViQ29y
ZTo6RmxvYXRQb2ludCBtX3Njcm9sbFBvc2l0aW9uOwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQg
bV9yZW5kZXJlZENvbnRlbnRzU2Nyb2xsUG9zaXRpb247Ci0gICAgV2ViQ29yZTo6Q29sb3IgbV92
aWV3QmFja2dyb3VuZENvbG9yOworICAgIFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSBtX3ZpZXdCYWNr
Z3JvdW5kQ29sb3I7CiAKICAgICBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyRlBTQ291bnRlciBtX2Zw
c0NvdW50ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9y
L1RocmVhZGVkQ29tcG9zaXRvci5jcHAKaW5kZXggYzNiYWU2ZGY1MWUyMmFjMDM1ZGVkOGU3N2M0
YTFlZjRlYWMxZjUxZi4uZTY0MjQxNzlkNjc4OWE2NzJhMWNlMTk3NDEyMGRiNzI1MDdhNDMyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhy
ZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVk
Q29tcG9zaXRvci5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRv
cjo6cmVuZGVyTGF5ZXJUcmVlKCkKICAgICB2aWV3cG9ydFRyYW5zZm9ybS5zY2FsZSh2aWV3cG9y
dENvbnRyb2xsZXIoKS0+cGFnZVNjYWxlRmFjdG9yKCkpOwogICAgIHZpZXdwb3J0VHJhbnNmb3Jt
LnRyYW5zbGF0ZSgtc2Nyb2xsUG9zdGlvbi54KCksIC1zY3JvbGxQb3N0aW9uLnkoKSk7CiAKLSAg
ICBtX3NjZW5lLT5wYWludFRvQ3VycmVudEdMQ29udGV4dCh2aWV3cG9ydFRyYW5zZm9ybSwgMSwg
Y2xpcFJlY3QsIENvbG9yOjp3aGl0ZSwgZmFsc2UsIHNjcm9sbFBvc3Rpb24pOworICAgIG1fc2Nl
bmUtPnBhaW50VG9DdXJyZW50R0xDb250ZXh0KHZpZXdwb3J0VHJhbnNmb3JtLCAxLCBjbGlwUmVj
dCwgT3B0aW9uYWxSR0JBOjp3aGl0ZSwgZmFsc2UsIHNjcm9sbFBvc3Rpb24pOwogCiAgICAgZ2xD
b250ZXh0KCktPnN3YXBCdWZmZXJzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDk2MDc3NGFhNmJmMjIyYzQyYTlhMWZmYWRh
NzlkOGU1NGU0ZjYwZDYuLjQ1NGEyZDlhOGQzOGM1YTRjMTVjNzU1ZmEyYzdiYjNjYzczMDFjOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CkBAIC0xMDA4LDcgKzEwMDgsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2luZG93RmVhdHVyZXM+
OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBXaW5kb3dGZWF0dQogfQogCiAKLXZv
aWQgQXJndW1lbnRDb2RlcjxDb2xvcj46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IENvbG9yJiBjb2xvcikKK3ZvaWQgQXJndW1lbnRDb2RlcjxPcHRpb25hbFJHQkE+Ojpl
bmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBPcHRpb25hbFJHQkEmIGNvbG9y
KQogewogICAgIGlmICghY29sb3IuaXNWYWxpZCgpKSB7CiAgICAgICAgIGVuY29kZXIgPDwgZmFs
c2U7CkBAIC0xMDE5LDE0ICsxMDE5LDE0IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDb2xvcj46OmVu
Y29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBl
bmNvZGVyIDw8IGNvbG9yLnJnYigpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8Q29sb3I+Ojpk
ZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBDb2xvciYgY29sb3IpCitib29sIEFyZ3Vt
ZW50Q29kZXI8T3B0aW9uYWxSR0JBPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2Rlciwg
T3B0aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICBib29sIGlzVmFsaWQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShpc1ZhbGlkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFp
c1ZhbGlkKSB7Ci0gICAgICAgIGNvbG9yID0gQ29sb3IoKTsKKyAgICAgICAgY29sb3IgPSBPcHRp
b25hbFJHQkEoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0xMDM0LDcgKzEw
MzQsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q29sb3I+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVy
JiBkZWNvZGVyLCBDb2xvciYgY29sb3IpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZ2JhKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29sb3IgPSBDb2xvcihyZ2JhKTsKKyAgICBj
b2xvciA9IE9wdGlvbmFsUkdCQShyZ2JhKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTc0
Niw3ICsxNzQ2LDcgQEAgYm9vbCBkZWNvZGVGaWx0ZXJPcGVyYXRpb24oQXJndW1lbnREZWNvZGVy
JiBkZWNvZGVyLCBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiYgZmkKICAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6RFJPUF9TSEFET1c6IHsKICAgICAgICAgSW50UG9pbnQgbG9jYXRpb247CiAgICAg
ICAgIGludCBzdGREZXZpYXRpb247Ci0gICAgICAgIENvbG9yIGNvbG9yOworICAgICAgICBPcHRp
b25hbFJHQkEgY29sb3I7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobG9jYXRpb24pKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0
ZERldmlhdGlvbikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKaW5kZXggOGU1YzEwNGViNzY4MjIwODMzYTk2MzU5MjNlNTJlMDc1OTdhZTA3Mi4uNWE5
NDU5YmViNmM1ZTc3ZjgwNWU1YzY4NTU4NjYzNzBiNjMyZGQ0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFz
cyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNz
IEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwotY2xhc3MgQ29sb3I7CitjbGFzcyBP
cHRpb25hbFJHQkE7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAgLTI4NCw5ICsyODQsOSBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzPiB7CiAgICAgc3RhdGlj
IGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJik7
CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNvbG9yPiB7
Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6
OkNvbG9yJik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNv
cmU6OkNvbG9yJik7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok9w
dGlvbmFsUkdCQT4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBj
b25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJn
dW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJik7CiB9OwogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuaAppbmRleCBiNWEwNDEwOTYyOWNmOTgxZDI3NGVhZDkyMTNhYjkxOTVmMjcxOGEy
Li5hOGJmNmZiMTY4Yzk0NmZhNjdlZWI4YmEyNzJkN2RiMjdiN2VjOWViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTY4LDcg
KzY4LDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgZHJh
d3NUcmFuc3BhcmVudEJhY2tncm91bmQ7CiAgICAgYm9vbCBpc0VkaXRhYmxlOwogCi0gICAgV2Vi
Q29yZTo6Q29sb3IgdW5kZXJsYXlDb2xvcjsKKyAgICBXZWJDb3JlOjpPcHRpb25hbFJHQkEgdW5k
ZXJsYXlDb2xvcjsKIAogICAgIGJvb2wgdXNlRml4ZWRMYXlvdXQ7CiAgICAgV2ViQ29yZTo6SW50
U2l6ZSBmaXhlZExheW91dFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL0FyZ3VtZW50Q29kZXJzTWFjLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Bcmd1
bWVudENvZGVyc01hYy5tbQppbmRleCA2NDBlN2VkZDM0NDEzOWRiMjE5YWQxYzMxMDczMGNmYTMz
ZmU5OWUxLi5hZmU1ODcwMTAwNWNjMDg3ZTJiZTRmOGZhZWNlZDgyMDFiNGIxNzUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMubW0KQEAgLTMyOCw3
ICszMjgsNyBAQCB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIE5TQ29sb3Ig
KmNvbG9yKQogCiBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJldGFpblB0
cjxOU0NvbG9yPiYgcmVzdWx0KQogewotICAgIENvbG9yIGNvbG9yOworICAgIE9wdGlvbmFsUkdC
QSBjb2xvcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbG9yKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXll
ckJhY2tpbmdTdG9yZS5tbQppbmRleCAyY2NiYWM3ZmM3ZjI3MDljMGZhYzJlMjBlZWM5OWY0MGNi
YWY5ZmM1Li5mNWQ0MjcwNjIxMGUxMGNlMDM0MjZkOTc3MmQwMTE1NjIxMGQzYzdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUu
bW0KQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3
SW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dJbWFnZVJlZgogCiAjaWZuZGVm
IE5ERUJVRwogICAgIGlmIChtX2lzT3BhcXVlKQotICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNj
YWxlZExheWVyQm91bmRzLCBDb2xvcigyNTUsIDAsIDApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICAgICAgY29udGV4dC5maWxsUmVjdChzY2FsZWRMYXllckJvdW5kcywgT3B0aW9uYWxSR0JB
KDI1NSwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogI2VuZGlmCiAKICAgICBDR0NvbnRl
eHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVy
Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFw
cGxpZXIubW0KaW5kZXggMmRlZjVlYTgxMDk2ODFmNmNkNTdmMGMwMmI3ODJmNmRjNWRlODYwYi4u
YTUwZWNlN2Q5NTZmNDk3NDNmZDE2ZDZmZTcyNjIzOWEwODU2MDJhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0K
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFw
cGxpZXIubW0KQEAgLTgxLDcgKzgxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNnQ29sb3JG
cm9tQ29sb3IoQ29sb3IgY29sb3IpCitzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNnQ29s
b3JGcm9tQ29sb3IoT3B0aW9uYWxSR0JBIGNvbG9yKQogewogICAgIGlmICghY29sb3IuaXNWYWxp
ZCgpKQogICAgICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCmluZGV4IGVkYjRkODc3YTEyOTgz
OTk4NTE5MGYzMzI3OTgzMTM1YzgxYzI2YjAuLjBiOWRjNjE2NzVlYTQyNWFlZGJmNzhiYTJiMDA0
NTNkM2EzMTMyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKQEAgLTE0OCw4ICsxNDgsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIGZsb2F0IGNvcm5lclJhZGl1czsKICAgICAgICAgZmxvYXQgYm9yZGVyV2lkdGg7CiAg
ICAgICAgIGZsb2F0IG9wYWNpdHk7Ci0gICAgICAgIFdlYkNvcmU6OkNvbG9yIGJhY2tncm91bmRD
b2xvcjsKLSAgICAgICAgV2ViQ29yZTo6Q29sb3IgYm9yZGVyQ29sb3I7CisgICAgICAgIFdlYkNv
cmU6Ok9wdGlvbmFsUkdCQSBiYWNrZ3JvdW5kQ29sb3I7CisgICAgICAgIFdlYkNvcmU6Ok9wdGlv
bmFsUkdCQSBib3JkZXJDb2xvcjsKICAgICAgICAgdW5zaWduZWQgZWRnZUFudGlhbGlhc2luZ01h
c2s7CiAgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UgY3Vz
dG9tQXBwZWFyYW5jZTsKICAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpGaWx0ZXJU
eXBlIG1pbmlmaWNhdGlvbkZpbHRlcjsKQEAgLTE5OSw4ICsxOTksOCBAQCBwdWJsaWM6CiAgICAg
V2ViQ29yZTo6SW50UG9pbnQgc2Nyb2xsT3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxP
cmlnaW47IH0KICAgICB2b2lkIHNldFNjcm9sbE9yaWdpbihjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgb3JpZ2luKSB7IG1fc2Nyb2xsT3JpZ2luID0gb3JpZ2luOyB9OwogICAgIAotICAgIFdlYkNv
cmU6OkNvbG9yIHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yOyB9Ci0gICAgdm9pZCBzZXRQYWdlRXh0ZW5kZWRC
YWNrZ3JvdW5kQ29sb3IoV2ViQ29yZTo6Q29sb3IgY29sb3IpIHsgbV9wYWdlRXh0ZW5kZWRCYWNr
Z3JvdW5kQ29sb3IgPSBjb2xvcjsgfQorICAgIFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSBwYWdlRXh0
ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VFeHRlbmRlZEJhY2tn
cm91bmRDb2xvcjsgfQorICAgIHZvaWQgc2V0UGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKFdl
YkNvcmU6Ok9wdGlvbmFsUkdCQSBjb2xvcikgeyBtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xv
ciA9IGNvbG9yOyB9CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgV2ViQ29yZTo6SW50UG9pbnQg
c2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbFBvc2l0aW9uOyB9CkBAIC0y
NDksNyArMjQ5LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShNQUMpCiAgICAgV2ViQ29yZTo6
SW50UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKICNlbmRpZgotICAgIFdlYkNvcmU6OkNvbG9yIG1f
cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yOworICAgIFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSBt
X3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcjsKICAgICBkb3VibGUgbV9wYWdlU2NhbGVGYWN0
b3I7CiAgICAgZG91YmxlIG1fbWluaW11bVNjYWxlRmFjdG9yOwogICAgIGRvdWJsZSBtX21heGlt
dW1TY2FsZUZhY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmluZGV4IGY2OGFjYTFkOGZhMjMwMzMxNGYyMzgz
NDc0ODYxYmVmZTY5Y2FjNmYuLjA0NzBjZGIzNjEyMjA4OGJkOTUxMTI2YTdhOGQ4YWRkYWZlNDM2
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbi5tbQpAQCAtODksOCArODksOCBAQCBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpMYXllclByb3BlcnRpZXMoKQogICAgICwgY29ybmVy
UmFkaXVzKDApCiAgICAgLCBib3JkZXJXaWR0aCgwKQogICAgICwgb3BhY2l0eSgxKQotICAgICwg
YmFja2dyb3VuZENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCkKLSAgICAsIGJvcmRlckNvbG9yKENv
bG9yOjpibGFjaykKKyAgICAsIGJhY2tncm91bmRDb2xvcihPcHRpb25hbFJHQkE6OnRyYW5zcGFy
ZW50KQorICAgICwgYm9yZGVyQ29sb3IoT3B0aW9uYWxSR0JBOjpibGFjaykKICAgICAsIGVkZ2VB
bnRpYWxpYXNpbmdNYXNrKGtDQUxheWVyTGVmdEVkZ2UgfCBrQ0FMYXllclJpZ2h0RWRnZSB8IGtD
QUxheWVyQm90dG9tRWRnZSB8IGtDQUxheWVyVG9wRWRnZSkKICAgICAsIGN1c3RvbUFwcGVhcmFu
Y2UoR3JhcGhpY3NMYXllcjo6Tm9DdXN0b21BcHBlYXJhbmNlKQogICAgICwgbWluaWZpY2F0aW9u
RmlsdGVyKFBsYXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlwZTo6TGluZWFyKQpAQCAtNjYzLDcgKzY2
Myw3IEBAIHB1YmxpYzoKICAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFBsYXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlwZSk7CiAgICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jik7CiAgICAgUmVtb3RlTGF5
ZXJUcmVlVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChGbG9hdFBvaW50M0QpOwotICAgIFJlbW90ZUxh
eWVyVHJlZVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoQ29sb3IpOworICAgIFJlbW90ZUxheWVyVHJl
ZVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoT3B0aW9uYWxSR0JBKTsKICAgICBSZW1vdGVMYXllclRy
ZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KEZsb2F0UmVjdCk7CiAgICAgUmVtb3RlTGF5ZXJUcmVl
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBWZWN0b3I8V2ViQ29yZTo6R3JhcGhpY3NMYXll
cjo6UGxhdGZvcm1MYXllcklEPiYpOwogICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoY29uc3QgRmlsdGVyT3BlcmF0aW9uJik7CkBAIC0xMDU0LDcgKzEwNTQsNyBAQCBS
ZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtOjpvcGVy
YXRvcjw8KEZsb2F0UG9pbnQzRCBwbwogICAgIHJldHVybiB0czsKIH0KIAotUmVtb3RlTGF5ZXJU
cmVlVGV4dFN0cmVhbSYgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChDb2xv
ciBjb2xvcikKK1JlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIFJlbW90ZUxheWVyVHJlZVRleHRT
dHJlYW06Om9wZXJhdG9yPDwoT3B0aW9uYWxSR0JBIGNvbG9yKQogewogICAgIFJlbW90ZUxheWVy
VHJlZVRleHRTdHJlYW0mIHRzID0gKnRoaXM7CiAgICAgdHMgPDwgY29sb3Iuc2VyaWFsaXplZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXdF
ZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXdFZmwuY3Bw
CmluZGV4IDEwMDg3ZjE4ZDgxNDQ2NmMzNDkyNWE0OTE0N2I1ZGExYmM4YWJkMjEuLjA2NWJkZDFh
Yjc0M2EwNjA3NmIzOGVjMWU4MDVjMTg1MTg4Nzk4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlld0VmbC5jcHAKQEAgLTg3LDEyICs4NywxMiBAQCB2
b2lkIFdLVmlld1NlbmRNb3VzZU1vdmVFdmVudChXS1ZpZXdSZWYgdmlld1JlZiwgRXZhc19FdmVu
dF9Nb3VzZV9Nb3ZlKiBldmVudCkKIAogdm9pZCBXS1ZpZXdTZXRCYWNrZ3JvdW5kQ29sb3IoV0tW
aWV3UmVmIHZpZXdSZWYsIGludCByZWQsIGludCBncmVlbiwgaW50IGJsdWUsIGludCBhbHBoYSkK
IHsKLSAgICBzdGF0aWNfY2FzdDxXZWJWaWV3RWZsKj4odG9JbXBsKHZpZXdSZWYpKS0+c2V0Vmll
d0JhY2tncm91bmRDb2xvcihXZWJDb3JlOjpDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkp
OworICAgIHN0YXRpY19jYXN0PFdlYlZpZXdFZmwqPih0b0ltcGwodmlld1JlZikpLT5zZXRWaWV3
QmFja2dyb3VuZENvbG9yKFdlYkNvcmU6Ok9wdGlvbmFsUkdCQShyZWQsIGdyZWVuLCBibHVlLCBh
bHBoYSkpOwogfQogCiB2b2lkIFdLVmlld0dldEJhY2tncm91bmRDb2xvcihXS1ZpZXdSZWYgdmll
d1JlZiwgaW50KiByZWQsIGludCogZ3JlZW4sIGludCogYmx1ZSwgaW50KiBhbHBoYSkKIHsKLSAg
ICBXZWJDb3JlOjpDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSBzdGF0aWNfY2FzdDxXZWJWaWV3RWZs
Kj4odG9JbXBsKHZpZXdSZWYpKS0+dmlld0JhY2tncm91bmRDb2xvcigpOworICAgIFdlYkNvcmU6
Ok9wdGlvbmFsUkdCQSBiYWNrZ3JvdW5kQ29sb3IgPSBzdGF0aWNfY2FzdDxXZWJWaWV3RWZsKj4o
dG9JbXBsKHZpZXdSZWYpKS0+dmlld0JhY2tncm91bmRDb2xvcigpOwogCiAgICAgaWYgKHJlZCkK
ICAgICAgICAgKnJlZCA9IGJhY2tncm91bmRDb2xvci5yZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggY2VhOGU4YTFiM2Y3NmFk
Yzk0Mzc5NzlkMjNlZDgxYTBiMWNhNjAwYS4uYjg2OTQ5NGM0M2NjMTU5NzgwNWUzNmM2NjdkYjBj
YmFiYTQxZTgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KQEAgLTIwNCw3ICsyMDQsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3
IHsKICAgICBSZXRhaW5QdHI8VUlWaWV3IDxXS1dlYlZpZXdDb250ZW50UHJvdmlkZXI+PiBfY3Vz
dG9tQ29udGVudFZpZXc7CiAgICAgUmV0YWluUHRyPFVJVmlldz4gX2N1c3RvbUNvbnRlbnRGaXhl
ZE92ZXJsYXlWaWV3OwogCi0gICAgV2ViQ29yZTo6Q29sb3IgX3Njcm9sbFZpZXdCYWNrZ3JvdW5k
Q29sb3I7CisgICAgV2ViQ29yZTo6T3B0aW9uYWxSR0JBIF9zY3JvbGxWaWV3QmFja2dyb3VuZENv
bG9yOwogCiAgICAgQk9PTCBfZGVsYXlVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzOwogICAgIEJP
T0wgX2hhZERlbGF5ZWRVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzOwpAQCAtODE3LDEzICs4MTcs
MTMgQEAgc3RhdGljIENHRmxvYXQgY29udGVudFpvb21TY2FsZShXS1dlYlZpZXcgKndlYlZpZXcp
CiAgICAgcmV0dXJuIHNjYWxlOwogfQogCi1zdGF0aWMgV2ViQ29yZTo6Q29sb3IgYmFzZVNjcm9s
bFZpZXdCYWNrZ3JvdW5kQ29sb3IoV0tXZWJWaWV3ICp3ZWJWaWV3KQorc3RhdGljIFdlYkNvcmU6
Ok9wdGlvbmFsUkdCQSBiYXNlU2Nyb2xsVmlld0JhY2tncm91bmRDb2xvcihXS1dlYlZpZXcgKndl
YlZpZXcpCiB7CiAgICAgaWYgKHdlYlZpZXctPl9jdXN0b21Db250ZW50VmlldykKICAgICAgICAg
cmV0dXJuIFt3ZWJWaWV3LT5fY3VzdG9tQ29udGVudFZpZXcgYmFja2dyb3VuZENvbG9yXS5DR0Nv
bG9yOwogCiAgICAgaWYgKHdlYlZpZXctPl9nZXN0dXJlQ29udHJvbGxlcikgewotICAgICAgICBX
ZWJDb3JlOjpDb2xvciBjb2xvciA9IHdlYlZpZXctPl9nZXN0dXJlQ29udHJvbGxlci0+YmFja2dy
b3VuZENvbG9yRm9yQ3VycmVudFNuYXBzaG90KCk7CisgICAgICAgIFdlYkNvcmU6Ok9wdGlvbmFs
UkdCQSBjb2xvciA9IHdlYlZpZXctPl9nZXN0dXJlQ29udHJvbGxlci0+YmFja2dyb3VuZENvbG9y
Rm9yQ3VycmVudFNuYXBzaG90KCk7CiAgICAgICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpCiAgICAg
ICAgICAgICByZXR1cm4gY29sb3I7CiAgICAgfQpAQCAtODMxLDE1ICs4MzEsMTUgQEAgc3RhdGlj
IFdlYkNvcmU6OkNvbG9yIGJhc2VTY3JvbGxWaWV3QmFja2dyb3VuZENvbG9yKFdLV2ViVmlldyAq
d2ViVmlldykKICAgICByZXR1cm4gd2ViVmlldy0+X3BhZ2UtPnBhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvcigpOwogfQogCi1zdGF0aWMgV2ViQ29yZTo6Q29sb3Igc2Nyb2xsVmlld0JhY2tncm91
bmRDb2xvcihXS1dlYlZpZXcgKndlYlZpZXcpCitzdGF0aWMgV2ViQ29yZTo6T3B0aW9uYWxSR0JB
IHNjcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3IoV0tXZWJWaWV3ICp3ZWJWaWV3KQogewogICAgIGlm
ICghd2ViVmlldy5vcGFxdWUpCi0gICAgICAgIHJldHVybiBXZWJDb3JlOjpDb2xvcjo6dHJhbnNw
YXJlbnQ7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpPcHRpb25hbFJHQkE6OnRyYW5zcGFyZW50
OwogCi0gICAgV2ViQ29yZTo6Q29sb3IgY29sb3IgPSBiYXNlU2Nyb2xsVmlld0JhY2tncm91bmRD
b2xvcih3ZWJWaWV3KTsKKyAgICBXZWJDb3JlOjpPcHRpb25hbFJHQkEgY29sb3IgPSBiYXNlU2Ny
b2xsVmlld0JhY2tncm91bmRDb2xvcih3ZWJWaWV3KTsKIAogICAgIGlmICghY29sb3IuaXNWYWxp
ZCgpKQotICAgICAgICBjb2xvciA9IFdlYkNvcmU6OkNvbG9yOjp3aGl0ZTsKKyAgICAgICAgY29s
b3IgPSBXZWJDb3JlOjpPcHRpb25hbFJHQkE6OndoaXRlOwogCiAgICAgQ0dGbG9hdCB6b29tU2Nh
bGUgPSBjb250ZW50Wm9vbVNjYWxlKHdlYlZpZXcpOwogICAgIENHRmxvYXQgbWluaW11bVpvb21T
Y2FsZSA9IFt3ZWJWaWV3LT5fc2Nyb2xsVmlldyBtaW5pbXVtWm9vbVNjYWxlXTsKQEAgLTg1NCw3
ICs4NTQsNyBAQCBzdGF0aWMgV2ViQ29yZTo6Q29sb3Igc2Nyb2xsVmlld0JhY2tncm91bmRDb2xv
cihXS1dlYlZpZXcgKndlYlZpZXcpCiAKIC0gKHZvaWQpX3VwZGF0ZVNjcm9sbFZpZXdCYWNrZ3Jv
dW5kCiB7Ci0gICAgV2ViQ29yZTo6Q29sb3IgY29sb3IgPSBzY3JvbGxWaWV3QmFja2dyb3VuZENv
bG9yKHNlbGYpOworICAgIFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSBjb2xvciA9IHNjcm9sbFZpZXdC
YWNrZ3JvdW5kQ29sb3Ioc2VsZik7CiAKICAgICBpZiAoX3Njcm9sbFZpZXdCYWNrZ3JvdW5kQ29s
b3IgPT0gY29sb3IpCiAgICAgICAgIHJldHVybjsKQEAgLTkxNSw3ICs5MTUsNyBAQCAtICh2b2lk
KV9wcm9jZXNzRGlkRXhpdAogICAgIFtfY29udGVudFZpZXcgc2V0SGlkZGVuOk5PXTsKICAgICBf
bmVlZHNUb1Jlc3RvcmVFeHBvc2VkUmVjdCA9IE5POwogICAgIF9uZWVkc1RvUmVzdG9yZVVub2Jz
Y3VyZWRDZW50ZXIgPSBOTzsKLSAgICBfc2Nyb2xsVmlld0JhY2tncm91bmRDb2xvciA9IFdlYkNv
cmU6OkNvbG9yKCk7CisgICAgX3Njcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3IgPSBXZWJDb3JlOjpP
cHRpb25hbFJHQkEoKTsKICAgICBfZGVsYXlVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzID0gTk87
CiAgICAgX2hhZERlbGF5ZWRVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzID0gTk87CiB9CkBAIC0z
MDY4LDcgKzMwNjgsNyBAQCAtIChfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgKilfd2ViVmlld1By
aW50Rm9ybWF0dGVyCiAKIC0gKE5TQ29sb3IgKilfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9y
CiB7Ci0gICAgV2ViQ29yZTo6Q29sb3IgY29sb3IgPSBfcGFnZS0+cGFnZUV4dGVuZGVkQmFja2dy
b3VuZENvbG9yKCk7CisgICAgV2ViQ29yZTo6T3B0aW9uYWxSR0JBIGNvbG9yID0gX3BhZ2UtPnBh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcigpOwogICAgIGlmICghY29sb3IuaXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm4gbmlsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXcuY3BwCmluZGV4IDQ1ODg0NjQ1Nzg3Mzc0NzM3ZDgzYmJjNDA1ZWU4YzdiZmU3NDVm
YzkuLmIzYWVjNGYwNjQ4OTU4NmFlYjVkZjFiNWIxOGI1ZWU2NjM0NTc5MDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCkBAIC04NjMsNyArODYzLDcg
QEAgYm9vbCBFd2tWaWV3OjpjcmVhdGVHTFN1cmZhY2UoKQogICogQGludGVybmFsCiAgKiBSZXF1
ZXN0cyB0byBzaG93IGV4dGVybmFsIGNvbG9yIHBpY2tlci4KICAqLwotdm9pZCBFd2tWaWV3Ojpy
ZXF1ZXN0Q29sb3JQaWNrZXIoV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVy
LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCit2b2lkIEV3a1ZpZXc6OnJlcXVlc3RDb2xv
clBpY2tlcihXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IFdl
YkNvcmU6Ok9wdGlvbmFsUkdCQSYgY29sb3IpCiB7CiAgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSog
c2QgPSBzbWFydERhdGEoKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBp
LT5pbnB1dF9waWNrZXJfY29sb3JfcmVxdWVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3LmgKaW5kZXggZWRmYjA4MWM4NGY4ZmIyNjJlZDVjMWUyZmI3Y2YyYWEx
OGQwMjY2ZC4uOTYwODQ2NjJmNDM2ZTc1NTIzZDJlMDA3NzAxMjg4NDNlOTFhYTgxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaApAQCAtNjgsNyArNjgsNyBA
QCBjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBB
ZmZpbmVUcmFuc2Zvcm07Ci1jbGFzcyBDb2xvcjsKK2NsYXNzIE9wdGlvbmFsUkdCQTsKIGNsYXNz
IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTsKIGNsYXNzIEN1cnNvcjsKIGNsYXNzIEZsb2F0UG9p
bnQ7CkBAIC0xNTksNyArMTU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TmVlZHNTdXJmYWNl
UmVzaXplKCkgeyBtX3BlbmRpbmdTdXJmYWNlUmVzaXplID0gdHJ1ZTsgfQogCiAjaWYgRU5BQkxF
KElOUFVUX1RZUEVfQ09MT1IpCi0gICAgdm9pZCByZXF1ZXN0Q29sb3JQaWNrZXIoV0tDb2xvclBp
Y2tlclJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCBXZWJDb3JlOjpDb2xvciYpOwor
ICAgIHZvaWQgcmVxdWVzdENvbG9yUGlja2VyKFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJl
ZiBsaXN0ZW5lciwgY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJik7CiAgICAgdm9pZCBkaXNt
aXNzQ29sb3JQaWNrZXIoKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb2xvcl9waWNrZXIuY3BwCmluZGV4IGFlZjhlOGFlNTIzYzA4
MWViNjg5Y2M2NGUzYzJlZGY0NDliNTZiYzguLmQyZTNjYzliYjhiNWM0N2ViNTNhYjNlNTdkYjMw
M2Y3NWViZGZhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb2xvcl9waWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb2xvcl9waWNrZXIuY3BwCkBAIC0zMCwxOSArMzAsMTkgQEAKICNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9DT0xPUikKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1Fd2tDb2xvclBp
Y2tlcjo6RXdrQ29sb3JQaWNrZXIoV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmIGNvbG9y
UGlja2VyTGlzdGVuZXIsIGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3IpCitFd2tDb2xvclBpY2tl
cjo6RXdrQ29sb3JQaWNrZXIoV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmIGNvbG9yUGlj
a2VyTGlzdGVuZXIsIGNvbnN0IE9wdGlvbmFsUkdCQSYgaW5pdGlhbENvbG9yKQogICAgIDogbV9j
b2xvclBpY2tlckxpc3RlbmVyKGNvbG9yUGlja2VyTGlzdGVuZXIpCiAgICAgLCBtX2NvbG9yKGlu
aXRpYWxDb2xvcikKIHsKIH0KIAotdm9pZCBFd2tDb2xvclBpY2tlcjo6c2V0Q29sb3IoY29uc3Qg
Q29sb3ImIGNvbG9yKQordm9pZCBFd2tDb2xvclBpY2tlcjo6c2V0Q29sb3IoY29uc3QgT3B0aW9u
YWxSR0JBJiBjb2xvcikKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gY29sb3JTdHJp
bmcoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoY29sb3Iuc2VyaWFsaXpl
ZCgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJTZXRD
b2xvcihtX2NvbG9yUGlja2VyTGlzdGVuZXIuZ2V0KCksIGNvbG9yU3RyaW5nLmdldCgpKTsKIH0K
IAotY29uc3QgQ29sb3ImIEV3a0NvbG9yUGlja2VyOjpjb2xvcigpIGNvbnN0Citjb25zdCBPcHRp
b25hbFJHQkEmIEV3a0NvbG9yUGlja2VyOjpjb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
Y29sb3I7CiB9CkBAIC01Myw3ICs1Myw3IEBAIEVpbmFfQm9vbCBld2tfY29sb3JfcGlja2VyX2Nv
bG9yX3NldChFd2tfQ29sb3JfUGlja2VyKiBjb2xvclBpY2tlciwgaW50IHIsIGludCBnCiAjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKGNvbG9yUGlja2VyLCBmYWxzZSk7CiAKLSAgICBjb2xvclBpY2tlci0+c2V0Q29sb3IoQ29s
b3IociwgZywgYiwgYSkpOworICAgIGNvbG9yUGlja2VyLT5zZXRDb2xvcihPcHRpb25hbFJHQkEo
ciwgZywgYiwgYSkpOwogCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQpAQCAtNzUsNyArNzUsNyBA
QCBFaW5hX0Jvb2wgZXdrX2NvbG9yX3BpY2tlcl9jb2xvcl9nZXQoY29uc3QgRXdrX0NvbG9yX1Bp
Y2tlciogY29sb3JQaWNrZXIsIGludCogcgogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChiLCBmYWxzZSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGEsIGZh
bHNlKTsKIAotICAgIGNvbnN0IENvbG9yJiBjb2xvciA9IGNvbG9yUGlja2VyLT5jb2xvcigpOwor
ICAgIGNvbnN0IE9wdGlvbmFsUkdCQSYgY29sb3IgPSBjb2xvclBpY2tlci0+Y29sb3IoKTsKICAg
ICAqciA9IGNvbG9yLnJlZCgpOwogICAgICpnID0gY29sb3IuZ3JlZW4oKTsKICAgICAqYiA9IGNv
bG9yLmJsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb2xvcl9waWNrZXJfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbG9yX3BpY2tlcl9wcml2YXRlLmgKaW5kZXggYzcyMzFhNTJiOTZjYmRhNzFh
NDU3MDNlMDQ2ZTg2NmY1YmFjMjkxNy4uZjk2NzM0YzA4MWQ1NTJiN2Q3MGY1NjQzNzk3ZDJlMGMz
OTU4MDA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbG9yX3BpY2tlcl9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbG9yX3BpY2tlcl9wcml2YXRlLmgKQEAgLTI4LDE0ICsyOCwxNCBAQAogCiBj
bGFzcyBFd2tDb2xvclBpY2tlciB7CiBwdWJsaWM6Ci0gICAgRXdrQ29sb3JQaWNrZXIoV0tDb2xv
clBpY2tlclJlc3VsdExpc3RlbmVyUmVmIGNvbG9yUGlja2VyTGlzdGVuZXIsIGNvbnN0IFdlYkNv
cmU6OkNvbG9yJiBpbml0aWFsQ29sb3IpOworICAgIEV3a0NvbG9yUGlja2VyKFdLQ29sb3JQaWNr
ZXJSZXN1bHRMaXN0ZW5lclJlZiBjb2xvclBpY2tlckxpc3RlbmVyLCBjb25zdCBXZWJDb3JlOjpP
cHRpb25hbFJHQkEmIGluaXRpYWxDb2xvcik7CiAKLSAgICBjb25zdCBXZWJDb3JlOjpDb2xvciYg
Y29sb3IoKSBjb25zdDsKLSAgICB2b2lkIHNldENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7
CisgICAgY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJiBjb2xvcigpIGNvbnN0OworICAgIHZv
aWQgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJik7CiAKIHByaXZhdGU6CiAg
ICAgV0tSZXRhaW5QdHI8V0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmPiBtX2NvbG9yUGlj
a2VyTGlzdGVuZXI7Ci0gICAgV2ViQ29yZTo6Q29sb3IgbV9jb2xvcjsKKyAgICBXZWJDb3JlOjpP
cHRpb25hbFJHQkEgbV9jb2xvcjsKIH07CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9D
T0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VD
bGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmNwcAppbmRleCBhYWZjM2U1MDZhOTkwOGY5NDhhMDFhZDJjYzAwMTFmNzhiMDkyNjY3
Li5jZTExYjRiYWQyZmE2N2Y5OGYzNzg2MGQzZGFkOGFhZDcwZmI0NjBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0y
MTYsNyArMjE2LDcgQEAgUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBs
OjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSoKICAgICByZXR1cm4gV2ViQ29u
dGV4dE1lbnVQcm94eUd0azo6Y3JlYXRlKG1fdmlld1dpZGdldCwgcGFnZSk7CiB9CiAKLVJlZlB0
cjxXZWJDb2xvclBpY2tlcj4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBh
Z2VQcm94eSogcGFnZSwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiByZWN0KQorUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpPcHRp
b25hbFJHQkEmIGNvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogewogICAgIGlm
IChXRUJLSVRfSVNfV0VCX1ZJRVcobV92aWV3V2lkZ2V0KSkKICAgICAgICAgcmV0dXJuIFdlYktp
dENvbG9yQ2hvb3Nlcjo6Y3JlYXRlKCpwYWdlLCBjb2xvciwgcmVjdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAppbmRleCBjZTU4NzU5
M2UxYTk4OWI4NzM0NGMzMThlMGM0Y2FmYzdhMzg0MmFmLi4xMjdmZDEyMzE4YzhmMzAxZTRlMmFl
NWU0N2QwOTEzZTFhNTA0NTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIFJlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2Vi
UGFnZVByb3h5Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29udGV4dE1lbnVQ
cm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKICNp
ZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb2xvclBp
Y2tlcj4gY3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29s
b3ImIGludGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQ
cm94eSosIGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYgaW50aWFsQ29sb3IsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBzZXRU
ZXh0SW5kaWNhdG9yKFJlZjxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yPiwgV2ViQ29yZTo6VGV4dElu
ZGljYXRvckxpZmV0aW1lID0gV2ViQ29yZTo6VGV4dEluZGljYXRvckxpZmV0aW1lOjpQZXJtYW5l
bnQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhclRleHRJbmRpY2F0b3IoV2ViQ29y
ZTo6VGV4dEluZGljYXRvckRpc21pc3NhbEFuaW1hdGlvbiA9IFdlYkNvcmU6OlRleHRJbmRpY2F0
b3JEaXNtaXNzYWxBbmltYXRpb246OkZhZGVPdXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3Nlci5jcHAKaW5k
ZXggNzE5MTlkOGY2ZjQ5YTQzYzE0MmI2OWJiNTY3ZjE1NzBhZjI4MzVjMy4uM2RjMjAxN2E3MTAy
NmQzY2E0MTZhYjhjOWUwNjUxNzUzMDJhYWNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXIuY3BwCkBAIC0yOSwxMiAr
MjksMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1SZWY8V2ViS2l0Q29sb3JDaG9vc2VyPiBXZWJLaXRDb2xvckNob29zZXI6OmNyZWF0ZShXZWJQ
YWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCitSZWY8V2ViS2l0Q29sb3JDaG9vc2VyPiBXZWJLaXRD
b2xvckNob29zZXI6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdlYkNvcmU6Ok9w
dGlvbmFsUkdCQSYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQog
ewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdENvbG9yQ2hvb3NlcihwYWdlLCBpbml0
aWFsQ29sb3IsIHJlY3QpKTsKIH0KIAotV2ViS2l0Q29sb3JDaG9vc2VyOjpXZWJLaXRDb2xvckNo
b29zZXIoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9yLCBjb25z
dCBJbnRSZWN0JiByZWN0KQorV2ViS2l0Q29sb3JDaG9vc2VyOjpXZWJLaXRDb2xvckNob29zZXIo
V2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBPcHRpb25hbFJHQkEmIGluaXRpYWxDb2xvciwgY29u
c3QgSW50UmVjdCYgcmVjdCkKICAgICA6IFdlYkNvbG9yUGlja2VyR3RrKHBhZ2UsIGluaXRpYWxD
b2xvciwgcmVjdCkKICAgICAsIG1fZWxlbWVudFJlY3QocmVjdCkKIHsKQEAgLTY3LDcgKzY3LDcg
QEAgdm9pZCBXZWJLaXRDb2xvckNob29zZXI6OmNvbG9yQ2hvb3NlclJlcXVlc3RSR0JBQ2hhbmdl
ZChXZWJLaXRDb2xvckNob29zZXJSZXF1ZXMKICAgICBjb2xvckNob29zZXItPmRpZENob29zZUNv
bG9yKHJnYmEpOwogfQogCi12b2lkIFdlYktpdENvbG9yQ2hvb3Nlcjo6c2hvd0NvbG9yUGlja2Vy
KGNvbnN0IENvbG9yJiBjb2xvcikKK3ZvaWQgV2ViS2l0Q29sb3JDaG9vc2VyOjpzaG93Q29sb3JQ
aWNrZXIoY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICBtX2luaXRpYWxDb2xvciA9
IGNvbG9yOwogICAgIEdSZWZQdHI8V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdD4gcmVxdWVzdCA9
IGFkb3B0R1JlZih3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0Q3JlYXRlKHRoaXMpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3Nl
ci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2Vy
LmgKaW5kZXggZjJiZjM1ZWRmMGIxMDYwOGEyYTQ1OTgxZGRiMWVhODE1MWJjNGRiNy4uYTUyMjM2
ODE0OTBlNjUyZmQyMzE0MzA1NzAxNmJiMTE5M2JmYjgzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyLmgKQEAgLTI3LDcg
KzI3LDcgQEAKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0IFdlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3Q7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENvbG9y
OworY2xhc3MgT3B0aW9uYWxSR0JBOwogY2xhc3MgSW50UmVjdDsKIH0KIApAQCAtMzUsMTYgKzM1
LDE2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJLaXRDb2xvckNob29zZXIgZmlu
YWwgOiBwdWJsaWMgV2ViQ29sb3JQaWNrZXJHdGsgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
V2ViS2l0Q29sb3JDaG9vc2VyPiBjcmVhdGUoV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6
Q29sb3ImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgc3RhdGljIFJlZjxXZWJLaXRD
b2xvckNob29zZXI+IGNyZWF0ZShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpPcHRpb25h
bFJHQkEmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgdmlydHVhbCB+V2ViS2l0Q29s
b3JDaG9vc2VyKCk7CiAKICAgICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudFJlY3Q7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJLaXRD
b2xvckNob29zZXIoV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgV2ViS2l0Q29sb3JDaG9vc2VyKFdlYlBhZ2VQcm94eSYs
IGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBlbmRQaWNrZXIoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2hvd0NvbG9yUGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIHNob3dDb2xvclBpY2tlcihjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEm
KSBvdmVycmlkZTsKIAogICAgIHN0YXRpYyB2b2lkIGNvbG9yQ2hvb3NlclJlcXVlc3RGaW5pc2hl
ZChXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiwgV2ViS2l0Q29sb3JDaG9vc2VyKik7CiAgICAg
c3RhdGljIHZvaWQgY29sb3JDaG9vc2VyUmVxdWVzdFJHQkFDaGFuZ2VkKFdlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3QqLCBHUGFyYW1TcGVjKiwgV2ViS2l0Q29sb3JDaG9vc2VyKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4
IDAzMjI1ZGE4OTMyNmNjOTI1Yzc5ZTA0YzYwNTZhMTcyMjM0NTE3OWYuLjUyYjY1OGY1NjgyMDY1
MzA4YmQwN2ExNTk5ZmJlNjk4MTc1OTA0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0zNjE1LDEzICszNjE1LDEzIEBA
IHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9iYWNrZ3JvdW5kX2NvbG9yKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIGNvbnN0IEdka1JHQkEqCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNf
V0VCX1ZJRVcod2ViVmlldykpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwocmdiYSk7CiAKLSAgICBD
b2xvciBjb2xvcigqcmdiYSk7CisgICAgT3B0aW9uYWxSR0JBIGNvbG9yKCpyZ2JhKTsKICAgICBX
ZWJQYWdlUHJveHkqIHBhZ2UgPSBnZXRQYWdlKHdlYlZpZXcpOwogICAgIGlmIChwYWdlLT5iYWNr
Z3JvdW5kQ29sb3IoKSA9PSBjb2xvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgcGFnZS0+c2V0
QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKLSAgICBwYWdlLT5zZXREcmF3c0JhY2tncm91bmQoY29s
b3IgPT0gQ29sb3I6OndoaXRlKTsKKyAgICBwYWdlLT5zZXREcmF3c0JhY2tncm91bmQoY29sb3Ig
PT0gT3B0aW9uYWxSR0JBOjp3aGl0ZSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IGQzYTc3MjY3Mjg1YWZjODNlNDY4YTU1NGUzYTc0
NzI2N2FiZmZhMjAuLjFkMjgzYmEwZDhkMTJmYzVkZDdiNmFhMzI0MjE5NWRkYTEwYTY2NzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTE1MDQsNyAr
MTUwNCw3IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmlu
ZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAgICAgICAgIE5TRGljdGlvbmFyeSAq
YXR0cnMgPSBbc3RyaW5nIGF0dHJpYnV0ZXNBdEluZGV4OmkgbG9uZ2VzdEVmZmVjdGl2ZVJhbmdl
OiZyYW5nZSBpblJhbmdlOk5TTWFrZVJhbmdlKGksIGxlbmd0aCAtIGkpXTsKICAgICAgICAgCiAg
ICAgICAgIGlmIChOU051bWJlciAqc3R5bGUgPSBbYXR0cnMgb2JqZWN0Rm9yS2V5Ok5TVW5kZXJs
aW5lU3R5bGVBdHRyaWJ1dGVOYW1lXSkgewotICAgICAgICAgICAgQ29sb3IgY29sb3IgPSBDb2xv
cjo6YmxhY2s7CisgICAgICAgICAgICBPcHRpb25hbFJHQkEgY29sb3IgPSBPcHRpb25hbFJHQkE6
OmJsYWNrOwogICAgICAgICAgICAgaWYgKE5TQ29sb3IgKmNvbG9yQXR0ciA9IFthdHRycyBvYmpl
Y3RGb3JLZXk6TlNVbmRlcmxpbmVDb2xvckF0dHJpYnV0ZU5hbWVdKQogICAgICAgICAgICAgICAg
IGNvbG9yID0gY29sb3JGcm9tTlNDb2xvcihbY29sb3JBdHRyIGNvbG9yVXNpbmdDb2xvclNwYWNl
TmFtZTpOU0RldmljZVJHQkNvbG9yU3BhY2VdKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
Q29tcG9zaXRpb25VbmRlcmxpbmUocmFuZ2UubG9jYXRpb24sIE5TTWF4UmFuZ2UocmFuZ2UpLCBj
b2xvciwgW3N0eWxlIGludFZhbHVlXSA+IDEpKTsKQEAgLTQxMjUsNyArNDEyNSw3IEBAIC0gKHZv
aWQpc2V0U2hvdWxkQ2xpcFRvVmlzaWJsZVJlY3Q6KEJPT0wpY2xpcHNUb1Zpc2libGVSZWN0CiAK
IC0gKE5TQ29sb3IgKil1bmRlcmxheUNvbG9yCiB7Ci0gICAgQ29sb3Igd2ViQ29sb3IgPSBfZGF0
YS0+X3BhZ2UtPnVuZGVybGF5Q29sb3IoKTsKKyAgICBPcHRpb25hbFJHQkEgd2ViQ29sb3IgPSBf
ZGF0YS0+X3BhZ2UtPnVuZGVybGF5Q29sb3IoKTsKICAgICBpZiAoIXdlYkNvbG9yLmlzVmFsaWQo
KSkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtNDQ3NCw3ICs0NDc0LDcgQEAgLSAoX1dLT3Zl
cmxheVNjcm9sbGJhclN0eWxlKV9vdmVybGF5U2Nyb2xsYmFyU3R5bGUKIAogLSAoTlNDb2xvciAq
KV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IKIHsKLSAgICBXZWJDb3JlOjpDb2xvciBjb2xv
ciA9IF9kYXRhLT5fcGFnZS0+cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKCk7CisgICAgV2Vi
Q29yZTo6T3B0aW9uYWxSR0JBIGNvbG9yID0gX2RhdGEtPl9wYWdlLT5wYWdlRXh0ZW5kZWRCYWNr
Z3JvdW5kQ29sb3IoKTsKICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJu
IG5pbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBh
c3RlYm9hcmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dl
YlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCmluZGV4IDAyMjU0OTcxMTI0NmE5ZjIxOWM3OWJiNmNl
MjBhZGJiZDk5MjkzNGMuLmI0ZDI1M2FiMTQyYWRmNDQyNGY3MWU2MDAwMWI0YmE0NGQ3MzEzZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJk
UHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFz
dGVib2FyZFByb3h5Q29jb2EubW0KQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OmdldFBhc3RlYm9hcmRVbmlxdWVOYW1lKFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAg
ICAgcGFzdGVib2FyZE5hbWUgPSBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnVuaXF1ZU5hbWUoKTsKIH0K
IAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRDb2xvcihjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCit2b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZENvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYgY29sb3IpCiB7CiAgICAgY29sb3IgPSBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvbG9yKCk7ICAgIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNw
cAppbmRleCAzNzQ3ZmJiYjVkM2FlMzVmZjZhOWY0ZWRlOWU3NjJiNGIxYThmMTNhLi4zODczM2Fh
MzhlODcwZTNiZDk1YzJjZDA4OGNjYzk5MzI4Mzc0MmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcApAQCAt
NDQzLDcgKzQ0Myw3IEBAIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBXZWJWaWV3OjpjcmVh
dGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopCiB9CiAKICNpZiBFTkFCTEUoSU5QVVRf
VFlQRV9DT0xPUikKLVJlZlB0cjxXZWJDb2xvclBpY2tlcj4gV2ViVmlldzo6Y3JlYXRlQ29sb3JQ
aWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JikKK1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gV2ViVmlldzo6Y3JlYXRlQ29sb3JQ
aWNrZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJiwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL1dlYlZpZXcuaAppbmRleCA0ODExNGUwZDQ4ZGU5MzA3MDRlNTc2ZTM5YWZkNTgx
ZDVlNTgyNmQwLi4wMjI2MjlmOTE2MjYxNTdkMTgzNmVmNDQyY2VjOTJkN2QyNjQ4NDcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJW
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
V2ViVmlldy5oCkBAIC0xODIsNyArMTgyLDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgUmVm
UHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkq
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVh
dGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwogI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVh
dGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlh
bENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBS
ZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNv
bnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0SW5k
aWNhdG9yKFJlZjxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yPiwgV2ViQ29yZTo6VGV4dEluZGljYXRv
ckxpZmV0aW1lID0gV2ViQ29yZTo6VGV4dEluZGljYXRvckxpZmV0aW1lOjpQZXJtYW5lbnQpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggNjc4NTM2MDVm
NjViNjBkN2Q1NzdiODQ2YTNhYjE0ODBlZjI0ZjYzNS4uYWQxMDhhNjY1YjY2NWViNzg5MDE3ZWFi
MTQwN2Q0OGI4MGI3NDQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBA
IC0yMjEsNyArMjIxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvbnRleHRN
ZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikgPSAwOwogCiAj
aWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29sb3JQ
aWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CisgICAgdmly
dHVhbCBSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94
eSosIGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JikgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dElu
ZGljYXRvcihSZWY8V2ViQ29yZTo6VGV4dEluZGljYXRvcj4sIFdlYkNvcmU6OlRleHRJbmRpY2F0
b3JMaWZldGltZSA9IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JMaWZldGltZTo6UGVybWFuZW50KSA9
IDA7CkBAIC0yNjcsNyArMjY3LDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oSU9TKQogICAg
IHZpcnR1YWwgdm9pZCBjb21taXRQb3RlbnRpYWxUYXBGYWlsZWQoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXModWludDY0X3QgcmVxdWVzdElELCBj
b25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+JiBo
aWdobGlnaHRlZFF1YWRzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0b3BMZWZ0UmFkaXVzLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90dG9tUmln
aHRSYWRpdXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkR2V0VGFwSGlnaGxpZ2h0R2VvbWV0
cmllcyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+JiBoaWdobGlnaHRlZFF1YWRzLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0
b3BSaWdodFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMpID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCBkaWRDb21taXRMYXllclRyZWUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGR5bmFtaWNWaWV3cG9ydFVwZGF0ZUNoYW5n
ZWRUYXJnZXQoZG91YmxlIG5ld1NjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBuZXdT
Y3JvbGxQb3NpdGlvbiwgdWludDY0X3QgdHJhbnNhY3Rpb25JRCkgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlci5jcHAKaW5kZXggMTEzMmMwNzQ1NDMwZWM3NTAx
MzMyZTA1NmRiZDZhNWVkOWY4ZjVkMy4uNjQxNzI2NTE5MTdiZmVjMTA3MTQzZGJmNTJjMDA2ZWY0
MDk5YTlhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXIuY3Bw
CkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgV2ViQ29sb3JQaWNrZXI6OmVuZFBpY2tlcigpCiAgICAg
bV9jbGllbnQtPmRpZEVuZENvbG9yUGlja2VyKCk7CiB9CiAKLXZvaWQgV2ViQ29sb3JQaWNrZXI6
OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQordm9pZCBXZWJD
b2xvclBpY2tlcjo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEm
IGNvbG9yKQogewogICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybjsKQEAgLTYxLDcg
KzYxLDcgQEAgdm9pZCBXZWJDb2xvclBpY2tlcjo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJD
b3JlOjpDb2xvciYgY29sb3IpCiAgICAgbV9jbGllbnQtPmRpZENob29zZUNvbG9yKGNvbG9yKTsK
IH0KIAotdm9pZCBXZWJDb2xvclBpY2tlcjo6c2hvd0NvbG9yUGlja2VyKGNvbnN0IFdlYkNvcmU6
OkNvbG9yJikKK3ZvaWQgV2ViQ29sb3JQaWNrZXI6OnNob3dDb2xvclBpY2tlcihjb25zdCBXZWJD
b3JlOjpPcHRpb25hbFJHQkEmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tl
ci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyLmgKaW5kZXggNTQw
MGRkYzE0OTRiZjU1NTFlZWY4ZTc5NWM1MGRmMTQzZDhiY2JmZi4uNmM5MTg1MmRjZjUxM2JiY2Qz
ZmM3NWZmOGI4YzJiYmU1ZGJhNWJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbG9yUGlja2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bG9yUGlja2VyLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENvbG9yOworY2xhc3MgT3B0aW9uYWxSR0JBOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgICAg
ICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KIAogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB2
b2lkIGRpZENob29zZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgPSAwOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJikg
PSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kQ29sb3JQaWNrZXIoKSA9IDA7CiAgICAg
fTsKIApAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZW5kUGlja2VyKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlbGVj
dGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd0Nv
bG9yUGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CisgICAgdmlydHVhbCB2b2lkIHNldFNl
bGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJik7CisgICAgdmlydHVhbCB2
b2lkIHNob3dDb2xvclBpY2tlcihjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmKTsKIAogcHJv
dGVjdGVkOgogICAgIGV4cGxpY2l0IFdlYkNvbG9yUGlja2VyKENsaWVudCopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCmluZGV4IDg3ODU1
OTU0NjJmZjhmYmU4YThiY2YzZjZiYWFjNjAxZmYzMGI5YmMuLjc3MzQ2ZWVlYTgyYTZkYjU0MzU0
NjBkNWNkZWFkZmFmNDdkYjRkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRWRpdENvbW1hbmRQcm94eS5jcHAKQEAgLTc3LDkgKzc3LDkgQEAgU3RyaW5nIFdlYkVkaXRD
b21tYW5kUHJveHk6Om5hbWVGb3JFZGl0QWN0aW9uKEVkaXRBY3Rpb24gZWRpdEFjdGlvbikKICAg
ICBjYXNlIEVkaXRBY3Rpb25JbnNlcnQ6CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBj
YXNlIEVkaXRBY3Rpb25TZXRDb2xvcjoKLSAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdfS0VZ
KCJTZXQgQ29sb3IiLCAiU2V0IENvbG9yIChVbmRvIGFjdGlvbiBuYW1lKSIsICJVbmRvIGFjdGlv
biBuYW1lIik7CisgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWSgiU2V0IENvbG9yIiwg
IlNldCBPcHRpb25hbFJHQkEgKFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUi
KTsKICAgICBjYXNlIEVkaXRBY3Rpb25TZXRCYWNrZ3JvdW5kQ29sb3I6Ci0gICAgICAgIHJldHVy
biBXRUJfVUlfU1RSSU5HX0tFWSgiU2V0IEJhY2tncm91bmQgQ29sb3IiLCAiU2V0IEJhY2tncm91
bmQgQ29sb3IgKFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsKKyAgICAg
ICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdfS0VZKCJTZXQgQmFja2dyb3VuZCBDb2xvciIsICJTZXQg
QmFja2dyb3VuZCBPcHRpb25hbFJHQkEgKFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9u
IG5hbWUiKTsKICAgICBjYXNlIEVkaXRBY3Rpb25UdXJuT2ZmS2VybmluZzoKICAgICAgICAgcmV0
dXJuIFdFQl9VSV9TVFJJTkdfS0VZKCJUdXJuIE9mZiBLZXJuaW5nIiwgIlR1cm4gT2ZmIEtlcm5p
bmcgKFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsKICAgICBjYXNlIEVk
aXRBY3Rpb25UaWdodGVuS2VybmluZzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggOWJlMTUzNjA4NmZiZmUxYTc2Y2UwZjJhNTU4NTNhMWRiOWIzNjRiYS4u
YzcxNmZjN2NmNzM2NTUzM2IxOTY4MzBmMTE5MGY0YWM1N2EyNGFlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM4OSw3ICszODksNyBAQCBXZWJQYWdl
UHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MsIHVpbgogICAgICwgbV9pc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChUZXh0
Q2hlY2tlcjo6aXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSkKICNlbmRpZgogI2lmIFBMQVRG
T1JNKEdUSykKLSAgICAsIG1fYmFja2dyb3VuZENvbG9yKENvbG9yOjp3aGl0ZSkKKyAgICAsIG1f
YmFja2dyb3VuZENvbG9yKE9wdGlvbmFsUkdCQTo6d2hpdGUpCiAjZW5kaWYKICAgICAsIG1fc3Bl
bGxEb2N1bWVudFRhZygwKQogICAgICwgbV9oYXNTcGVsbERvY3VtZW50VGFnKGZhbHNlKQpAQCAt
MTI1MSw3ICsxMjUxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFRvcENvbnRlbnRJbnNldChm
bG9hdCBjb250ZW50SW5zZXQpCiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0VG9wQ29udGVudEluc2V0KGNvbnRlbnRJbnNldCksIG1fcGFnZUlEKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OnNldFVuZGVybGF5Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQor
dm9pZCBXZWJQYWdlUHJveHk6OnNldFVuZGVybGF5Q29sb3IoY29uc3QgT3B0aW9uYWxSR0JBJiBj
b2xvcikKIHsKICAgICBpZiAobV91bmRlcmxheUNvbG9yID09IGNvbG9yKQogICAgICAgICByZXR1
cm47CkBAIC0zOTA4LDcgKzM5MDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQ29u
dGVudFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBF
X0NPTE9SKQotdm9pZCBXZWJQYWdlUHJveHk6OnNob3dDb2xvclBpY2tlcihjb25zdCBXZWJDb3Jl
OjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpzaG93Q29sb3JQaWNrZXIoY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JB
JiBpbml0aWFsQ29sb3IsIGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0KQogewogI2lmIEVOQUJM
RShJTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVIpCiAgICAgLy8gQSBuZXcgcG9wb3ZlciBjb2xvciB3
ZWxsIG5lZWRzIHRvIGJlIGNyZWF0ZWQgKGFuZCB0aGUgcHJldmlvdXMgb25lIGRlc3Ryb3llZCkg
Zm9yCkBAIC0zOTIwLDcgKzM5MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0NvbG9yUGlj
a2VyKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IEludAogICAgIG1f
Y29sb3JQaWNrZXItPnNob3dDb2xvclBpY2tlcihpbml0aWFsQ29sb3IpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6c2V0Q29sb3JQaWNrZXJDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29s
b3IpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29sb3JQaWNrZXJDb2xvcihjb25zdCBXZWJDb3Jl
OjpPcHRpb25hbFJHQkEmIGNvbG9yKQogewogICAgIEFTU0VSVChtX2NvbG9yUGlja2VyKTsKIApA
QCAtMzkzNCw3ICszOTM0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmVuZENvbG9yUGlja2VyKCkK
ICAgICBtX2NvbG9yUGlja2VyLT5lbmRQaWNrZXIoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OmRpZENob29zZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmIGNvbG9y
KQogewogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CkBAIC01NDMyLDcgKzU0
MzIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlUGFnZUNvdW50KHVuc2lnbmVkIHBh
Z2VDb3VudCkKICAgICBtX3BhZ2VDb3VudCA9IHBhZ2VDb3VudDsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZShjb25zdCBDb2xvciYg
YmFja2dyb3VuZENvbG9yKQordm9pZCBXZWJQYWdlUHJveHk6OnBhZ2VFeHRlbmRlZEJhY2tncm91
bmRDb2xvckRpZENoYW5nZShjb25zdCBPcHRpb25hbFJHQkEmIGJhY2tncm91bmRDb2xvcikKIHsK
ICAgICBtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvcjsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2M2I4YTZkNGI2YzFj
NDU4NGM4NjAxMGFlMjdmY2Y1YjI2OGUzZmE2Li40OWY1ZWU0YjE4YTAzNjlmOTllZmY1YmMzODI1
YzlhYjEwNjc4Zjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC00MDEsMTMgKzQwMSwxMyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgdG9wQ29udGVudEluc2V0KCkg
Y29uc3QgeyByZXR1cm4gbV90b3BDb250ZW50SW5zZXQ7IH0KICAgICB2b2lkIHNldFRvcENvbnRl
bnRJbnNldChmbG9hdCk7CiAKLSAgICBXZWJDb3JlOjpDb2xvciB1bmRlcmxheUNvbG9yKCkgY29u
c3QgeyByZXR1cm4gbV91bmRlcmxheUNvbG9yOyB9Ci0gICAgdm9pZCBzZXRVbmRlcmxheUNvbG9y
KGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CisgICAgV2ViQ29yZTo6T3B0aW9uYWxSR0JBIHVuZGVy
bGF5Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3VuZGVybGF5Q29sb3I7IH0KKyAgICB2b2lkIHNl
dFVuZGVybGF5Q29sb3IoY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJik7CiAKICAgICAvLyBB
dCB0aGlzIHRpbWUsIG1fcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yIGNhbiBiZSBzZXQgdmlh
IHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZSgpIHdoaWNoIGlzIGEgbWVzc2Fn
ZQogICAgIC8vIGZyb20gdGhlIFVJUHJvY2Vzcywgb3IgYnkgZGlkQ29tbWl0TGF5ZXJUcmVlKCku
IFdoZW4gUExBVEZPUk0oTUFDKSBhZG9wdHMgVUkgc2lkZSBjb21wb3NpdGluZywgd2Ugc2hvdWxk
IGdldCByaWQgb2YKICAgICAvLyB0aGUgbWVzc2FnZSBlbnRpcmVseS4KLSAgICBXZWJDb3JlOjpD
b2xvciBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VF
eHRlbmRlZEJhY2tncm91bmRDb2xvcjsgfQorICAgIFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSBwYWdl
RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VFeHRlbmRlZEJh
Y2tncm91bmRDb2xvcjsgfQogCiAgICAgdm9pZCB2aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwog
ICAgIHZvaWQgdmlld1dpbGxFbmRMaXZlUmVzaXplKCk7CkBAIC02MDcsOCArNjA3LDggQEAgcHVi
bGljOgogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFBsYXRmb3JtV2lkZ2V0IHZpZXdXaWRnZXQo
KTsKLSAgICBjb25zdCBXZWJDb3JlOjpDb2xvciYgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihj
b25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsg
fQorICAgIGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYgYmFja2dyb3VuZENvbG9yKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRD
b2xvcihjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmIGNvbG9yKSB7IG1fYmFja2dyb3VuZENv
bG9yID0gY29sb3I7IH0KICNlbmRpZgogCiAgICAgdm9pZCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0
IE5hdGl2ZVdlYk1vdXNlRXZlbnQmKTsKQEAgLTk2OSw3ICs5NjksNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFt
ZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5KTsKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQotICAgIHZvaWQgc2V0Q29sb3JQaWNrZXJDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYp
OworICAgIHZvaWQgc2V0Q29sb3JQaWNrZXJDb2xvcihjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJH
QkEmKTsKICAgICB2b2lkIGVuZENvbG9yUGlja2VyKCk7CiAjZW5kaWYKIApAQCAtMTIxMyw3ICsx
MjEzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZVNjcm9sbGJhcnNGb3JNYWluRnJh
bWUoYm9vbCBoYXNIb3Jpem9udGFsU2Nyb2xsYmFyLCBib29sIGhhc1ZlcnRpY2FsU2Nyb2xsYmFy
KTsKICAgICB2b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNldFBpbm5pbmdGb3JNYWluRnJhbWUoYm9v
bCBwaW5uZWRUb0xlZnRTaWRlLCBib29sIHBpbm5lZFRvUmlnaHRTaWRlLCBib29sIHBpbm5lZFRv
VG9wU2lkZSwgYm9vbCBwaW5uZWRUb0JvdHRvbVNpZGUpOwogICAgIHZvaWQgZGlkQ2hhbmdlUGFn
ZUNvdW50KHVuc2lnbmVkKTsKLSAgICB2b2lkIHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRp
ZENoYW5nZShjb25zdCBXZWJDb3JlOjpDb2xvciYpOworICAgIHZvaWQgcGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYpOwogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIHZvaWQgZGlkRmFpbFRvSW5pdGlhbGl6
ZVBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcpOwogICAgIHZvaWQgZGlkQmxvY2tJbnNl
Y3VyZVBsdWdpblZlcnNpb24oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBw
bHVnaW5VUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcGFnZVVSTFN0cmluZywgYm9vbCByZXBsYWNlbWVudE9ic2N1cmVkKTsKQEAgLTEyMzksOCAr
MTIzOSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJik7CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICB2
b2lkIHNob3dDb2xvclBpY2tlcihjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENob29zZUNvbG9y
KGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzaG93Q29sb3JQaWNr
ZXIoY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2Vi
Q29yZTo6T3B0aW9uYWxSR0JBJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZENv
bG9yUGlja2VyKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIApAQCAtMTQxMSw3ICsxNDExLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHJlc3RvcmVQYWdlU3RhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgZG91YmxlIHNjYWxlKTsKICAgICB2b2lkIHJlc3RvcmVQYWdlQ2VudGVyQW5kU2NhbGUoY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGRvdWJsZSBzY2FsZSk7CiAKLSAgICB2b2lkIGRpZEdl
dFRhcEhpZ2hsaWdodEdlb21ldHJpZXModWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3Jl
OjpDb2xvciYgY29sb3IsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+JiBnZW9tZXRy
aWVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90dG9t
TGVmdFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMpOwor
ICAgIHZvaWQgZGlkR2V0VGFwSGlnaGxpZ2h0R2VvbWV0cmllcyh1aW50NjRfdCByZXF1ZXN0SUQs
IGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYgY29sb3IsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpGbG9hdFF1YWQ+JiBnZW9tZXRyaWVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0b3BMZWZ0
UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
Ym90dG9tUmlnaHRSYWRpdXMpOwogCiAgICAgdm9pZCBzdGFydEFzc2lzdGluZ05vZGUoY29uc3Qg
QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24mLCBib29sIHVzZXJJc0ludGVyYWN0aW5nLCBib29sIGJs
dXJQcmV2aW91c05vZGUsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBzdG9wQXNzaXN0aW5n
Tm9kZSgpOwpAQCAtMTYxNCw4ICsxNjE0LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fZHJhd3NC
YWNrZ3JvdW5kOwogICAgIGJvb2wgbV9kcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZDsKIAotICAg
IFdlYkNvcmU6OkNvbG9yIG1fdW5kZXJsYXlDb2xvcjsKLSAgICBXZWJDb3JlOjpDb2xvciBtX3Bh
Z2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcjsKKyAgICBXZWJDb3JlOjpPcHRpb25hbFJHQkEgbV91
bmRlcmxheUNvbG9yOworICAgIFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSBtX3BhZ2VFeHRlbmRlZEJh
Y2tncm91bmRDb2xvcjsKIAogICAgIGJvb2wgbV91c2VGaXhlZExheW91dDsKICAgICBXZWJDb3Jl
OjpJbnRTaXplIG1fZml4ZWRMYXlvdXRTaXplOwpAQCAtMTY4Niw3ICsxNjg2LDcgQEAgcHJpdmF0
ZToKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBTdHJpbmcgbV9hY2Nlc3NpYmlsaXR5UGx1Z0lE
OwotICAgIFdlYkNvcmU6OkNvbG9yIG1fYmFja2dyb3VuZENvbG9yOworICAgIFdlYkNvcmU6Ok9w
dGlvbmFsUkdCQSBtX2JhY2tncm91bmRDb2xvcjsKICNlbmRpZgogCiAgICAgaW50NjRfdCBtX3Nw
ZWxsRG9jdW1lbnRUYWc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgppbmRleCBkNWNjMjExZDEzYjM1OTQwOTU1MGFhNTg1OWNjYTExYTVh
ZTYzYTg4Li5iZGVmZmY4YjUyNDU1M2RjN2Q4ZTY5OGY1NDM1OWI1NDI1YjIxMmI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAg
LTgzLDcgKzgzLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRDaGFuZ2VT
Y3JvbGxiYXJzRm9yTWFpbkZyYW1lKGJvb2wgaGFzSG9yaXpvbnRhbFNjcm9sbGJhciwgYm9vbCBo
YXNWZXJ0aWNhbFNjcm9sbGJhcikKICAgICBEaWRDaGFuZ2VTY3JvbGxPZmZzZXRQaW5uaW5nRm9y
TWFpbkZyYW1lKGJvb2wgcGlubmVkVG9MZWZ0U2lkZSwgYm9vbCBwaW5uZWRUb1JpZ2h0U2lkZSwg
Ym9vbCBwaW5uZWRUb1RvcFNpZGUsIGJvb2wgcGlubmVkVG9Cb3R0b21TaWRlKQogICAgIERpZENo
YW5nZVBhZ2VDb3VudCh1bnNpZ25lZCBwYWdlQ291bnQpCi0gICAgUGFnZUV4dGVuZGVkQmFja2dy
b3VuZENvbG9yRGlkQ2hhbmdlKFdlYkNvcmU6OkNvbG9yIGJhY2tncm91bmRDb2xvcikKKyAgICBQ
YWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoV2ViQ29yZTo6T3B0aW9uYWxSR0JB
IGJhY2tncm91bmRDb2xvcikKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBE
aWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luKFN0cmluZyBtaW1lVHlwZSwgU3RyaW5nIGZyYW1lVVJM
U3RyaW5nLCBTdHJpbmcgcGFnZVVSTFN0cmluZykKICAgICBEaWRCbG9ja0luc2VjdXJlUGx1Z2lu
VmVyc2lvbihTdHJpbmcgbWltZVR5cGUsIFN0cmluZyBwbHVnaW5VUkxTdHJpbmcsIFN0cmluZyBm
cmFtZVVSTFN0cmluZywgU3RyaW5nIHBhZ2VVUkxTdHJpbmcsIGJvb2wgcmVwbGFjZW1lbnRPYnNj
dXJlZCkKQEAgLTEwMyw4ICsxMDMsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAg
IERpZENoYW5nZUNvbnRlbnRTaXplKFdlYkNvcmU6OkludFNpemUgbmV3U2l6ZSkKIAogI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIFNob3dDb2xvclBpY2tlcihXZWJDb3JlOjpDb2xv
ciBpbml0aWFsQ29sb3IsIFdlYkNvcmU6OkludFJlY3QgZWxlbWVudFJlY3QpOwotICAgIFNldENv
bG9yUGlja2VyQ29sb3IoV2ViQ29yZTo6Q29sb3IgY29sb3IpOworICAgIFNob3dDb2xvclBpY2tl
cihXZWJDb3JlOjpPcHRpb25hbFJHQkEgaW5pdGlhbENvbG9yLCBXZWJDb3JlOjpJbnRSZWN0IGVs
ZW1lbnRSZWN0KTsKKyAgICBTZXRDb2xvclBpY2tlckNvbG9yKFdlYkNvcmU6Ok9wdGlvbmFsUkdC
QSBjb2xvcik7CiAgICAgRW5kQ29sb3JQaWNrZXIoKTsKICNlbmRpZgogCkBAIC0zNjIsNyArMzYy
LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBDb3VsZE5vdFJlc3RvcmVQYWdl
U3RhdGUoKQogICAgIFJlc3RvcmVQYWdlU3RhdGUoV2ViQ29yZTo6RmxvYXRSZWN0IGV4cG9zZWRS
ZWN0LCBkb3VibGUgc2NhbGUpCiAgICAgUmVzdG9yZVBhZ2VDZW50ZXJBbmRTY2FsZShXZWJDb3Jl
OjpGbG9hdFBvaW50IHVub2JzY3VyZWRDZW50ZXIsIGRvdWJsZSBzY2FsZSkKLSAgICBEaWRHZXRU
YXBIaWdobGlnaHRHZW9tZXRyaWVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6Q29sb3Ig
Y29sb3IsIFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+IGdlb21ldHJpZXMsIFdlYkNvcmU6Oklu
dFNpemUgdG9wTGVmdFJhZGl1cywgV2ViQ29yZTo6SW50U2l6ZSB0b3BSaWdodFJhZGl1cywgV2Vi
Q29yZTo6SW50U2l6ZSBib3R0b21MZWZ0UmFkaXVzLCBXZWJDb3JlOjpJbnRTaXplIGJvdHRvbVJp
Z2h0UmFkaXVzKQorICAgIERpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXModWludDY0X3QgcmVx
dWVzdElELCBXZWJDb3JlOjpPcHRpb25hbFJHQkEgY29sb3IsIFZlY3RvcjxXZWJDb3JlOjpGbG9h
dFF1YWQ+IGdlb21ldHJpZXMsIFdlYkNvcmU6OkludFNpemUgdG9wTGVmdFJhZGl1cywgV2ViQ29y
ZTo6SW50U2l6ZSB0b3BSaWdodFJhZGl1cywgV2ViQ29yZTo6SW50U2l6ZSBib3R0b21MZWZ0UmFk
aXVzLCBXZWJDb3JlOjpJbnRTaXplIGJvdHRvbVJpZ2h0UmFkaXVzKQogCiAgICAgU3RhcnRBc3Np
c3RpbmdOb2RlKHN0cnVjdCBXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9ybWF0aW9uIGluZm9ybWF0
aW9uLCBib29sIHVzZXJJc0ludGVyYWN0aW5nLCBib29sIGJsdXJQcmV2aW91c05vZGUsIFdlYktp
dDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgU3RvcEFzc2lzdGluZ05vZGUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCmluZGV4IDQ5NGFhYzlmODA5
Njg3NGNjMDU1ZmJhODQzN2RlNTI2NjdmYTIzMGYuLjJlOTAwYWM3YWI3ZGM5YzJhOTQ3YjIwZDUy
NzU2ZTk2MDZhOGI2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YXN0ZWJvYXJkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFzdGVi
b2FyZFByb3h5LmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENvbG9yOworY2xhc3MgT3B0aW9uYWxSR0JBOwog
c3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKIH0K
QEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhc3RlYm9hcmRDb3B5KGNvbnN0
IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0IFN0cmluZyYgdG9QYXN0ZWJvYXJkLCB1aW50
NjRfdCYgbmV3Q2hhbmdlQ291bnQpOwogICAgIHZvaWQgZ2V0UGFzdGVib2FyZENoYW5nZUNvdW50
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHVpbnQ2NF90JiBjaGFuZ2VDb3VudCk7CiAg
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkVW5pcXVlTmFtZShTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsK
LSAgICB2b2lkIGdldFBhc3RlYm9hcmRDb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBXZWJDb3JlOjpDb2xvciYpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZENvbG9yKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYpOwogICAgIHZvaWQg
Z2V0UGFzdGVib2FyZFVSTChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXVEY6OlN0cmlu
ZyYpOwogICAgIHZvaWQgYWRkUGFzdGVib2FyZFR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIHVpbnQ2NF90JiBu
ZXdDaGFuZ2VDb3VudCk7CiAgICAgdm9pZCBzZXRQYXN0ZWJvYXJkVHlwZXMoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
dWludDY0X3QmIG5ld0NoYW5nZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGQwZDlmYTEyZTQ1
YTVkY2JmZDU2MjJlODAzOThlYzg2OTNiZjc0MWIuLmNmOGNlNjU0ZGUwNWI0ZjMwNWIwY2NlYjYw
MzU4YWY0ODI5MmY3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDAsNyArNDAsNyBAQCBtZXNzYWdl
cyAtPiBXZWJQYXN0ZWJvYXJkUHJveHkgewogICAgIFBhc3RlYm9hcmRDb3B5KFN0cmluZyBmcm9t
UGFzdGVib2FyZCwgU3RyaW5nIHRvUGFzdGVib2FyZCkgLT4gKHVpbnQ2NF90IGNoYW5nZUNvdW50
KQogICAgIEdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+
ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkKICAgICBHZXRQYXN0ZWJvYXJkVW5pcXVlTmFtZSgpIC0+
IChTdHJpbmcgcGFzdGVib2FyZE5hbWUpCi0gICAgR2V0UGFzdGVib2FyZENvbG9yKFN0cmluZyBw
YXN0ZWJvYXJkTmFtZSkgLT4gKFdlYkNvcmU6OkNvbG9yIGNvbG9yKQorICAgIEdldFBhc3RlYm9h
cmRDb2xvcihTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChXZWJDb3JlOjpPcHRpb25hbFJHQkEg
Y29sb3IpCiAgICAgR2V0UGFzdGVib2FyZFVSTChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChT
dHJpbmcgdXJsU3RyaW5nKQogICAgIEFkZFBhc3RlYm9hcmRUeXBlcyhTdHJpbmcgcGFzdGVib2Fy
ZE5hbWUsIFZlY3RvcjxTdHJpbmc+IHBhc3RlYm9hcmRUeXBlcykgLT4gKHVpbnQ2NF90IGNoYW5n
ZUNvdW50KQogICAgIFNldFBhc3RlYm9hcmRUeXBlcyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFZl
Y3RvcjxTdHJpbmc+IHBhc3RlYm9hcmRUeXBlcykgLT4gKHVpbnQ2NF90IGNoYW5nZUNvdW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNh
aXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWly
by5jcHAKaW5kZXggMmZiMzBiNWM3ZDIyMzRmN2YxOWU4ZDIxYmMyZjg2NjBhZjliZDZjZS4uYzQ3
NTU5NmE1MzczMmMwZTY4ZDMwOWY2ZGVlZGM2NTkyYWIwMDdhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCkBAIC05OSw3
ICs5OSw3IEBAIHZvaWQgQmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZShTaGFyZWFibGVC
aXRtYXAqIGJpdG1hcCwgY29uc3QgVXBkYXRlSW5mbyYKICAgICAgICAgc3JjUmVjdC5tb3ZlKC11
cGRhdGVSZWN0TG9jYXRpb24ueCgpLCAtdXBkYXRlUmVjdExvY2F0aW9uLnkoKSk7CiAjaWYgUExB
VEZPUk0oR1RLKQogICAgICAgICBpZiAoIW1fd2ViUGFnZVByb3h5LmRyYXdzQmFja2dyb3VuZCgp
KSB7Ci0gICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpDb2xvciBjb2xvciA9IG1fd2ViUGFnZVBy
b3h5LmJhY2tncm91bmRDb2xvcigpOworICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6T3B0aW9u
YWxSR0JBIGNvbG9yID0gbV93ZWJQYWdlUHJveHkuYmFja2dyb3VuZENvbG9yKCk7CiAgICAgICAg
ICAgICBpZiAoY29sb3IuaGFzQWxwaGEoKSkKICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQuY2xlYXJSZWN0KHNyY1JlY3QpOwogICAgICAgICAgICAgaWYgKGNvbG9yLmFscGhhKCkgPiAw
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9JbnB1dE1ldGhvZENv
bnRleHRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9JbnB1dE1ldGhvZENv
bnRleHRFZmwuY3BwCmluZGV4IGYyYjJhYjkyY2MyMzU3YmZjZDRiZjgwNWE2YTBhOTBiN2U2NDJj
MDMuLjdiNjE1NWYzNTYyZmFjNzliZDdmMWM4NDE2OWJhODA2MTQ2YmIyYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvSW5wdXRNZXRob2RDb250ZXh0RWZsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0lucHV0TWV0aG9kQ29udGV4dEVmbC5j
cHAKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBJbnB1dE1ldGhvZENvbnRleHRFZmw6Om9uSU1GUHJl
ZWRpdFNlcXVlbmNlQ2hhbmdlZCh2b2lkKiBkYXRhLCBFY29yZV9JTUZfQ28KICAgICBTdHJpbmcg
cHJlZWRpdFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyKTsKICAgICBmcmVlKGJ1ZmZl
cik7CiAgICAgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzOwotICAgIHVu
ZGVybGluZXMuYXBwZW5kKENvbXBvc2l0aW9uVW5kZXJsaW5lKDAsIHByZWVkaXRTdHJpbmcubGVu
Z3RoKCksIENvbG9yKDAsIDAsIDApLCBmYWxzZSkpOworICAgIHVuZGVybGluZXMuYXBwZW5kKENv
bXBvc2l0aW9uVW5kZXJsaW5lKDAsIHByZWVkaXRTdHJpbmcubGVuZ3RoKCksIE9wdGlvbmFsUkdC
QSgwLCAwLCAwKSwgZmFsc2UpKTsKICAgICBpbnB1dE1ldGhvZENvbnRleHQtPm1fdmlldy0+cGFn
ZSgpLT5zZXRDb21wb3NpdGlvbihwcmVlZGl0U3RyaW5nLCB1bmRlcmxpbmVzLCAwKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5jcHAKaW5kZXgg
ODk4YTMyYWYyZDM4NmY3NTRlNTc1MTgyZWM4ODQ5YzA1YmE4NWMxMC4uODE4MWE3Njk3YzBkM2Uw
Zjg2MzE5ZGMwMmIzOTI1OTcwYzZmMGMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1ZpZXdDbGllbnRFZmwuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBWaWV3Q2xp
ZW50RWZsOjpkb25lV2l0aFRvdWNoRXZlbnQoV0tWaWV3UmVmLCBXS1RvdWNoRXZlbnRSZWYgZXZl
bnQsIGJvb2wgd2EKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKIHZvaWQgVmlld0NsaWVu
dEVmbDo6c2hvd0NvbG9yUGlja2VyKFdLVmlld1JlZiwgV0tTdHJpbmdSZWYgY29sb3JTdHJpbmcs
IFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKIHsKLSAgICBXZWJDb3JlOjpDb2xvciBjb2xvciA9IFdlYkNvcmU6OkNvbG9yKFdl
YktpdDo6dG9XVEZTdHJpbmcoY29sb3JTdHJpbmcpKTsKKyAgICBXZWJDb3JlOjpPcHRpb25hbFJH
QkEgY29sb3IgPSBXZWJDb3JlOjpPcHRpb25hbFJHQkEoV2ViS2l0Ojp0b1dURlN0cmluZyhjb2xv
clN0cmluZykpOwogICAgIHRvRXdrVmlldyhjbGllbnRJbmZvKS0+cmVxdWVzdENvbG9yUGlja2Vy
KGxpc3RlbmVyLCBjb2xvcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViQ29sb3JQaWNrZXJFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJDb2xvclBpY2tlckVmbC5jcHAKaW5kZXggMDVkMTZkZDQ3MDU3ZjZjYTY4MTI2YWFj
M2RkN2UxOTVhZmNiZGY3Mi4uYTc5ZDJkODJkZTRhOTFlNGNmZTA4NjYyZjMyM2UyMDMzOTJlNzE2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvclBpY2tl
ckVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvclBpY2tl
ckVmbC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYkNv
bG9yUGlja2VyRWZsOjpXZWJDb2xvclBpY2tlckVmbChXZWJWaWV3RWZsKiB3ZWJWaWV3LCBXZWJD
b2xvclBpY2tlcjo6Q2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJikKK1dlYkNv
bG9yUGlja2VyRWZsOjpXZWJDb2xvclBpY2tlckVmbChXZWJWaWV3RWZsKiB3ZWJWaWV3LCBXZWJD
b2xvclBpY2tlcjo6Q2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYp
CiAgICAgOiBXZWJDb2xvclBpY2tlcihjbGllbnQpCiAgICAgLCBtX3dlYlZpZXcod2ViVmlldykK
IHsKQEAgLTQ1LDE3ICs0NSwxNyBAQCB2b2lkIFdlYkNvbG9yUGlja2VyRWZsOjplbmRQaWNrZXIo
KQogICAgIG1fd2ViVmlldy0+Y29sb3JQaWNrZXJDbGllbnQoKS5lbmRQaWNrZXIobV93ZWJWaWV3
KTsKIH0KIAotdm9pZCBXZWJDb2xvclBpY2tlckVmbDo6c2hvd0NvbG9yUGlja2VyKGNvbnN0IFdl
YkNvcmU6OkNvbG9yJiBjb2xvcikKK3ZvaWQgV2ViQ29sb3JQaWNrZXJFZmw6OnNob3dDb2xvclBp
Y2tlcihjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmIGNvbG9yKQogewogICAgIG1fd2ViVmll
dy0+Y29sb3JQaWNrZXJDbGllbnQoKS5zaG93Q29sb3JQaWNrZXIobV93ZWJWaWV3LCBjb2xvci5z
ZXJpYWxpemVkKCksIHRvQVBJKG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5nZXQoKSkpOwog
fQogCi12b2lkIFdlYkNvbG9yUGlja2VyRWZsOjpzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNv
cmU6OkNvbG9yJikKK3ZvaWQgV2ViQ29sb3JQaWNrZXJFZmw6OnNldFNlbGVjdGVkQ29sb3IoY29u
c3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
Ci12b2lkIFdlYkNvbG9yUGlja2VyRWZsOjpkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpD
b2xvciYgY29sb3IpCit2b2lkIFdlYkNvbG9yUGlja2VyRWZsOjpkaWRDaG9vc2VDb2xvcihjb25z
dCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmIGNvbG9yKQogewogICAgIGlmICghbV9jbGllbnQpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViQ29sb3JQaWNrZXJFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29s
b3JQaWNrZXJFZmwuaAppbmRleCBlN2MyOTE0YzJmZGY5MmQ3NGI0YjA3ZjdjMzA2OTM1NTQ0OTYx
YWE4Li4xNGMyMTM5YmFjYjBhYzg4NzMyZjI1OWExOTZkNzIyMjY0OWQ0MDE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yUGlja2VyRWZsLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvclBpY2tlckVmbC5oCkBAIC0zNSwy
MCArMzUsMjAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkNvbG9yUGlja2VyRWZs
IDogcHVibGljIFdlYkNvbG9yUGlja2VyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJDb2xvclBpY2tlckVmbD4gY3JlYXRlKFdlYlZpZXdFZmwqIHdlYlZpZXcsIFdlYkNvbG9y
UGlja2VyOjpDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xv
cikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlckVmbD4gY3JlYXRlKFdlYlZp
ZXdFZmwqIHdlYlZpZXcsIFdlYkNvbG9yUGlja2VyOjpDbGllbnQqIGNsaWVudCwgY29uc3QgV2Vi
Q29yZTo6T3B0aW9uYWxSR0JBJiBpbml0aWFsQ29sb3IpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYkNvbG9yUGlja2VyRWZsKHdlYlZpZXcsIGNsaWVudCwgaW5pdGlhbENv
bG9yKSk7CiAgICAgfQogICAgIH5XZWJDb2xvclBpY2tlckVmbCgpIHsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGVuZFBpY2tlcigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3Rl
ZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHNob3dDb2xvclBpY2tlcihjb25zdCBXZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzaG93Q29sb3JQaWNrZXIoY29uc3QgV2ViQ29y
ZTo6T3B0aW9uYWxSR0JBJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZENob29zZUNvbG9yKGNv
bnN0IFdlYkNvcmU6OkNvbG9yJik7CisgICAgdm9pZCBkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJD
b3JlOjpPcHRpb25hbFJHQkEmKTsKIAogcHJpdmF0ZToKLSAgICBXZWJDb2xvclBpY2tlckVmbChX
ZWJWaWV3RWZsKiwgV2ViQ29sb3JQaWNrZXI6OkNsaWVudCosIGNvbnN0IFdlYkNvcmU6OkNvbG9y
Jik7CisgICAgV2ViQ29sb3JQaWNrZXJFZmwoV2ViVmlld0VmbCosIFdlYkNvbG9yUGlja2VyOjpD
bGllbnQqLCBjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmKTsKIAogICAgIFdlYlZpZXdFZmwq
IG1fd2ViVmlldzsKICAgICBSZWZQdHI8V2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5
PiBtX2NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQ
cm94eS5jcHAKaW5kZXggYTQ3ZjBkMGE0MDA0ZGY5ZDZlYTY5YTUyOTM4Njk3MTMwYzYwMTZmNy4u
ZTFkYjM4MGFjODk0OGU3YjRjNGYzODYwMzc1MGVmZjgyMjQ1OTU0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29sb3JQaWNrZXJS
ZXN1bHRMaXN0ZW5lclByb3h5LmNwcApAQCAtNTIsNyArNTIsNyBAQCB2b2lkIFdlYkNvbG9yUGlj
a2VyUmVzdWx0TGlzdGVuZXJQcm94eTo6c2V0Q29sb3IoY29uc3QgU3RyaW5nJiBjb2xvcikKICAg
ICBpZiAoIW1fY29sb3JQaWNrZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29sb3JQaWNr
ZXItPmRpZENob29zZUNvbG9yKFdlYkNvcmU6OkNvbG9yKGNvbG9yKSk7CisgICAgbV9jb2xvclBp
Y2tlci0+ZGlkQ2hvb3NlQ29sb3IoV2ViQ29yZTo6T3B0aW9uYWxSR0JBKGNvbG9yKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJWaWV3RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
Vmlld0VmbC5jcHAKaW5kZXggYjU1NzA3OGI2NmE4OGI2ODQzYjA3ZTgyZTRjMTU3OTJiZDBiOGNk
ZS4uNjNhNWFiMGFmNTM2ODkzYWEwMTNjZmViYjA2MjFkMWQ2ZDBiZmY5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAg
dm9pZCBXZWJWaWV3RWZsOjpzZW5kTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX01v
dmUqIGV2ZW50KQogICAgIG1fcGFnZS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2
ZW50KGV2ZW50LCB0cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgbV91c2VyVmlld3BvcnRUcmFuc2Zvcm0u
dG9BZmZpbmVUcmFuc2Zvcm0oKSkpOwogfQogCi12b2lkIFdlYlZpZXdFZmw6OnNldFZpZXdCYWNr
Z3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQordm9pZCBXZWJWaWV3RWZs
OjpzZXRWaWV3QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYgY29s
b3IpCiB7CiAgICAgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBzY2VuZSA9IGNvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZSgpOwogICAgIGlmICghc2NlbmUpCkBAIC0xNTcsMTEgKzE1NywxMSBAQCB2
b2lkIFdlYlZpZXdFZmw6OnNldFZpZXdCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29s
b3ImIGNvbG9yKQogICAgIHNjZW5lLT5zZXRWaWV3QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKIH0K
IAotV2ViQ29yZTo6Q29sb3IgV2ViVmlld0VmbDo6dmlld0JhY2tncm91bmRDb2xvcigpCitXZWJD
b3JlOjpPcHRpb25hbFJHQkEgV2ViVmlld0VmbDo6dmlld0JhY2tncm91bmRDb2xvcigpCiB7CiAg
ICAgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBzY2VuZSA9IGNvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZSgpOwogICAgIGlmICghc2NlbmUpCi0gICAgICAgIHJldHVybiBDb2xvcigpOworICAgICAg
ICByZXR1cm4gT3B0aW9uYWxSR0JBKCk7CiAKICAgICByZXR1cm4gc2NlbmUtPnZpZXdCYWNrZ3Jv
dW5kQ29sb3IoKTsKIH0KQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFdlYlZpZXdFZmw6OmluaXRp
YWxpemVDb2xvclBpY2tlckNsaWVudChjb25zdCBXS0NvbG9yUGlja2VyQ2xpZW50QmFzZSogY2xp
ZQogICAgIG1fY29sb3JQaWNrZXJDbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOwogfQogCi1SZWZQ
dHI8V2ViQ29sb3JQaWNrZXI+IFdlYlZpZXdFZmw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQ
cm94eSogcGFnZSwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JikKK1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gV2ViVmlld0VmbDo6Y3JlYXRlQ29sb3JQ
aWNrZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmIGNv
bG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKIHsKICAgICByZXR1cm4gV2ViQ29sb3JQaWNr
ZXJFZmw6OmNyZWF0ZSh0aGlzLCBwYWdlLCBjb2xvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViVmlld0VmbC5oCmluZGV4IGQxMWExZmU4NWZhOWI4Zjc3MmM4ODMwYzA1MGNj
NmQ2ZmI3NTgwMWEuLmI4NzYyZTcwYTEyOTE2Zjk1NDVjMjc4M2IzYWVjZTU3ZTYxYTBjNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5oCkBAIC01NywxMSArNTcs
MTEgQEAgcHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbG9yUGlja2VyQ2xpZW50KGNvbnN0
IFdLQ29sb3JQaWNrZXJDbGllbnRCYXNlKik7CiAKICAgICBXZWJDb2xvclBpY2tlckNsaWVudCYg
Y29sb3JQaWNrZXJDbGllbnQoKSB7IHJldHVybiBtX2NvbG9yUGlja2VyQ2xpZW50OyB9Ci0gICAg
dmlydHVhbCBSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQ
cm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBp
Y2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0Vmlld0Jh
Y2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwotICAgIFdlYkNvcmU6OkNvbG9y
IHZpZXdCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICB2b2lkIHNldFZpZXdCYWNrZ3JvdW5kQ29sb3Io
Y29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJik7CisgICAgV2ViQ29yZTo6T3B0aW9uYWxSR0JB
IHZpZXdCYWNrZ3JvdW5kQ29sb3IoKTsKIHByaXZhdGU6CiAgICAgV2ViVmlld0VmbChXZWJQcm9j
ZXNzUG9vbCosIFdlYlBhZ2VHcm91cCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL0lucHV0TWV0aG9kRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvSW5wdXRNZXRob2RGaWx0ZXIuY3BwCmluZGV4IDAwNzRiMzgzZjQ5ZTdlN2QzNjMz
OWY0NmIzZDhlY2I0ZDlhZDliMTIuLjVhOWEwMjhhMTkyZDNmZjE2ZDkzODc4ZDM4N2UyMzFhMmE3
NWMyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvSW5wdXRNZXRo
b2RGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvSW5wdXRNZXRo
b2RGaWx0ZXIuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBJbnB1dE1ldGhvZEZpbHRlcjo6
aGFuZGxlS2V5Ym9hcmRFdmVudFdpdGhDb21wb3NpdGlvblJlc3VsdHMoR2RrRXZlbnRLZXkqIGUK
ICAgICAgICAgbV9wYWdlLT5jb25maXJtQ29tcG9zaXRpb24obV9jb25maXJtZWRDb21wb3NpdGlv
biwgLTEsIDApOwogCiAgICAgaWYgKHJlc3VsdHNUb1NlbmQgJiBQcmVlZGl0ICYmICFtX3ByZWVk
aXQuaXNOdWxsKCkpIHsKLSAgICAgICAgbV9wYWdlLT5zZXRDb21wb3NpdGlvbihtX3ByZWVkaXQs
IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT57IENvbXBvc2l0aW9uVW5kZXJsaW5lKDAsIG1f
cHJlZWRpdC5sZW5ndGgoKSwgQ29sb3IoMSwgMSwgMSksIGZhbHNlKSB9LAorICAgICAgICBtX3Bh
Z2UtPnNldENvbXBvc2l0aW9uKG1fcHJlZWRpdCwgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5l
PnsgQ29tcG9zaXRpb25VbmRlcmxpbmUoMCwgbV9wcmVlZGl0Lmxlbmd0aCgpLCBPcHRpb25hbFJH
QkEoMSwgMSwgMSksIGZhbHNlKSB9LAogICAgICAgICAgICAgbV9jdXJzb3JPZmZzZXQsIG1fY3Vy
c29yT2Zmc2V0LCAwIC8qIHJlcGxhY2VtZW50IHN0YXJ0ICovLCAwIC8qIHJlcGxhY2VtZW50IGVu
ZCAqLyk7CiAgICAgfQogfQpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgSW5wdXRNZXRob2RGaWx0
ZXI6OnVwZGF0ZVByZWVkaXQoKQogICAgIH0KICNlbmRpZgogICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgcGFyc2UgdGhlIFBhbmdvQXR0ckxpc3QgdGhhdCB3ZSBnZXQgZnJvbSB0aGUgSU0gY29udGV4
dCBoZXJlLgotICAgIG1fcGFnZS0+c2V0Q29tcG9zaXRpb24obV9wcmVlZGl0LCBWZWN0b3I8Q29t
cG9zaXRpb25VbmRlcmxpbmU+eyBDb21wb3NpdGlvblVuZGVybGluZSgwLCBtX3ByZWVkaXQubGVu
Z3RoKCksIENvbG9yKDEsIDEsIDEpLCBmYWxzZSkgfSwKKyAgICBtX3BhZ2UtPnNldENvbXBvc2l0
aW9uKG1fcHJlZWRpdCwgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPnsgQ29tcG9zaXRpb25V
bmRlcmxpbmUoMCwgbV9wcmVlZGl0Lmxlbmd0aCgpLCBPcHRpb25hbFJHQkEoMSwgMSwgMSksIGZh
bHNlKSB9LAogICAgICAgICBtX2N1cnNvck9mZnNldCwgbV9jdXJzb3JPZmZzZXQsIDAgLyogcmVw
bGFjZW1lbnQgc3RhcnQgKi8sIDAgLyogcmVwbGFjZW1lbnQgZW5kICovKTsKICAgICBtX3ByZWVk
aXRDaGFuZ2VkID0gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYkNvbG9yUGlja2VyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvV2ViQ29sb3JQaWNrZXJHdGsuY3BwCmluZGV4IDMyZGZlODJlY2Q2YzY1MjNiYTU1ZjA1M2Ew
MjQzMGVjNDhiMTc1YTAuLmE1OGFiZGVmYzgzNzkzMmM2YThkMTQ1MjBhMDI3NGI2ZGI5M2Y2N2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29sb3JQaWNrZXJH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29sb3JQaWNrZXJH
dGsuY3BwCkBAIC0zNywxMiArMzcsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1SZWY8V2ViQ29sb3JQaWNrZXJHdGs+IFdlYkNvbG9yUGlja2Vy
R3RrOjpjcmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9y
LCBjb25zdCBJbnRSZWN0JiByZWN0KQorUmVmPFdlYkNvbG9yUGlja2VyR3RrPiBXZWJDb2xvclBp
Y2tlckd0azo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgT3B0aW9uYWxSR0JBJiBp
bml0aWFsQ29sb3IsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViQ29sb3JQaWNrZXJHdGsocGFnZSwgaW5pdGlhbENvbG9yLCByZWN0KSk7CiB9CiAK
LVdlYkNvbG9yUGlja2VyR3RrOjpXZWJDb2xvclBpY2tlckd0ayhXZWJQYWdlUHJveHkmIHBhZ2Us
IGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IEludFJlY3QmKQorV2ViQ29sb3JQaWNr
ZXJHdGs6OldlYkNvbG9yUGlja2VyR3RrKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgT3B0aW9u
YWxSR0JBJiBpbml0aWFsQ29sb3IsIGNvbnN0IEludFJlY3QmKQogICAgIDogV2ViQ29sb3JQaWNr
ZXIoJnBhZ2UpCiAgICAgLCBtX2luaXRpYWxDb2xvcihpbml0aWFsQ29sb3IpCiAgICAgLCBtX3dl
YlZpZXcocGFnZS52aWV3V2lkZ2V0KCkpCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgV2ViQ29sb3JQ
aWNrZXJHdGs6OmVuZFBpY2tlcigpCiAgICAgbV9jb2xvckNob29zZXIgPSBudWxscHRyOwogfQog
Ci12b2lkIFdlYkNvbG9yUGlja2VyR3RrOjpkaWRDaG9vc2VDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpCit2b2lkIFdlYkNvbG9yUGlja2VyR3RrOjpkaWRDaG9vc2VDb2xvcihjb25zdCBPcHRpb25h
bFJHQkEmIGNvbG9yKQogewogICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybjsKQEAg
LTkxLDcgKzkxLDcgQEAgdm9pZCBXZWJDb2xvclBpY2tlckd0azo6Y29sb3JDaG9vc2VyRGlhbG9n
UmVzcG9uc2VDYWxsYmFjayhHdGtDb2xvckNob29zZXIqLCBpbnQKICAgICBjb2xvclBpY2tlci0+
ZW5kUGlja2VyKCk7CiB9CiAKLXZvaWQgV2ViQ29sb3JQaWNrZXJHdGs6OnNob3dDb2xvclBpY2tl
cihjb25zdCBDb2xvciYgY29sb3IpCit2b2lkIFdlYkNvbG9yUGlja2VyR3RrOjpzaG93Q29sb3JQ
aWNrZXIoY29uc3QgT3B0aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICBpZiAoIW1fY2xpZW50KQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYkNvbG9yUGlja2VyR3RrLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNv
bG9yUGlja2VyR3RrLmgKaW5kZXggMDVhODRkZTRiMDIxODM4Y2Q1YTk2NWQwYWJiYmY4ZWYxNGVl
YjdjZS4uNmM2ZmJmNGZmN2JmNzRkZDBhOGM5ZjRkNmU2M2MyMDVkNDA2MDY0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb2xvclBpY2tlckd0ay5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29sb3JQaWNrZXJHdGsuaApAQCAtMzQs
NyArMzQsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgX0d0a0NvbG9yQ2hvb3NlciBHdGtDb2xvckNob29z
ZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENvbG9yOworY2xhc3MgT3B0aW9uYWxS
R0JBOwogY2xhc3MgSW50UmVjdDsKIH0KIApAQCAtNDIsMjAgKzQyLDIwIEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBXZWJDb2xvclBpY2tlckd0ayA6IHB1YmxpYyBXZWJDb2xvclBpY2tl
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJDb2xvclBpY2tlckd0az4gY3JlYXRlKFdl
YlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpOworICAgIHN0YXRpYyBSZWY8V2ViQ29sb3JQaWNrZXJHdGs+IGNyZWF0ZShXZWJQYWdlUHJv
eHkmLCBjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
Jik7CiAgICAgdmlydHVhbCB+V2ViQ29sb3JQaWNrZXJHdGsoKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBlbmRQaWNrZXIoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbG9yUGlja2Vy
KGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNob3dD
b2xvclBpY2tlcihjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgY2FuY2VsKCk7CiAKICAgICBjb25zdCBHZGtSR0JBKiBpbml0aWFsQ29sb3IoKSBjb25z
dCB7IHJldHVybiAmbV9pbml0aWFsQ29sb3I7IH0KIAogcHJvdGVjdGVkOgotICAgIFdlYkNvbG9y
UGlja2VyR3RrKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpOworICAgIFdlYkNvbG9yUGlja2VyR3RrKFdlYlBhZ2VQcm94eSYsIGNv
bnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKIAot
ICAgIHZvaWQgZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKKyAgICB2b2lk
IGRpZENob29zZUNvbG9yKGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYpOwogCiAgICAgR2Rr
UkdCQSBtX2luaXRpYWxDb2xvcjsKICAgICBHdGtXaWRnZXQqIG1fd2ViVmlldzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCAxNTg1
ZjA1MTdhMGQ3NWM3OWRkOTUxOTNkZGY5Y2MzNTk4ZjA2Y2ZkLi4yYTMyMjhmNjE0ZDE3N2I0YmYy
Y2I2ODg3ODExNjg0Yzg2MzhmNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoY29uc3QgTmF0
aXZlV2ViV2hlZWxFdmVudCYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdFBv
dGVudGlhbFRhcEZhaWxlZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRHZXRUYXBI
aWdobGlnaHRHZW9tZXRyaWVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6Q29s
b3ImLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYgaGlnaGxpZ2h0ZWRRdWFkcywg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbUxlZnRS
YWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkR2V0VGFwSGlnaGxpZ2h0R2VvbWV0cmllcyh1aW50NjRf
dCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpGbG9hdFF1YWQ+JiBoaWdobGlnaHRlZFF1YWRzLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0b3BSaWdodFJhZGl1
cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2
b2lkIGRpZENvbW1pdExheWVyVHJlZShjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkeW5hbWljVmlld3BvcnRVcGRhdGVDaGFuZ2Vk
VGFyZ2V0KGRvdWJsZSBuZXdTY2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgbmV3U2Ny
b2xsUG9zaXRpb24sIHVpbnQ2NF90IHRyYW5zYWN0aW9uSUQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggNzU2
OWZiY2IyM2E5MDBjY2MxYTgyZmQ2YmIzMGYzNzk0OWI4MGQ0NS4uMmQ3YjE2MjcwNTU1MjRiNzE5
NmQ3NTBmYjRhMjZhYmZmMjAxZjkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC01MDQsNyArNTA0LDcgQEAgdm9pZCBQYWdl
Q2xpZW50SW1wbDo6Y29tbWl0UG90ZW50aWFsVGFwRmFpbGVkKCkKICAgICBbbV9jb250ZW50Vmll
dyBfY29tbWl0UG90ZW50aWFsVGFwRmFpbGVkXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6
ZGlkR2V0VGFwSGlnaGxpZ2h0R2VvbWV0cmllcyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdl
YkNvcmU6OkNvbG9yJiBjb2xvciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4mIGhp
Z2hsaWdodGVkUXVhZHMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRvcExlZnRSYWRpdXMsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBib3R0b21SaWdo
dFJhZGl1cykKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJp
ZXModWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmIGNvbG9y
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYgaGlnaGxpZ2h0ZWRRdWFkcywgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbUxlZnRSYWRp
dXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzKQogewogICAgIFtt
X2NvbnRlbnRWaWV3IF9kaWRHZXRUYXBIaWdobGlnaHRGb3JSZXF1ZXN0OnJlcXVlc3RJRCBjb2xv
cjpjb2xvciBxdWFkczpoaWdobGlnaHRlZFF1YWRzIHRvcExlZnRSYWRpdXM6dG9wTGVmdFJhZGl1
cyB0b3BSaWdodFJhZGl1czp0b3BSaWdodFJhZGl1cyBib3R0b21MZWZ0UmFkaXVzOmJvdHRvbUxl
ZnRSYWRpdXMgYm90dG9tUmlnaHRSYWRpdXM6Ym90dG9tUmlnaHRSYWRpdXNdOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxl
cklPUy5tbQppbmRleCA2MTcyNmM4YzczYTYwZDU2MDg2M2M1NDUxZDQxNDI2NmM1MmQ1NTE4Li4y
OWQ3MWZiOGFhNWNlOTM1OGVkMDNiYjNjZmNhNmE2Y2Q1MmY3MWU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5t
bQpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdpblN3
aXBlR2VzdHVyZShfVUlOYXZpZ2F0aW9uSW50ZXJhY3RpdmVUcmFuc2l0aW9uCiAgICAgICAgIHN3
aXBlTGF5ZXJTaXplSW5EZXZpY2VDb29yZGluYXRlcy5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7
CiAgICAgICAgIGlmIChzbmFwc2hvdC0+aGFzSW1hZ2UoKSAmJiBzbmFwc2hvdC0+c2l6ZSgpID09
IHN3aXBlTGF5ZXJTaXplSW5EZXZpY2VDb29yZGluYXRlcyAmJiBkZXZpY2VTY2FsZUZhY3RvciA9
PSBzbmFwc2hvdC0+ZGV2aWNlU2NhbGVGYWN0b3IoKSkKICAgICAgICAgICAgIFttX3NuYXBzaG90
VmlldyBsYXllcl0uY29udGVudHMgPSBzbmFwc2hvdC0+YXNMYXllckNvbnRlbnRzKCk7Ci0gICAg
ICAgIENvbG9yIGNvcmVDb2xvciA9IHNuYXBzaG90LT5iYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAg
ICAgT3B0aW9uYWxSR0JBIGNvcmVDb2xvciA9IHNuYXBzaG90LT5iYWNrZ3JvdW5kQ29sb3IoKTsK
ICAgICAgICAgaWYgKGNvcmVDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBiYWNrZ3JvdW5k
Q29sb3IgPSBhZG9wdE5TKFtbVUlDb2xvciBhbGxvY10gaW5pdFdpdGhDR0NvbG9yOmNhY2hlZENH
Q29sb3IoY29yZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKV0pOwogICAgIH0KQEAgLTQ2MSw3
ICs0NjEsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVtb3ZlU3dpcGVTbmFwc2hv
dCgpCiAKICAgICBtX3N3aXBlVHJhbnNpdGlvbkNvbnRleHQgPSBudWxscHRyOwogCi0gICAgbV9i
YWNrZ3JvdW5kQ29sb3JGb3JDdXJyZW50U25hcHNob3QgPSBDb2xvcigpOworICAgIG1fYmFja2dy
b3VuZENvbG9yRm9yQ3VycmVudFNuYXBzaG90ID0gT3B0aW9uYWxSR0JBKCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggZDc5ZTExODJhMmE5YTI3YWQxMGY3
N2MxMWMyZGM0OWNmNWFkMjYxMS4uZWJmYjc5ZjJmZjQ0YTRmMDVjNzg3ZjAwODg0YWY4YjQ1NjNk
ZjNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC00NSw3ICs0NSw3IEBACiAjaW1wb3J0IDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ29sb3I7CitjbGFz
cyBPcHRpb25hbFJHQkE7CiBjbGFzcyBGbG9hdFF1YWQ7CiBjbGFzcyBJbnRTaXplOwogfQpAQCAt
MTI4LDcgKzEyOCw3IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAKICAgICB1aW50
NjRfdCBfbGF0ZXN0VGFwSGlnaGxpZ2h0SUQ7CiAgICAgc3RydWN0IFRhcEhpZ2hsaWdodEluZm9y
bWF0aW9uIHsKLSAgICAgICAgV2ViQ29yZTo6Q29sb3IgY29sb3I7CisgICAgICAgIFdlYkNvcmU6
Ok9wdGlvbmFsUkdCQSBjb2xvcjsKICAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4g
cXVhZHM7CiAgICAgICAgIFdlYkNvcmU6OkludFNpemUgdG9wTGVmdFJhZGl1czsKICAgICAgICAg
V2ViQ29yZTo6SW50U2l6ZSB0b3BSaWdodFJhZGl1czsKQEAgLTE4MCw3ICsxODAsNyBAQCBzdHJ1
Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogLSAodm9pZClfd2ViVG91Y2hFdmVudDooY29uc3Qg
V2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50Jil0b3VjaEV2ZW50IHByZXZlbnRzTmF0aXZlR2Vz
dHVyZXM6KEJPT0wpcHJldmVudHNEZWZhdWx0OwogI2VuZGlmCiAtICh2b2lkKV9jb21taXRQb3Rl
bnRpYWxUYXBGYWlsZWQ7Ci0tICh2b2lkKV9kaWRHZXRUYXBIaWdobGlnaHRGb3JSZXF1ZXN0Oih1
aW50NjRfdClyZXF1ZXN0SUQgY29sb3I6KGNvbnN0IFdlYkNvcmU6OkNvbG9yJiljb2xvciBxdWFk
czooY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4mKWhpZ2hsaWdodGVkUXVhZHMgdG9w
TGVmdFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpdG9wTGVmdFJhZGl1cyB0b3BSaWdo
dFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpdG9wUmlnaHRSYWRpdXMgYm90dG9tTGVm
dFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpYm90dG9tTGVmdFJhZGl1cyBib3R0b21S
aWdodFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpYm90dG9tUmlnaHRSYWRpdXM7Cist
ICh2b2lkKV9kaWRHZXRUYXBIaWdobGlnaHRGb3JSZXF1ZXN0Oih1aW50NjRfdClyZXF1ZXN0SUQg
Y29sb3I6KGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYpY29sb3IgcXVhZHM6KGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+JiloaWdobGlnaHRlZFF1YWRzIHRvcExlZnRSYWRpdXM6
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKXRvcExlZnRSYWRpdXMgdG9wUmlnaHRSYWRpdXM6KGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKXRvcFJpZ2h0UmFkaXVzIGJvdHRvbUxlZnRSYWRpdXM6KGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKWJvdHRvbUxlZnRSYWRpdXMgYm90dG9tUmlnaHRSYWRpdXM6
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKWJvdHRvbVJpZ2h0UmFkaXVzOwogCiAtICh2b2lkKV9z
dGFydEFzc2lzdGluZ05vZGU6KGNvbnN0IFdlYktpdDo6QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24m
KWluZm9ybWF0aW9uIHVzZXJJc0ludGVyYWN0aW5nOihCT09MKXVzZXJJc0ludGVyYWN0aW5nIGJs
dXJQcmV2aW91c05vZGU6KEJPT0wpYmx1clByZXZpb3VzTm9kZSB1c2VyT2JqZWN0OihOU09iamVj
dCA8TlNTZWN1cmVDb2Rpbmc+ICopdXNlck9iamVjdDsKIC0gKHZvaWQpX3N0b3BBc3Npc3RpbmdO
b2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAxZGU1ZjRlZjgyMTk4YTdmOGRhOWQyNzZiY2RhYzUw
OTUzNTA4ZmEzLi4wYmJiNDQzMjczOGI2ZTI4YzE2ZTY0OTY3ZDI2YmJjMTE5M2FkYzEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQpAQCAtNzMzLDcgKzczMyw3IEBAIC0gKHZvaWQpX3Nob3dUYXBIaWdobGln
aHQKICAgICBbc2VsZiBfdXBkYXRlVGFwSGlnaGxpZ2h0XTsKIH0KIAotLSAodm9pZClfZGlkR2V0
VGFwSGlnaGxpZ2h0Rm9yUmVxdWVzdDoodWludDY0X3QpcmVxdWVzdElEIGNvbG9yOihjb25zdCBX
ZWJDb3JlOjpDb2xvciYpY29sb3IgcXVhZHM6KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1
YWQ+JiloaWdobGlnaHRlZFF1YWRzIHRvcExlZnRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNp
emUmKXRvcExlZnRSYWRpdXMgdG9wUmlnaHRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUm
KXRvcFJpZ2h0UmFkaXVzIGJvdHRvbUxlZnRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUm
KWJvdHRvbUxlZnRSYWRpdXMgYm90dG9tUmlnaHRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNp
emUmKWJvdHRvbVJpZ2h0UmFkaXVzCistICh2b2lkKV9kaWRHZXRUYXBIaWdobGlnaHRGb3JSZXF1
ZXN0Oih1aW50NjRfdClyZXF1ZXN0SUQgY29sb3I6KGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdC
QSYpY29sb3IgcXVhZHM6KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+JiloaWdobGln
aHRlZFF1YWRzIHRvcExlZnRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKXRvcExlZnRS
YWRpdXMgdG9wUmlnaHRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKXRvcFJpZ2h0UmFk
aXVzIGJvdHRvbUxlZnRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKWJvdHRvbUxlZnRS
YWRpdXMgYm90dG9tUmlnaHRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKWJvdHRvbVJp
Z2h0UmFkaXVzCiB7CiAgICAgaWYgKCFfaXNUYXBIaWdobGlnaHRJRFZhbGlkIHx8IF9sYXRlc3RU
YXBIaWdobGlnaHRJRCAhPSByZXF1ZXN0SUQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggMjcyNTYwNmVk
ZDJjNDhiZjBlZjA4NDZiYmU4ZTI0YzQzNDVkOWQwZS4uNjMzMTJiOWQ4YmE2NzY1ZDA0NGRhNDZm
YjBlYjM1ODQyNDAzYjQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0KQEAgLTc5Niw3ICs3OTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVzdG9yZVBhZ2VDZW50ZXJBbmRTY2FsZShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBjZW50
ZXIsCiAgICAgbV9wYWdlQ2xpZW50LnJlc3RvcmVQYWdlQ2VudGVyQW5kU2NhbGUoY2VudGVyLCBz
Y2FsZSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRHZXRUYXBIaWdobGlnaHRHZW9tZXRy
aWVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yLCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYgaGlnaGxpZ2h0ZWRRdWFkcywgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9w
UmlnaHRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzKQordm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXModWludDY0X3QgcmVxdWVzdElELCBjb25z
dCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmIGNvbG9yLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Rmxv
YXRRdWFkPiYgaGlnaGxpZ2h0ZWRRdWFkcywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wTGVm
dFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IGJvdHRvbVJpZ2h0UmFkaXVzKQogewogICAgIG1fcGFnZUNsaWVudC5kaWRHZXRUYXBIaWdobGln
aHRHZW9tZXRyaWVzKHJlcXVlc3RJRCwgY29sb3IsIGhpZ2hsaWdodGVkUXVhZHMsIHRvcExlZnRS
YWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1
cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgK
aW5kZXggYzY5ZWVhNjRjMWU2ZWJjMDc3ZjU4MjVjZDZkYzMzMzRhYzIwODJkNy4uZjI2ZTc5OGUw
NGFkOWUyNmRkMzkyMzg4MDc5YzBjNmMxYzlhYTIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaApAQCAtMTI0LDcgKzEyNCw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1l
bnVQcm94eShXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBF
X0NPTE9SKQotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBp
Y2tlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8V2Vi
Q29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNv
cmU6Ok9wdGlvbmFsUkdCQSYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikg
b3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKFJl
ZjxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yPiwgV2ViQ29yZTo6VGV4dEluZGljYXRvckxpZmV0aW1l
ID0gV2ViQ29yZTo6VGV4dEluZGljYXRvckxpZmV0aW1lOjpQZXJtYW5lbnQpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5t
bSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KaW5kZXgg
Mzk3NjhkZGU3NzZlZWVlZTc4NTVmNDdlMzI1MzBhMjA3ZTgzNzBiMy4uNjY1MDRmMTE0YjE1ZWZk
MDZlMzJlYTcxMzU4MTg5MWM5NzUyNTc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCkBAIC00OTksNyArNDk5LDcgQEAgUmVmUHRyPFdlYkNv
bnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdl
YlBhZ2VQcm94eSoKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotUmVmUHRyPFdl
YkNvbG9yUGlja2VyPiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVBy
b3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCAgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgcmVjdCkKK1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gUGFnZUNsaWVudElt
cGw6OmNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgV2ViQ29yZTo6
T3B0aW9uYWxSR0JBJiBpbml0aWFsQ29sb3IsICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0
KQogewogICAgIHJldHVybiBXZWJDb2xvclBpY2tlck1hYzo6Y3JlYXRlKHBhZ2UsIGluaXRpYWxD
b2xvciwgcmVjdCwgd2tWaWV3KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKaW5kZXggMmE5MGZjOTFkZmM5ZjkwNWJk
MGUzNmFmYzk0MmI4MzM1YjBmMGFmMS4uMDFmZGU4ZDhiMjViZThmZjlmMzg5MTI2MDVmZjdjMzEw
ZWU1MjgwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
cmVtb3ZlU3dpcGVTbmFwc2hvdCgpOwogICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlv
bkZvck1haW5GcmFtZShTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSk7CiAKLSAgICBXZWJDb3Jl
OjpDb2xvciBiYWNrZ3JvdW5kQ29sb3JGb3JDdXJyZW50U25hcHNob3QoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tncm91bmRDb2xvckZvckN1cnJlbnRTbmFwc2hvdDsgfQorICAgIFdlYkNvcmU6Ok9w
dGlvbmFsUkdCQSBiYWNrZ3JvdW5kQ29sb3JGb3JDdXJyZW50U25hcHNob3QoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tncm91bmRDb2xvckZvckN1cnJlbnRTbmFwc2hvdDsgfQogCiBwcml2YXRlOgog
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6
CiAgICAgUnVuTG9vcDo6VGltZXI8Vmlld0dlc3R1cmVDb250cm9sbGVyPiBtX3N3aXBlV2F0Y2hk
b2dUaW1lcjsKICAgICBSdW5Mb29wOjpUaW1lcjxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+IG1fc3dp
cGVBY3RpdmVMb2FkTW9uaXRvcmluZ1RpbWVyOwogCi0gICAgV2ViQ29yZTo6Q29sb3IgbV9iYWNr
Z3JvdW5kQ29sb3JGb3JDdXJyZW50U25hcHNob3Q7CisgICAgV2ViQ29yZTo6T3B0aW9uYWxSR0JB
IG1fYmFja2dyb3VuZENvbG9yRm9yQ3VycmVudFNuYXBzaG90OwogCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIFJlZlB0cjxWaWV3U25hcHNob3Q+IG1fY3VycmVudFN3aXBlU25hcHNob3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9s
bGVyTWFjLm1tCmluZGV4IDM4YjdlMzY4YzU5OTVhMjQ0YzhhN2FmOWNkODI2YTg1NGNmNzVhN2Mu
LmVhMWE5ZTQxY2I1ZjExYzc2ZGMzMzA3N2ZjN2QxNzRmNTBmMTg4MTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFj
Lm1tCkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2lu
U3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0KICAgICAgICAg
aWYgKHNob3VsZFVzZVNuYXBzaG90Rm9yU2l6ZSgqc25hcHNob3QsIHN3aXBlQXJlYS5zaXplKCks
IHRvcENvbnRlbnRJbnNldCkpCiAgICAgICAgICAgICBbbV9zd2lwZVNuYXBzaG90TGF5ZXIgc2V0
Q29udGVudHM6c25hcHNob3QtPmFzTGF5ZXJDb250ZW50cygpXTsKIAotICAgICAgICBDb2xvciBj
b3JlQ29sb3IgPSBzbmFwc2hvdC0+YmFja2dyb3VuZENvbG9yKCk7CisgICAgICAgIE9wdGlvbmFs
UkdCQSBjb3JlQ29sb3IgPSBzbmFwc2hvdC0+YmFja2dyb3VuZENvbG9yKCk7CiAgICAgICAgIGlm
IChjb3JlQ29sb3IuaXNWYWxpZCgpKQogICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gY2Fj
aGVkQ0dDb2xvcihjb3JlQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogI2lmIFVTRV9JT1NV
UkZBQ0VfVklFV19TTkFQU0hPVFMKQEAgLTkwOCw3ICs5MDgsNyBAQCB2b2lkIFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6cmVtb3ZlU3dpcGVTbmFwc2hvdCgpCiAKICAgICBtX3dlYlBhZ2VQcm94eS5u
YXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90V2FzUmVtb3ZlZCgpOwogCi0gICAgbV9iYWNrZ3JvdW5k
Q29sb3JGb3JDdXJyZW50U25hcHNob3QgPSBDb2xvcigpOworICAgIG1fYmFja2dyb3VuZENvbG9y
Rm9yQ3VycmVudFNuYXBzaG90ID0gT3B0aW9uYWxSR0JBKCk7CiB9CiAKIGRvdWJsZSBWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6Om1hZ25pZmljYXRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5oCmluZGV4IGExNGExMGM0MTUxNmZk
NTNlNzkyYjRlMjJhOWExYTE2OTk2ZjkyZGEuLmE0MTFlZDkyNWYzZWY0YWU4ODA1ZmZiMjAyMjU0
ZjJhZTIxMGRiNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmll
d1NuYXBzaG90U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdT
bmFwc2hvdFN0b3JlLmgKQEAgLTc2LDggKzc2LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVu
ZGVyVHJlZVNpemUodWludDY0X3QgcmVuZGVyVHJlZVNpemUpIHsgbV9yZW5kZXJUcmVlU2l6ZSA9
IHJlbmRlclRyZWVTaXplOyB9CiAgICAgdWludDY0X3QgcmVuZGVyVHJlZVNpemUoKSBjb25zdCB7
IHJldHVybiBtX3JlbmRlclRyZWVTaXplOyB9CiAKLSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xv
cihXZWJDb3JlOjpDb2xvciBjb2xvcikgeyBtX2JhY2tncm91bmRDb2xvciA9IGNvbG9yOyB9Ci0g
ICAgV2ViQ29yZTo6Q29sb3IgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNr
Z3JvdW5kQ29sb3I7IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihXZWJDb3JlOjpPcHRp
b25hbFJHQkEgY29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQorICAgIFdlYkNv
cmU6Ok9wdGlvbmFsUkdCQSBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tn
cm91bmRDb2xvcjsgfQogCiAgICAgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZp
Y2VTY2FsZUZhY3RvcikgeyBtX2RldmljZVNjYWxlRmFjdG9yID0gZGV2aWNlU2NhbGVGYWN0b3I7
IH0KICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNl
U2NhbGVGYWN0b3I7IH0KQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90
IG1fcmVuZGVyVHJlZVNpemU7CiAgICAgZmxvYXQgbV9kZXZpY2VTY2FsZUZhY3RvcjsKICAgICBX
ZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKLSAgICBXZWJDb3JlOjpDb2xvciBtX2JhY2tncm91bmRD
b2xvcjsKKyAgICBXZWJDb3JlOjpPcHRpb25hbFJHQkEgbV9iYWNrZ3JvdW5kQ29sb3I7CiB9Owog
CiBjbGFzcyBWaWV3U25hcHNob3RTdG9yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2VyTWFjLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYkNvbG9yUGlja2VyTWFjLmgKaW5kZXggY2YyZjZlODYwMjU1NjI3ZDE0OGU4Yjdj
ZTU2M2UyNjk1NDY2MzdlMS4uYjNlM2YwOTRjNGMzZjVlMTY5OTEyMThlYjU4MzA1NTVjZjNlZGM2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tl
ck1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJN
YWMuaApAQCAtNDIsNyArNDIsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ29sb3I7CitjbGFzcyBPcHRpb25hbFJHQkE7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjAsMTcgKzYwLDE3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogICAgIAogY2xhc3MgV2ViQ29sb3JQaWNrZXJNYWMgOiBwdWJsaWMgV2ViQ29sb3JQaWNrZXIg
ewogcHVibGljOiAgICAgICAgCi0gICAgc3RhdGljIFJlZjxXZWJDb2xvclBpY2tlck1hYz4gY3Jl
YXRlKFdlYkNvbG9yUGlja2VyOjpDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBXS1ZpZXcqKTsKKyAgICBzdGF0aWMgUmVmPFdlYkNvbG9yUGlj
a2VyTWFjPiBjcmVhdGUoV2ViQ29sb3JQaWNrZXI6OkNsaWVudCosIGNvbnN0IFdlYkNvcmU6Ok9w
dGlvbmFsUkdCQSYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXS1ZpZXcqKTsKICAgICB+V2Vi
Q29sb3JQaWNrZXJNYWMoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBlbmRQaWNrZXIoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xv
ciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29sb3JQaWNrZXIoY29uc3QgV2Vi
Q29yZTo6Q29sb3ImKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRDb2xv
cihjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2hvd0NvbG9yUGlja2VyKGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYpIG92ZXJyaWRl
OwogICAgIAotICAgIHZvaWQgZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsK
KyAgICB2b2lkIGRpZENob29zZUNvbG9yKGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYpOwog
CiBwcml2YXRlOgotICAgIFdlYkNvbG9yUGlja2VyTWFjKFdlYkNvbG9yUGlja2VyOjpDbGllbnQq
LCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXS1ZpZXcq
KTsKKyAgICBXZWJDb2xvclBpY2tlck1hYyhXZWJDb2xvclBpY2tlcjo6Q2xpZW50KiwgY29uc3Qg
V2ViQ29yZTo6T3B0aW9uYWxSR0JBJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdLVmlldyop
OwogICAgIFJldGFpblB0cjxOU09iamVjdDxXS0NvbG9yUGlja2VyVUlNYWM+ID4gbV9jb2xvclBp
Y2tlclVJOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9X
ZWJDb2xvclBpY2tlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29s
b3JQaWNrZXJNYWMubW0KaW5kZXggMjZhYzY5ZmVkNjY5ZDk1ZDZlNmU1ZGMxOTlmMzRmYjcxNjFl
OGFmNy4uOGEwMDIzOTM5MDIzYjM1MmMyMGFkMGFiZjk4N2UwMTIxYjY3MTAwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2VyTWFjLm1tCkBAIC03
NSw3ICs3NSw3IEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlZjxXZWJDb2xvclBp
Y2tlck1hYz4gV2ViQ29sb3JQaWNrZXJNYWM6OmNyZWF0ZShXZWJDb2xvclBpY2tlcjo6Q2xpZW50
KiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHJlY3QsIFdLVmlldyogdmlldykKK1JlZjxXZWJDb2xvclBpY2tlck1hYz4g
V2ViQ29sb3JQaWNrZXJNYWM6OmNyZWF0ZShXZWJDb2xvclBpY2tlcjo6Q2xpZW50KiBjbGllbnQs
IGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiByZWN0LCBXS1ZpZXcqIHZpZXcpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViQ29sb3JQaWNrZXJNYWMoY2xpZW50LCBpbml0aWFsQ29sb3IsIHJlY3QsIHZpZXcpKTsK
IH0KQEAgLTg2LDcgKzg2LDcgQEAgV2ViQ29sb3JQaWNrZXJNYWM6On5XZWJDb2xvclBpY2tlck1h
YygpCiAgICAgICAgIGVuZFBpY2tlcigpOwogfQogCi1XZWJDb2xvclBpY2tlck1hYzo6V2ViQ29s
b3JQaWNrZXJNYWMoV2ViQ29sb3JQaWNrZXI6OkNsaWVudCogY2xpZW50LCBjb25zdCBXZWJDb3Jl
OjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0LCBXS1Zp
ZXcqIHZpZXcpCitXZWJDb2xvclBpY2tlck1hYzo6V2ViQ29sb3JQaWNrZXJNYWMoV2ViQ29sb3JQ
aWNrZXI6OkNsaWVudCogY2xpZW50LCBjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmIGluaXRp
YWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCwgV0tWaWV3KiB2aWV3KQogICAg
IDogV2ViQ29sb3JQaWNrZXIoY2xpZW50KQogewogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
X1BPUE9WRVIpCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBXZWJDb2xvclBpY2tlck1hYzo6ZW5k
UGlja2VyKCkKICAgICBtX2NvbG9yUGlja2VyVUkgPSBuaWw7CiB9CiAKLXZvaWQgV2ViQ29sb3JQ
aWNrZXJNYWM6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQor
dm9pZCBXZWJDb2xvclBpY2tlck1hYzo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpP
cHRpb25hbFJHQkEmIGNvbG9yKQogewogICAgIGlmICghbV9jbGllbnQgfHwgIW1fY29sb3JQaWNr
ZXJVSSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgV2ViQ29sb3JQ
aWNrZXJNYWM6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQog
ICAgIFttX2NvbG9yUGlja2VyVUkgc2V0Q29sb3I6bnNDb2xvcihjb2xvcildOwogfQogCi12b2lk
IFdlYkNvbG9yUGlja2VyTWFjOjpkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYg
Y29sb3IpCit2b2lkIFdlYkNvbG9yUGlja2VyTWFjOjpkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJD
b3JlOjpPcHRpb25hbFJHQkEmIGNvbG9yKQogewogICAgIGlmICghbV9jbGllbnQpCiAgICAgICAg
IHJldHVybjsKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIFdlYkNvbG9yUGlja2VyTWFjOjpkaWRD
aG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCiAgICAgbV9jbGllbnQtPmRp
ZENob29zZUNvbG9yKGNvbG9yKTsKIH0KIAotdm9pZCBXZWJDb2xvclBpY2tlck1hYzo6c2hvd0Nv
bG9yUGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3ZvaWQgV2ViQ29sb3JQaWNr
ZXJNYWM6OnNob3dDb2xvclBpY2tlcihjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmIGNvbG9y
KQogewogICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRXZWJQYWdlLmNwcAppbmRleCAwOTMxY2JmMDA0NzYxOGVmZDBiYWYxMGY2YjU4NDVm
MDliODJhYzIzLi40MmQ3NDE2Y2QzMzEwMzVmZjA3NDM3NzU3YmFkZWI2NDQ5MTFjMDQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
V2ViS2l0V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwCkBAIC00OTMsMTAgKzQ5MywxMCBAQCB2
b2lkIHdlYmtpdFdlYlBhZ2VEaWRSZWNlaXZlTWVzc2FnZShXZWJLaXRXZWJQYWdlKiBwYWdlLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2VOYQogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFzbmFwc2hvdFJlY3QuaXNFbXB0
eSgpKSB7Ci0gICAgICAgICAgICAgICAgQ29sb3Igc2F2ZWRCYWNrZ3JvdW5kQ29sb3I7CisgICAg
ICAgICAgICAgICAgT3B0aW9uYWxSR0JBIHNhdmVkQmFja2dyb3VuZENvbG9yOwogICAgICAgICAg
ICAgICAgIGlmICh0cmFuc3BhcmVudEJhY2tncm91bmQpIHsKICAgICAgICAgICAgICAgICAgICAg
c2F2ZWRCYWNrZ3JvdW5kQ29sb3IgPSBmcmFtZVZpZXctPmJhc2VCYWNrZ3JvdW5kQ29sb3IoKTsK
LSAgICAgICAgICAgICAgICAgICAgZnJhbWVWaWV3LT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKENv
bG9yOjp0cmFuc3BhcmVudCk7CisgICAgICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+c2V0QmFz
ZUJhY2tncm91bmRDb2xvcihPcHRpb25hbFJHQkE6OnRyYW5zcGFyZW50KTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgc25hcHNob3RJbWFnZSA9IHdlYlBhZ2UtPnNjYWxlZFNu
YXBzaG90V2l0aE9wdGlvbnMoc25hcHNob3RSZWN0LCAxLCBzbmFwc2hvdE9wdGlvbnMgfCBTbmFw
c2hvdE9wdGlvbnNTaGFyZWFibGUpOwogICAgICAgICAgICAgICAgIGlmICh0cmFuc3BhcmVudEJh
Y2tncm91bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggYWM4MmFkMTk1MWI2NDM3YzYw
NTNiNmM2NmYwNjQwMjllNjAyNWFmNi4uNGQwODk1MTllOGFlNWE2ZjM5ZWZjYTUxMmM2NTIwODhk
YTIzOTMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzU3LDcgKzc1Nyw3IEBAIFN0
cmluZyBXZWJDaHJvbWVDbGllbnQ6OmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotc3RkOjp1bmlxdWVf
cHRyPENvbG9yQ2hvb3Nlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIoQ29s
b3JDaG9vc2VyQ2xpZW50KiBjbGllbnQsIGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3IpCitzdGQ6
OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hv
b3NlcihDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCwgY29uc3QgT3B0aW9uYWxSR0JBJiBpbml0
aWFsQ29sb3IpCiB7CiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb2xvckNob29zZXI+
KG5ldyBXZWJDb2xvckNob29zZXIobV9wYWdlLCBjbGllbnQsIGluaXRpYWxDb2xvcikpOwogfQpA
QCAtOTgzLDEyICs5ODMsMTIgQEAgV1RGOjpPcHRpb25hbDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+
IFdlYkNocm9tZUNsaWVudDo6cHJlZmVycmVkU2Nyb2xsYmFyT3ZlcmxheVMKICAgICByZXR1cm4g
bV9wYWdlLT5zY3JvbGxiYXJPdmVybGF5U3R5bGUoKTsgCiB9CiAKLUNvbG9yIFdlYkNocm9tZUNs
aWVudDo6dW5kZXJsYXlDb2xvcigpIGNvbnN0CitPcHRpb25hbFJHQkEgV2ViQ2hyb21lQ2xpZW50
Ojp1bmRlcmxheUNvbG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYWdlLT51bmRlcmxheUNv
bG9yKCk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5k
Q29sb3JEaWRDaGFuZ2UoQ29sb3IgYmFja2dyb3VuZENvbG9yKSBjb25zdAordm9pZCBXZWJDaHJv
bWVDbGllbnQ6OnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZShPcHRpb25hbFJH
QkEgYmFja2dyb3VuZENvbG9yKSBjb25zdAogewogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZP
Uk0oRUZMKQogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpQYWdlRXh0
ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoYmFja2dyb3VuZENvbG9yKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAppbmRleCBjMWVkMzg3NmU4OTkzYjVlZDdmNGRjYmYzYTJmZDc1NjJjNGM5MzVl
Li5kY2YzNmFlYWFmNGRiNGFmNDEyNzg2ZTc3ZjZjZmI1ZDgxMDBhOGY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKQEAgLTE0OSw3ICsxNDksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5n
IGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkgb3ZlcnJpZGU7CiAg
ICAgCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29zZXIoV2ViQ29yZTo6
Q29sb3JDaG9vc2VyQ2xpZW50KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb2xvckNob29zZXI+IGNyZWF0ZUNv
bG9yQ2hvb3NlcihXZWJDb3JlOjpDb2xvckNob29zZXJDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpP
cHRpb25hbFJHQkEmKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKElPU19UT1VDSF9F
VkVOVFMpCkBAIC0yNzUsOSArMjc1LDkgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgV1RGOjpP
cHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHByZWZlcnJlZFNjcm9sbGJh
ck92ZXJsYXlTdHlsZSgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpDb2xvciB1
bmRlcmxheUNvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpPcHRp
b25hbFJHQkEgdW5kZXJsYXlDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2
b2lkIHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZShXZWJDb3JlOjpDb2xvcikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhZ2VFeHRlbmRlZEJhY2tncm91bmRD
b2xvckRpZENoYW5nZShXZWJDb3JlOjpPcHRpb25hbFJHQkEpIGNvbnN0IG92ZXJyaWRlOwogICAg
IAogICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKGJvb2wpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbG9yQ2hvb3Nlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbG9yQ2hvb3Nlci5jcHAKaW5kZXggMTU4NTRhZWMwYjliMWVhNGRiODlh
MjYwNWM4OTM5Njg3OWU2MmJiNS4uNjZlN2M3Y2FiMjkxZWE4NTMxNTRkMjVkYjE1OTNjODFhZDZh
ZDJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDb2xvckNob29zZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ29sb3JDaG9vc2VyLmNwcApAQCAtMzgsNyArMzgsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYkNvbG9yQ2hvb3Nl
cjo6V2ViQ29sb3JDaG9vc2VyKFdlYlBhZ2UqIHBhZ2UsIENvbG9yQ2hvb3NlckNsaWVudCogY2xp
ZW50LCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9yKQorV2ViQ29sb3JDaG9vc2VyOjpXZWJDb2xv
ckNob29zZXIoV2ViUGFnZSogcGFnZSwgQ29sb3JDaG9vc2VyQ2xpZW50KiBjbGllbnQsIGNvbnN0
IE9wdGlvbmFsUkdCQSYgaW5pdGlhbENvbG9yKQogICAgIDogbV9jb2xvckNob29zZXJDbGllbnQo
Y2xpZW50KQogICAgICwgbV9wYWdlKHBhZ2UpCiB7CkBAIC01NCw3ICs1NCw3IEBAIFdlYkNvbG9y
Q2hvb3Nlcjo6fldlYkNvbG9yQ2hvb3NlcigpCiAgICAgbV9wYWdlLT5zZXRBY3RpdmVDb2xvckNo
b29zZXIoMCk7CiB9CiAKLXZvaWQgV2ViQ29sb3JDaG9vc2VyOjpkaWRDaG9vc2VDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCit2b2lkIFdlYkNvbG9yQ2hvb3Nlcjo6ZGlkQ2hvb3NlQ29sb3IoY29u
c3QgT3B0aW9uYWxSR0JBJiBjb2xvcikKIHsKICAgICBtX2NvbG9yQ2hvb3NlckNsaWVudC0+ZGlk
Q2hvb3NlQ29sb3IoY29sb3IpOwogfQpAQCAtNjksNyArNjksNyBAQCB2b2lkIFdlYkNvbG9yQ2hv
b3Nlcjo6ZGlzY29ubmVjdEZyb21QYWdlKCkKICAgICBtX3BhZ2UgPSAwOwogfQogCi12b2lkIFdl
YkNvbG9yQ2hvb3Nlcjo6cmVhdHRhY2hDb2xvckNob29zZXIoY29uc3QgQ29sb3ImIGNvbG9yKQor
dm9pZCBXZWJDb2xvckNob29zZXI6OnJlYXR0YWNoQ29sb3JDaG9vc2VyKGNvbnN0IE9wdGlvbmFs
UkdCQSYgY29sb3IpCiB7CiAgICAgQVNTRVJUKG1fcGFnZSk7CiAgICAgbV9wYWdlLT5zZXRBY3Rp
dmVDb2xvckNob29zZXIodGhpcyk7CkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgV2ViQ29sb3JDaG9v
c2VyOjpyZWF0dGFjaENvbG9yQ2hvb3Nlcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTaG93Q29sb3JQaWNrZXIoY29sb3IsIG1fY29sb3JDaG9vc2VyQ2xp
ZW50LT5lbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290VmlldygpKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CiB9CiAKLXZvaWQgV2ViQ29sb3JDaG9vc2VyOjpzZXRTZWxlY3RlZENvbG9yKGNvbnN0IENvbG9y
JiBjb2xvcikKK3ZvaWQgV2ViQ29sb3JDaG9vc2VyOjpzZXRTZWxlY3RlZENvbG9yKGNvbnN0IE9w
dGlvbmFsUkdCQSYgY29sb3IpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29sb3JDaG9vc2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbG9yQ2hvb3Nlci5oCmluZGV4IDAzOTRjYzgyY2YyZDFiMTUxZTg3NWQxZjM2ZTFhZmYx
ZWJjMGE1MDAuLmY5YjYxNTdhYjI1ZTRkYzliNjgzYjQ2Mzc1NGFiZjRmMWMwYjg5MWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29sb3JD
aG9vc2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDb2xvckNob29zZXIuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ29s
b3JDaG9vc2VyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENvbG9yOworY2xhc3Mg
T3B0aW9uYWxSR0JBOwogY2xhc3MgQ29sb3JDaG9vc2VyQ2xpZW50OwogfQogCkBAIC00MSwxNSAr
NDEsMTUgQEAgY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViQ29sb3JDaG9vc2VyIDogcHVibGlj
IFdlYkNvcmU6OkNvbG9yQ2hvb3NlciB7CiBwdWJsaWM6Ci0gICAgV2ViQ29sb3JDaG9vc2VyKFdl
YlBhZ2UqLCBXZWJDb3JlOjpDb2xvckNob29zZXJDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpDb2xv
ciYpOworICAgIFdlYkNvbG9yQ2hvb3NlcihXZWJQYWdlKiwgV2ViQ29yZTo6Q29sb3JDaG9vc2Vy
Q2xpZW50KiwgY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJik7CiAgICAgdmlydHVhbCB+V2Vi
Q29sb3JDaG9vc2VyKCk7CiAKLSAgICB2b2lkIGRpZENob29zZUNvbG9yKGNvbnN0IFdlYkNvcmU6
OkNvbG9yJik7CisgICAgdm9pZCBkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpPcHRpb25h
bFJHQkEmKTsKICAgICB2b2lkIGRpZEVuZENob29zZXIoKTsKICAgICB2b2lkIGRpc2Nvbm5lY3RG
cm9tUGFnZSgpOwogCi0gICAgdmlydHVhbCB2b2lkIHJlYXR0YWNoQ29sb3JDaG9vc2VyKGNvbnN0
IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVk
Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVhdHRhY2hDb2xvckNob29zZXIoY29uc3QgV2ViQ29yZTo6T3B0aW9uYWxSR0JBJikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6T3B0
aW9uYWxSR0JBJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGVuZENob29zZXIoKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXgg
ODZmM2UzOGQ2MDMwNjRhYzEzZDZiNGU1MmJmMTg5NjNhNjdhZjU2MS4uZjFhMWZiODQ3YjdlODcx
YmRjOGMzZGI0NzBhM2JkODU5YzZmODUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKQEAgLTEyODcsNyArMTI4Nyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRy
YW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2Ug
PSBtX2ZyYW1lLT5wYWdlKCk7CiAKLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSB3ZWJQYWdl
LT5kcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCgpID8gQ29sb3I6OnRyYW5zcGFyZW50IDogQ29s
b3I6OndoaXRlOworICAgIE9wdGlvbmFsUkdCQSBiYWNrZ3JvdW5kQ29sb3IgPSB3ZWJQYWdlLT5k
cmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCgpID8gT3B0aW9uYWxSR0JBOjp0cmFuc3BhcmVudCA6
IE9wdGlvbmFsUkdCQTo6d2hpdGU7CiAgICAgYm9vbCBpc01haW5GcmFtZSA9IG1fZnJhbWUtPmlz
TWFpbkZyYW1lKCk7CiAgICAgYm9vbCBpc1RyYW5zcGFyZW50ID0gIXdlYlBhZ2UtPmRyYXdzQmFj
a2dyb3VuZCgpOwogICAgIGJvb2wgc2hvdWxkVXNlRml4ZWRMYXlvdXQgPSBpc01haW5GcmFtZSAm
JiB3ZWJQYWdlLT51c2VGaXhlZExheW91dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3Bw
CmluZGV4IDVhN2YxNzAwYmQxOWFiY2FhN2Y3ODU2ZGEyYTAzZWI2Y2UyNmYxYjAuLmNhZmJiZjJk
YTFlMjhmZmYwNjQxNWJlYzgyMDgxMzk5N2Q4Mjc4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2hv
d1BhaW50UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgcGFpbnRMYXllci0+c2V0QW5j
aG9yUG9pbnQoRmxvYXRQb2ludDNEKCkpOwogICAgIHBhaW50TGF5ZXItPnNldFBvc2l0aW9uKHJl
Y3QubG9jYXRpb24oKSk7CiAgICAgcGFpbnRMYXllci0+c2V0U2l6ZShyZWN0LnNpemUoKSk7Ci0g
ICAgcGFpbnRMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yKDEuMGYsIDAuMGYsIDAuMGYs
IDAuMmYpKTsKKyAgICBwYWludExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoT3B0aW9uYWxSR0JB
KDEuMGYsIDAuMGYsIDAuMGYsIDAuMmYpKTsKIAogICAgIEtleWZyYW1lVmFsdWVMaXN0IGZhZGVL
ZXlmcmFtZXMoQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpOwogICAgIGZhZGVLZXlmcmFtZXMuaW5z
ZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMCwgMSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDQ0M2FjZWIxOTMzMWEzNzM4YjE5MjI3
ZGE4Y2U1OGI0NTljNTU5MzEuLjM4ZjRlMDRkZjY0MzM5M2U0NjgxNzQxYjVjYWE1ZGVmOTRmN2Nm
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTQ4MCw5ICs0ODAs
OSBAQCBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1bmlxdWVOYW1lKCkKICAgICByZXR1
cm4gcGFzdGVib2FyZE5hbWU7CiB9CiAKLUNvbG9yIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29s
b3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK09wdGlvbmFsUkdCQSBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAg
Q29sb3IgY29sb3I7CisgICAgT3B0aW9uYWxSR0JBIGNvbG9yOwogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRDb2xvcihwYXN0ZWJvYXJkTmFtZSksIE1l
c3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRDb2xvcjo6UmVwbHkoY29s
b3IpLCAwKTsKICAgICByZXR1cm4gY29sb3I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaAppbmRleCBjNTg0MWFhMjk2NGQ3YjQ2YzI4NDQ5MmZlZjQzN2ViN2M1YmViYzc1Li41NTVi
ZmUyODUzYjk0MTk0ODk2NGQzNGI5YzJiNjQ5ZTIyNTY2NTQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0
cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgbG9uZyBjaGFuZ2VD
b3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IFN0cmluZyB1bmlxdWVOYW1lKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpDb2xv
ciBjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSBjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlVSTCB1cmwoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGxvbmcgYWRkVHlwZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAppbmRleCA5Y2M4NmQ0ZmZhNWU0MGUxMTdiNjFl
NWIyMGU0ODY5N2QzZWJiZTk3Li42YTMyZDllYjYwZjA3MGVlMTQ5ZWQ0M2M1Y2M2OGUyYTIwZmY5
YjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5k
Q29udHJvbGxlci5jcHAKQEAgLTQzNiw3ICs0MzYsNyBAQCBjb25zdCBmbG9hdCBzaGFkb3dDb2xv
ckFscGhhID0gMC41OwogCiB2b2lkIEZpbmRDb250cm9sbGVyOjpkcmF3UmVjdChQYWdlT3Zlcmxh
eSYsIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0
eVJlY3QpCiB7Ci0gICAgQ29sb3Igb3ZlcmxheUJhY2tncm91bmRDb2xvcigwLjFmLCAwLjFmLCAw
LjFmLCAwLjI1Zik7CisgICAgT3B0aW9uYWxSR0JBIG92ZXJsYXlCYWNrZ3JvdW5kQ29sb3IoMC4x
ZiwgMC4xZiwgMC4xZiwgMC4yNWYpOwogCiAgICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzID0gcmVj
dHNGb3JUZXh0TWF0Y2hlcygpOwogCkBAIC00NDYsOCArNDQ2LDggQEAgdm9pZCBGaW5kQ29udHJv
bGxlcjo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29u
dGV4dCwgY28KICAgICB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihncmFwaGljc0NvbnRleHQpOwogCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaGFk
b3coRmxvYXRTaXplKHNoYWRvd09mZnNldFgsIHNoYWRvd09mZnNldFkpLCBzaGFkb3dCbHVyUmFk
aXVzLCBDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCBzaGFkb3dDb2xvckFscGhhKSwgQ29sb3JTcGFj
ZVNSR0IpOwotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0
ZSwgQ29sb3JTcGFjZVNSR0IpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hhZG93KEZs
b2F0U2l6ZShzaGFkb3dPZmZzZXRYLCBzaGFkb3dPZmZzZXRZKSwgc2hhZG93Qmx1clJhZGl1cywg
T3B0aW9uYWxSR0JBKDAuMGYsIDAuMGYsIDAuMGYsIHNoYWRvd0NvbG9yQWxwaGEpLCBDb2xvclNw
YWNlU1JHQik7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoT3B0aW9uYWxS
R0JBOjp3aGl0ZSwgQ29sb3JTcGFjZVNSR0IpOwogCiAgICAgICAgIC8vIERyYXcgd2hpdGUgZnJh
bWVzIGFyb3VuZCB0aGUgaG9sZXMuCiAgICAgICAgIGZvciAoYXV0byYgcmVjdCA6IHJlY3RzKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRl
eCBmMThkZTUxNmEyOTVkMWE5ZGU4OWU0ZTM5MGRiYTU5Y2EyOGJjMDEzLi45NzE5ZGI3MGE0NTMx
ZjBkM2ZhOWMyMzZlOTk3OGMwYThiMTMyNGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTYyMyw3ICs2MjMsNyBAQCBib29sIFdlYkZy
YW1lOjpnZXREb2N1bWVudEJhY2tncm91bmRDb2xvcihkb3VibGUqIHJlZCwgZG91YmxlKiBncmVl
biwgZG91YmxlKiBibAogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgQ29sb3IgYmdDb2xvciA9IHZpZXctPmRvY3VtZW50QmFja2dyb3VuZENvbG9yKCk7CisgICAg
T3B0aW9uYWxSR0JBIGJnQ29sb3IgPSB2aWV3LT5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpOwog
ICAgIGlmICghYmdDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGRiNzdk
MTA4NTk3ZTU2MTdmOTBlN2E2OThkMWY2ODM3NjAzYTlkMDQuLmJjM2JjNDE3NGUwYjM3NDJmYTg2
YmJhZTJiY2VhZjFkN2YzNmYxZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMzOCw3ICszMzgsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKICAgICAsIG1fdm9sYXRpbGl0eVRpbWVyKCp0aGlzLCAmV2ViUGFnZTo6dm9sYXRpbGl0eVRp
bWVyRmlyZWQpCiAjZW5kaWYKICAgICAsIG1faW5zcGVjdG9yQ2xpZW50KDApCi0gICAgLCBtX2Jh
Y2tncm91bmRDb2xvcihDb2xvcjo6d2hpdGUpCisgICAgLCBtX2JhY2tncm91bmRDb2xvcihPcHRp
b25hbFJHQkE6OndoaXRlKQogICAgICwgbV9tYXhpbXVtUmVuZGVyaW5nU3VwcHJlc3Npb25Ub2tl
bigwKQogICAgICwgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3IoRG9Ob3RQaW4pCiAgICAgLCBtX3Vz
ZUFzeW5jU2Nyb2xsaW5nKGZhbHNlKQpAQCAtMTc1MSw4ICsxNzUxLDggQEAgUGFzc1JlZlB0cjxX
ZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29u
c3QgSW50U2l6ZSYKIAogICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gc25hcHNob3QtPmJpdG1h
cCgpLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAotICAgIENvbG9yIGRvY3VtZW50QmFja2dy
b3VuZENvbG9yID0gZnJhbWVWaWV3LT5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpOwotICAgIENv
bG9yIGJhY2tncm91bmRDb2xvciA9IChjb3JlRnJhbWUtPnNldHRpbmdzKCkuYmFja2dyb3VuZFNo
b3VsZEV4dGVuZEJleW9uZFBhZ2UoKSAmJiBkb2N1bWVudEJhY2tncm91bmRDb2xvci5pc1ZhbGlk
KCkpID8gZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IgOiBmcmFtZVZpZXctPmJhc2VCYWNrZ3JvdW5k
Q29sb3IoKTsKKyAgICBPcHRpb25hbFJHQkEgZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IgPSBmcmFt
ZVZpZXctPmRvY3VtZW50QmFja2dyb3VuZENvbG9yKCk7CisgICAgT3B0aW9uYWxSR0JBIGJhY2tn
cm91bmRDb2xvciA9IChjb3JlRnJhbWUtPnNldHRpbmdzKCkuYmFja2dyb3VuZFNob3VsZEV4dGVu
ZEJleW9uZFBhZ2UoKSAmJiBkb2N1bWVudEJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpID8gZG9j
dW1lbnRCYWNrZ3JvdW5kQ29sb3IgOiBmcmFtZVZpZXctPmJhc2VCYWNrZ3JvdW5kQ29sb3IoKTsK
ICAgICBncmFwaGljc0NvbnRleHQtPmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgYml0bWFw
U2l6ZSksIGJhY2tncm91bmRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICBpZiAo
IShvcHRpb25zICYgU25hcHNob3RPcHRpb25zRXhjbHVkZURldmljZVNjYWxlRmFjdG9yKSkgewpA
QCAtMTc3Niw3ICsxNzc2LDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNo
b3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYKIAogICAgIGlmIChv
cHRpb25zICYgU25hcHNob3RPcHRpb25zUGFpbnRTZWxlY3Rpb25SZWN0YW5nbGUpIHsKICAgICAg
ICAgRmxvYXRSZWN0IHNlbGVjdGlvblJlY3RhbmdsZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUo
KS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uQm91bmRzKCk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4
dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFN0cm9rZUNvbG9yKE9wdGlvbmFsUkdCQSgw
eEZGLCAwLCAwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC0+c3Ryb2tlUmVjdChzZWxlY3Rpb25SZWN0YW5nbGUsIDEpOwogICAgIH0KICAgICAKQEAgLTE4
MjQsOCArMTgyNCw4IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90Tm9k
ZShXZWJDb3JlOjpOb2RlJiBub2RlLCBTbmFwc2hvdE9wdGlvbnMKICAgICBncmFwaGljc0NvbnRl
eHQtPnNjYWxlKEZsb2F0U2l6ZShzY2FsZUZhY3Rvciwgc2NhbGVGYWN0b3IpKTsKICAgICBncmFw
aGljc0NvbnRleHQtPnRyYW5zbGF0ZSgtc25hcHNob3RSZWN0LngoKSwgLXNuYXBzaG90UmVjdC55
KCkpOwogCi0gICAgQ29sb3Igc2F2ZWRCYWNrZ3JvdW5kQ29sb3IgPSBmcmFtZVZpZXctPmJhc2VC
YWNrZ3JvdW5kQ29sb3IoKTsKLSAgICBmcmFtZVZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3Io
Q29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICBPcHRpb25hbFJHQkEgc2F2ZWRCYWNrZ3JvdW5kQ29s
b3IgPSBmcmFtZVZpZXctPmJhc2VCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICBmcmFtZVZpZXctPnNl
dEJhc2VCYWNrZ3JvdW5kQ29sb3IoT3B0aW9uYWxSR0JBOjp0cmFuc3BhcmVudCk7CiAgICAgZnJh
bWVWaWV3LT5zZXROb2RlVG9EcmF3KCZub2RlKTsKIAogICAgIGZyYW1lVmlldy0+cGFpbnRDb250
ZW50c0ZvclNuYXBzaG90KGdyYXBoaWNzQ29udGV4dC5nZXQoKSwgc25hcHNob3RSZWN0LCBGcmFt
ZVZpZXc6OkV4Y2x1ZGVTZWxlY3Rpb24sIEZyYW1lVmlldzo6RG9jdW1lbnRDb29yZGluYXRlcyk7
CkBAIC0yMjkxLDcgKzIyOTEsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldERyYXdzVHJhbnNwYXJlbnRC
YWNrZ3JvdW5kKGJvb2wgZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQpCiAKICAgICBtX2RyYXdz
VHJhbnNwYXJlbnRCYWNrZ3JvdW5kID0gZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQ7CiAKLSAg
ICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSBkcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCA/IENv
bG9yOjp0cmFuc3BhcmVudCA6IENvbG9yOjp3aGl0ZTsKKyAgICBPcHRpb25hbFJHQkEgYmFja2dy
b3VuZENvbG9yID0gZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQgPyBPcHRpb25hbFJHQkE6OnRy
YW5zcGFyZW50IDogT3B0aW9uYWxSR0JBOjp3aGl0ZTsKICAgICBmb3IgKEZyYW1lKiBjb3JlRnJh
bWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCk7IGNvcmVGcmFtZTsgY29yZUZyYW1lID0gY29y
ZUZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKEZyYW1lVmlldyog
dmlldyA9IGNvcmVGcmFtZS0+dmlldygpKQogICAgICAgICAgICAgdmlldy0+c2V0QmFzZUJhY2tn
cm91bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOwpAQCAtMzI2Niw3ICszMjY2LDcgQEAgdm9pZCBX
ZWJQYWdlOjpkaWRFbmRDb2xvclBpY2tlcigpCiAgICAgbV9hY3RpdmVDb2xvckNob29zZXItPmRp
ZEVuZENob29zZXIoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRDaG9vc2VDb2xvcihjb25zdCBX
ZWJDb3JlOjpDb2xvciYgY29sb3IpCit2b2lkIFdlYlBhZ2U6OmRpZENob29zZUNvbG9yKGNvbnN0
IFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSYgY29sb3IpCiB7CiAgICAgbV9hY3RpdmVDb2xvckNob29z
ZXItPmRpZENob29zZUNvbG9yKGNvbG9yKTsKIH0KQEAgLTQxNTIsNyArNDE1Miw3IEBAIHZvaWQg
V2ViUGFnZTo6c2V0Q29tcG9zaXRpb25Gb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgY29tcG9zaXRp
b25TdHJpbmcsIHVpbnQ2NF90CiAgICAgICAgIHJldHVybjsKIAogICAgIFZlY3RvcjxDb21wb3Np
dGlvblVuZGVybGluZT4gdW5kZXJsaW5lczsKLSAgICB1bmRlcmxpbmVzLmFwcGVuZChDb21wb3Np
dGlvblVuZGVybGluZSgwLCBjb21wb3NpdGlvblN0cmluZy5sZW5ndGgoKSwgQ29sb3IoQ29sb3I6
OmJsYWNrKSwgZmFsc2UpKTsKKyAgICB1bmRlcmxpbmVzLmFwcGVuZChDb21wb3NpdGlvblVuZGVy
bGluZSgwLCBjb21wb3NpdGlvblN0cmluZy5sZW5ndGgoKSwgT3B0aW9uYWxSR0JBKE9wdGlvbmFs
UkdCQTo6YmxhY2spLCBmYWxzZSkpOwogICAgIGZyYW1lLmVkaXRvcigpLnNldENvbXBvc2l0aW9u
KGNvbXBvc2l0aW9uU3RyaW5nLCB1bmRlcmxpbmVzLCBmcm9tLCBmcm9tICsgbGVuZ3RoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZDI0
MGIzYTk4MTQzMGMwOGE0MTY0ZGEwYTNhNzc5NzVmYzZmMzM3My4uYWQxYjY5NDZjOTM5Yzk3OGY2
ZGE5Y2IzNzkyZWYxNGQ5ZWM5YzI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCkBAIC0yNzgsNyArMjc4LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQogICAgIFdlYkNvbG9yQ2hvb3NlciogYWN0aXZlQ29sb3JDaG9vc2Vy
KCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVDb2xvckNob29zZXI7IH0KICAgICB2b2lkIHNldEFj
dGl2ZUNvbG9yQ2hvb3NlcihXZWJDb2xvckNob29zZXIqKTsKLSAgICB2b2lkIGRpZENob29zZUNv
bG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CisgICAgdm9pZCBkaWRDaG9vc2VDb2xvcihjb25z
dCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmKTsKICAgICB2b2lkIGRpZEVuZENvbG9yUGlja2VyKCk7
CiAjZW5kaWYKIApAQCAtMzk2LDggKzM5Niw4IEBAIHB1YmxpYzoKICAgICBib29sIGRyYXdzQmFj
a2dyb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhd3NCYWNrZ3JvdW5kOyB9CiAgICAgYm9vbCBk
cmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhd3NUcmFuc3Bh
cmVudEJhY2tncm91bmQ7IH0KIAotICAgIHZvaWQgc2V0VW5kZXJsYXlDb2xvcihjb25zdCBXZWJD
b3JlOjpDb2xvciYgY29sb3IpIHsgbV91bmRlcmxheUNvbG9yID0gY29sb3I7IH0KLSAgICBXZWJD
b3JlOjpDb2xvciB1bmRlcmxheUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmxheUNvbG9y
OyB9CisgICAgdm9pZCBzZXRVbmRlcmxheUNvbG9yKGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFsUkdC
QSYgY29sb3IpIHsgbV91bmRlcmxheUNvbG9yID0gY29sb3I7IH0KKyAgICBXZWJDb3JlOjpPcHRp
b25hbFJHQkEgdW5kZXJsYXlDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJsYXlDb2xvcjsg
fQogCiAgICAgdm9pZCBzdG9wTG9hZGluZygpOwogICAgIHZvaWQgc3RvcExvYWRpbmdGcmFtZSh1
aW50NjRfdCBmcmFtZUlEKTsKQEAgLTExODcsNyArMTE4Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2RyYXdzQmFja2dyb3VuZDsKICAgICBib29sIG1fZHJhd3NUcmFuc3BhcmVudEJhY2tncm91
bmQ7CiAKLSAgICBXZWJDb3JlOjpDb2xvciBtX3VuZGVybGF5Q29sb3I7CisgICAgV2ViQ29yZTo6
T3B0aW9uYWxSR0JBIG1fdW5kZXJsYXlDb2xvcjsKIAogICAgIGJvb2wgbV9pc0luUmVkbzsKICAg
ICBib29sIG1faXNDbG9zZWQ7CkBAIC0xMzg0LDcgKzEzODQsNyBAQCBwcml2YXRlOgogICAgIFdl
Ykluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGllbnQ7CiAKICAgICBIYXNoU2V0PFN0cmlu
ZywgQ2FzZUZvbGRpbmdIYXNoPiBtX21pbWVUeXBlc1dpdGhDdXN0b21Db250ZW50UHJvdmlkZXJz
OwotICAgIFdlYkNvcmU6OkNvbG9yIG1fYmFja2dyb3VuZENvbG9yOworICAgIFdlYkNvcmU6Ok9w
dGlvbmFsUkdCQSBtX2JhY2tncm91bmRDb2xvcjsKIAogICAgIEhhc2hTZXQ8dW5zaWduZWQ+IG1f
YWN0aXZlUmVuZGVyaW5nU3VwcHJlc3Npb25Ub2tlbnM7CiAgICAgdW5zaWduZWQgbV9tYXhpbXVt
UmVuZGVyaW5nU3VwcHJlc3Npb25Ub2tlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMDBhYjRmZDVhYzNhM2Uz
ZjVjN2Q0NGM1OTk2YWUyMTUzZmFiZTRkNS4uZGMwZDc2MGMzZmQzODFjMjU1N2Y0OWQxNGYwNTQw
MWQ0NDkwYmRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTMyLDcgKzMyLDcgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBTZXRUb3BDb250ZW50SW5zZXQoZmxvYXQgY29u
dGVudEluc2V0KQogCi0gICAgU2V0VW5kZXJsYXlDb2xvcihXZWJDb3JlOjpDb2xvciBjb2xvcikK
KyAgICBTZXRVbmRlcmxheUNvbG9yKFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSBjb2xvcikKIAogICAg
IFZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCkKICAgICBWaWV3V2lsbEVuZExpdmVSZXNpemUoKQpA
QCAtMTEyLDcgKzExMiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewog
CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAgRGlkRW5kQ29sb3JQaWNrZXIoKQot
ICAgIERpZENob29zZUNvbG9yKFdlYkNvcmU6OkNvbG9yIGNvbG9yKQorICAgIERpZENob29zZUNv
bG9yKFdlYkNvcmU6Ok9wdGlvbmFsUkdCQSBjb2xvcikKICNlbmRpZgogCiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQppbmRleCBmNWU4NmRmMDFmZGExOWQyZTZl
NDFlMWY0MDhiOGRjMzE1YjhhMjhjLi40OWI0OTU1NDNmMDdjNmExMmI2NmY1OTlmNDNmNDdmZDNh
Nzk0MzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L0ZpbmRDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KQEAgLTQ1LDkgKzQ1LDkgQEAgY29uc3QgaW50
IGNvcm5lclJhZGl1cyA9IDM7CiBjb25zdCBpbnQgdG90YWxIb3Jpem9udGFsTWFyZ2luID0gMjsK
IGNvbnN0IGludCB0b3RhbFZlcnRpY2FsTWFyZ2luID0gMTsKIAotc3RhdGljIENvbG9yIGhpZ2hs
aWdodENvbG9yKCkKK3N0YXRpYyBPcHRpb25hbFJHQkEgaGlnaGxpZ2h0Q29sb3IoKQogewotICAg
IHJldHVybiBDb2xvcigyNTUsIDIyOCwgNTYsIDI1NSk7CisgICAgcmV0dXJuIE9wdGlvbmFsUkdC
QSgyNTUsIDIyOCwgNTYsIDI1NSk7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4
IGFmNjFiODYzYzBiY2MzMWY2NWFlOWQyMzc2NWRhYTJkYjVjYmRkMDMuLmY4NGJmNGNhNzM2ZWJh
NmIxNWVmY2QxNDNjMjM3MjIxOGQ4N2RkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTYzNCw3ICs2MzQsNyBAQCB2
b2lkIFdlYlBhZ2U6OnNlbmRUYXBIaWdobGlnaHRGb3JOb2RlSWZOZWNlc3NhcnkodWludDY0X3Qg
cmVxdWVzdElELCBOb2RlKiBub2RlKQogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwogICAg
IGlmIChSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKSkgewogICAgICAg
ICByZW5kZXJlci0+YWJzb2x1dGVRdWFkcyhxdWFkcyk7Ci0gICAgICAgIENvbG9yIGhpZ2hsaWdo
dENvbG9yID0gcmVuZGVyZXItPnN0eWxlKCkudGFwSGlnaGxpZ2h0Q29sb3IoKTsKKyAgICAgICAg
T3B0aW9uYWxSR0JBIGhpZ2hsaWdodENvbG9yID0gcmVuZGVyZXItPnN0eWxlKCkudGFwSGlnaGxp
Z2h0Q29sb3IoKTsKICAgICAgICAgaWYgKCFub2RlLT5kb2N1bWVudCgpLmZyYW1lKCktPmlzTWFp
bkZyYW1lKCkpIHsKICAgICAgICAgICAgIEZyYW1lVmlldyogdmlldyA9IG5vZGUtPmRvY3VtZW50
KCkuZnJhbWUoKS0+dmlldygpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBx
dWFkcy5zaXplKCk7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUuaAppbmRl
eCA5NmEzZmJiNTAxYWU5YTQ0Mjk2Zjk2Yjg4YjQ0MTNiZDFmMDc2Mzg2Li4zZjIxYzdiMDIxNTIw
ZjExZTVhY2VjNWI0MjY2YmJmYjQxYTEyZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25S
ZW1vdGUuaApAQCAtOTAsMTQgKzkwLDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0
RnJvbVZhbHVlKGZsb2F0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbVZhbHVl
KGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNldEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50M0QmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbVZhbHVlKGNvbnN0IFdlYkNvcmU6OkNvbG9y
Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldEZyb21WYWx1ZShjb25zdCBXZWJDb3Jl
OjpPcHRpb25hbFJHQkEmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbVZhbHVl
KGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbiosIGludCBpbnRlcm5hbEZpbHRlclByb3Bl
cnR5SW5kZXgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb3B5RnJvbVZhbHVlRnJvbShj
b25zdCBXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0
dWFsIHZvaWQgc2V0VG9WYWx1ZShmbG9hdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNl
dFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50M0Qm
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpD
b2xvciYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IFdlYkNv
cmU6Ok9wdGlvbmFsUkdCQSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUb1ZhbHVl
KGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbiosIGludCBpbnRlcm5hbEZpbHRlclByb3Bl
cnR5SW5kZXgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb3B5VG9WYWx1ZUZyb20oY29u
c3QgV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbiYpIG92ZXJyaWRlOwogCkBAIC0xMDUsNyAr
MTA1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9y
PGZsb2F0PiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4PiYpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UG9pbnQzRD4mKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpDb2xvcj4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpPcHRpb25hbFJHQkE+Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHNldFZhbHVlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbj4+
JiwgaW50IGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGNvcHlWYWx1ZXNGcm9tKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb24m
KSBvdmVycmlkZTsKIApAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAgICAgICAgewogICAg
ICAgICB9CiAKLSAgICAgICAgS2V5ZnJhbWVWYWx1ZShXZWJDb3JlOjpDb2xvciB2YWx1ZSkKKyAg
ICAgICAgS2V5ZnJhbWVWYWx1ZShXZWJDb3JlOjpPcHRpb25hbFJHQkEgdmFsdWUpCiAgICAgICAg
ICAgICA6IGtleVR5cGUoQ29sb3JLZXlUeXBlKQogICAgICAgICAgICAgLCBjb2xvcih2YWx1ZSkK
ICAgICAgICAgewpAQCAtMjAyLDcgKzIwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVy
biBudW1iZXI7CiAgICAgICAgIH0KIAotICAgICAgICBXZWJDb3JlOjpDb2xvciBjb2xvclZhbHVl
KCkgY29uc3QKKyAgICAgICAgV2ViQ29yZTo6T3B0aW9uYWxSR0JBIGNvbG9yVmFsdWUoKSBjb25z
dAogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoa2V5VHlwZSA9PSBDb2xvcktleVR5cGUp
OwogICAgICAgICAgICAgcmV0dXJuIGNvbG9yOwpAQCAtMjMzLDcgKzIzMyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgS2V5ZnJhbWVUeXBlIGtleVR5cGU7CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAg
ICAgIGZsb2F0IG51bWJlcjsKLSAgICAgICAgICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yOworICAg
ICAgICAgICAgV2ViQ29yZTo6T3B0aW9uYWxSR0JBIGNvbG9yOwogICAgICAgICAgICAgV2ViQ29y
ZTo6RmxvYXRQb2ludDNEIHBvaW50OwogICAgICAgICAgICAgV2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXggdHJhbnNmb3JtOwogICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9u
UmVtb3RlLm1tCmluZGV4IGE5Yzk0ZmJkNzRjMmU5OWFhZWRjMjA4ZWZiM2QxOGFkNWRjZTAxOTgu
LjVlMjg3OThmNGNhOWRlNjc5MjJiMjBmNDgwZDg1OTRjZTdmYzI0YmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJl
bW90ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRm
b3JtQ0FBbmltYXRpb25SZW1vdGUubW0KQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lkIFBsYXRmb3Jt
Q0FBbmltYXRpb25SZW1vdGU6OnNldEZyb21WYWx1ZShjb25zdCBGbG9hdFBvaW50M0QmIHZhbHVl
KQogICAgIG1fcHJvcGVydGllcy5rZXlWYWx1ZXNbMF0gPSBLZXlmcmFtZVZhbHVlKHZhbHVlKTsK
IH0KIAotdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpzZXRGcm9tVmFsdWUoY29uc3Qg
Q29sb3ImIHZhbHVlKQordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpzZXRGcm9tVmFs
dWUoY29uc3QgT3B0aW9uYWxSR0JBJiB2YWx1ZSkKIHsKICAgICBpZiAoYW5pbWF0aW9uVHlwZSgp
ICE9IEJhc2ljKQogICAgICAgICByZXR1cm47CkBAIC01NDEsNyArNTQxLDcgQEAgdm9pZCBQbGF0
Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpzZXRUb1ZhbHVlKGNvbnN0IEZsb2F0UG9pbnQzRCYgdmFs
dWUpCiAgICAgbV9wcm9wZXJ0aWVzLmtleVZhbHVlc1sxXSA9IEtleWZyYW1lVmFsdWUodmFsdWUp
OwogfQogCi12b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OnNldFRvVmFsdWUoY29uc3Qg
Q29sb3ImIHZhbHVlKQordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpzZXRUb1ZhbHVl
KGNvbnN0IE9wdGlvbmFsUkdCQSYgdmFsdWUpCiB7CiAgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAh
PSBCYXNpYykKICAgICAgICAgcmV0dXJuOwpAQCAtNjE0LDcgKzYxNCw3IEBAIHZvaWQgUGxhdGZv
cm1DQUFuaW1hdGlvblJlbW90ZTo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxGbG9hdFBvaW50M0Q+
JiB2YWx1ZXMpCiAgICAgbV9wcm9wZXJ0aWVzLmtleVZhbHVlcyA9IFdURjo6bW92ZShrZXlmcmFt
ZXMpOwogfQogCi12b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OnNldFZhbHVlcyhjb25z
dCBWZWN0b3I8Q29sb3I+JiB2YWx1ZXMpCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6
OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8T3B0aW9uYWxSR0JBPiYgdmFsdWVzKQogewogICAgIGlm
IChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAgLTY4Niw3
ICs2ODYsNyBAQCBzdGF0aWMgTlNPYmplY3QqIGFuaW1hdGlvblZhbHVlRnJvbUtleWZyYW1lVmFs
dWUoY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZQogICAgICAgICByZXR1cm4gQChrZXlm
cmFtZVZhbHVlLm51bWJlclZhbHVlKCkpOwogICAgICAgICAgICAgCiAgICAgY2FzZSBQbGF0Zm9y
bUNBQW5pbWF0aW9uUmVtb3RlOjpLZXlmcmFtZVZhbHVlOjpDb2xvcktleVR5cGU6IHsKLSAgICAg
ICAgQ29sb3IgY29sb3IgPSBrZXlmcmFtZVZhbHVlLmNvbG9yVmFsdWUoKTsKKyAgICAgICAgT3B0
aW9uYWxSR0JBIGNvbG9yID0ga2V5ZnJhbWVWYWx1ZS5jb2xvclZhbHVlKCk7CiAgICAgICAgIHJl
dHVybiBAWyBAKGNvbG9yLnJlZCgpKSwgQChjb2xvci5ncmVlbigpKSwgQChjb2xvci5ibHVlKCkp
LCBAKGNvbG9yLmFscGhhKCkpIF07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5j
cHAKaW5kZXggOWUxYTNhMzNiN2VmMTY1NGY0OGRlMTg5MzVmNTE2MmMyNjVmNjY4Yy4uMjdiODM5
NDBhMzVjMTA4OTg5MzJjMDY1OWE4YjJlYjYxMjlhMjM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVy
UmVtb3RlLmNwcApAQCAtNTg1LDEyICs1ODUsMTIgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OnNldE1hZ25pZmljYXRpb25GaWx0ZXIoRmlsdGVyVHlwZSB2YWx1ZSkKICAgICBtX3Byb3Bl
cnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpN
YWduaWZpY2F0aW9uRmlsdGVyQ2hhbmdlZCk7CiB9CiAKLUNvbG9yIFBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6YmFja2dyb3VuZENvbG9yKCkgY29uc3QKK09wdGlvbmFsUkdCQSBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU6OmJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJvcGVy
dGllcy5iYWNrZ3JvdW5kQ29sb3I7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpz
ZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIHZhbHVlKQordm9pZCBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIHZhbHVlKQog
ewogICAgIG1fcHJvcGVydGllcy5iYWNrZ3JvdW5kQ29sb3IgPSB2YWx1ZTsKICAgICBtX3Byb3Bl
cnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpC
YWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKTsKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZTo6c2V0Qm9yZGVyV2lkdGgoZmxvYXQgdmFsdWUpCiAgICAgbV9wcm9wZXJ0
aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Qm9y
ZGVyV2lkdGhDaGFuZ2VkKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldEJv
cmRlckNvbG9yKGNvbnN0IENvbG9yJiB2YWx1ZSkKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3Rl
OjpzZXRCb3JkZXJDb2xvcihjb25zdCBPcHRpb25hbFJHQkEmIHZhbHVlKQogewogICAgIGlmICh2
YWx1ZSA9PSBtX3Byb3BlcnRpZXMuYm9yZGVyQ29sb3IpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRm
b3JtQ0FMYXllclJlbW90ZS5oCmluZGV4IGQwZjRjN2QwYjczMTNkMDNkMmFiMWNiZWNmMmY1ZDll
NjgxYjkzNDkuLmU0OWMwNDg5NzljMDAzZmQwMzUyZDdlYzE5MTkzMDI3OTIyYjFjMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaApAQCAtMTE3LDExICsxMTcsMTEgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzZXRNaW5pZmljYXRpb25GaWx0ZXIoV2ViQ29yZTo6UGxhdGZvcm1DQUxh
eWVyOjpGaWx0ZXJUeXBlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFnbmlmaWNh
dGlvbkZpbHRlcihXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkZpbHRlclR5cGUpIG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpDb2xvciBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNv
cmU6OkNvbG9yJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpPcHRpb25hbFJHQkEg
YmFja2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldEJh
Y2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmKSBvdmVycmlkZTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzZXRCb3JkZXJXaWR0aChmbG9hdCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHNldEJvcmRlckNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIHNldEJvcmRlckNvbG9yKGNvbnN0IFdlYkNvcmU6Ok9wdGlvbmFs
UkdCQSYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBmbG9hdCBvcGFjaXR5KCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwCmluZGV4IDA1
OGFlMmE5OTE3NmE0NGE4M2MxYThmOGM2NDMwN2RjNzAzNTFiNjMuLmFkM2Y4MGZhNDI2YjJlNzhl
NzI3NWEwYjI2OGU3YjVjZDZkOWM0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXll
clJlbW90ZVRpbGVkQmFja2luZy5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZVRpbGVkQmFja2luZzo6c2V0Qm9yZGVyV2lkdGgoZmxvYXQgYm9yZGVyV2lk
dGgpCiAgICAgbV90aWxlQ29udHJvbGxlci0+c2V0VGlsZURlYnVnQm9yZGVyV2lkdGgoYm9yZGVy
V2lkdGggLyAyKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmc6
OnNldEJvcmRlckNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3ZvaWQgUGxhdGZv
cm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nOjpzZXRCb3JkZXJDb2xvcihjb25zdCBXZWJDb3Jl
OjpPcHRpb25hbFJHQkEmIGNvbG9yKQogewogICAgIG1fdGlsZUNvbnRyb2xsZXItPnNldFRpbGVE
ZWJ1Z0JvcmRlckNvbG9yKGNvbG9yKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJl
bW90ZVRpbGVkQmFja2luZy5oCmluZGV4IGQ1ZjRkMjYzMjhhYmE0ZTBjZjM0NGNmZmMxNzEwMTNl
NGM3YTE3M2YuLjk2ODg3YzFjMTkxM2U4MjgxNTZkZWFjYTgwNGI0MjNiNmRjNTVmMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlVGlsZWRCYWNraW5nLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuaApAQCAtNTcsNyAr
NTcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1NjYWxlKGZsb2F0
KSBvdmVycmlkZTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Qm9yZGVyV2lkdGgoZmxvYXQp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCb3JkZXJDb2xvcihjb25zdCBXZWJDb3Jl
OjpDb2xvciYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRCb3JkZXJDb2xvcihjb25z
dCBXZWJDb3JlOjpPcHRpb25hbFJHQkEmKSBvdmVycmlkZTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpUaWxlQ29udHJvbGxlcj4gbV90aWxlQ29udHJvbGxlcjsKICAgICBtdXRhYmxl
IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckxpc3QgbV9jdXN0b21TdWJsYXllcnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbQppbmRleCBmNWVhMTRlMTgzNjA4NTA1MzQxODJiYWE5YjQ2MGI1ZWJkNjhhNWY1
Li5iNDZlNDhkNmI4ZTA1MmVkNzFhMjZiMzMyZWZmYjFiMjRjYjIxYmJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0KQEAgLTQyNyw3ICs0MjcsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OmRpZFNldHVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgW0NBVHJhbnNh
Y3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKIAogICAgIFt2aWRlb0xheWVyIHNldFBvc2l0
aW9uOkNHUG9pbnRNYWtlKDAsIDApXTsKLSAgICBbdmlkZW9MYXllciBzZXRCYWNrZ3JvdW5kQ29s
b3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnQsIFdlYkNvcmU6OkNv
bG9yU3BhY2VEZXZpY2VSR0IpXTsKKyAgICBbdmlkZW9MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6
Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpPcHRpb25hbFJHQkE6OnRyYW5zcGFyZW50LCBXZWJDb3Jl
OjpDb2xvclNwYWNlRGV2aWNlUkdCKV07CiAKICAgICAvLyBTZXQgYSBzY2FsZSBmYWN0b3IgaGVy
ZSB0byBtYWtlIGNvbnZlcnRSZWN0OnRvTGF5ZXI6bmlsIHRha2Ugc2NhbGUgZmFjdG9yIGludG8g
YWNjb3VudC4gPHJkYXI6Ly9wcm9ibGVtLzE4MzE2NTQyPi4KICAgICAvLyBUaGlzIHNjYWxlIGZh
Y3RvciBpcyBpbnZlcnRlZCBpbiB0aGUgaG9zdGluZyBwcm9jZXNzLgpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDI4OTdiYmY4ODRhMDg4MWUxYTQz
ZTNiYWQ0OWMyZDAwYTcxZjBkMTIuLmJiNmY0M2EwOGY2MjMzMGVmMjAyNTA3NzY2M2UwMTg4NWQ2
OTNlNTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAxNS0wOC0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVuYW1lIENvbG9yIHRvIE9wdGlvbmFsUkdCQQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3ODIwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2RvLXdlYmNvcmUt
cmVuYW1lOiBVc2VkIHRoaXMgc2NyaXB0IHRvIGRvIHRoZSByZW5hbWUuCisKIDIwMTUtMDgtMDcg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBb
R1RLXSBBbm90aGVyIGJ1aWxkIGZpeCBhZnRlciByMTg4MTU3LgpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZSBiL1Rvb2xzL1NjcmlwdHMvZG8td2ViY29yZS1yZW5h
bWUKaW5kZXggMDk5OTQzMmMyYTBkOTRiZDMxN2M0MDFhMzVlZTUzMDBkNzYwNjRlYi4uNmYwMTc3
MDU5NWFiMDZhMzg3Njg5OWEzNjcyNWYxOGVhMDVmYTI1YSAxMDA3NTUKLS0tIGEvVG9vbHMvU2Ny
aXB0cy9kby13ZWJjb3JlLXJlbmFtZQorKysgYi9Ub29scy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVu
YW1lCkBAIC05OCw3ICs5OCw3IEBAIHN1YiB3YW50ZWQKIG15ICRpc0RPTVR5cGVSZW5hbWUgPSAw
OwogbXkgJXJlbmFtZXMgPSAoCiAgICAgIyBSZW5hbWVzIGdvIGhlcmUgaW4gdGhlIGZvcm0gb2Y6
Ci0gICAgImRlbGV0ZUFsbFZhbHVlcyIgPT4gImRlcHJlY2F0ZWREZWxldGVBbGxWYWx1ZXMiLAor
ICAgICJDb2xvciIgPT4gIk9wdGlvbmFsUkdCQSIsCiApOwogCiBteSAlcmVuYW1lc0NvbnRlbXBs
YXRlZEZvclRoZUZ1dHVyZSA9ICgK
</data>
<flag name="review"
          id="283779"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>