<?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>140559</bug_id>
          
          <creation_ts>2015-01-16 12:40:54 -0800</creation_ts>
          <short_desc>Add a basic configuration object for WKView</short_desc>
          <delta_ts>2015-01-17 08:50:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1061906</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-16 12:40:54 -0800</bug_when>
    <thetext>Add a basic configuration object for WKView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061908</commentid>
    <comment_count>1</comment_count>
      <attachid>244788</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-16 12:46:13 -0800</bug_when>
    <thetext>Created attachment 244788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061912</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-16 12:48:14 -0800</bug_when>
    <thetext>Attachment 244788 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/APIPageConfiguration.cpp:50:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/UIProcess/API/APIPageConfiguration.cpp:60:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 21 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>1061999</commentid>
    <comment_count>3</comment_count>
      <attachid>244810</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-16 15:37:20 -0800</bug_when>
    <thetext>Created attachment 244810
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062038</commentid>
    <comment_count>4</comment_count>
      <attachid>244810</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-01-16 16:47:01 -0800</bug_when>
    <thetext>Comment on attachment 244810
Patch

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

&gt; Source/WebKit2/UIProcess/API/APIPageConfiguration.h:45
&gt; +    static PassRefPtr&lt;PageConfiguration&gt; create()

Ref.

&gt; Source/WebKit2/UIProcess/API/C/WKUserContentControllerRef.cpp:44
&gt; +WKArrayRef WKUserContentControllerGetUserScripts(WKUserContentControllerRef userContentControllerRef)

This should probably copy the user scripts.

&gt; Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.h:60
&gt; +    static RefPtr&lt;WebUserContentControllerProxy&gt; create()

Ref!

&gt; Tools/TestWebKitAPI/Tests/WebKit2/WKPageConfiguration.cpp:44
&gt; +    ASSERT_NULL(WKPageConfigurationGetContext(configuration.get()));
&gt; +    ASSERT_NULL(WKPageConfigurationGetUserContentController(configuration.get()));
&gt; +    ASSERT_NULL(WKPageConfigurationGetPageGroup(configuration.get()));
&gt; +    ASSERT_NULL(WKPageConfigurationGetPreferences(configuration.get()));
&gt; +    ASSERT_NULL(WKPageConfigurationGetRelatedPage(configuration.get()));

Shouldn&apos;t these be instantiated when you ask for them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062049</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-16 17:09:11 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 244810 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=244810&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/APIPageConfiguration.h:45
&gt; &gt; +    static PassRefPtr&lt;PageConfiguration&gt; create()
&gt; 
&gt; Ref.
&gt; 

Will change.

&gt; &gt; Source/WebKit2/UIProcess/API/C/WKUserContentControllerRef.cpp:44
&gt; &gt; +WKArrayRef WKUserContentControllerGetUserScripts(WKUserContentControllerRef userContentControllerRef)
&gt; 
&gt; This should probably copy the user scripts.

Ok.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.h:60
&gt; &gt; +    static RefPtr&lt;WebUserContentControllerProxy&gt; create()
&gt; 
&gt; Ref!

Will change.

&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit2/WKPageConfiguration.cpp:44
&gt; &gt; +    ASSERT_NULL(WKPageConfigurationGetContext(configuration.get()));
&gt; &gt; +    ASSERT_NULL(WKPageConfigurationGetUserContentController(configuration.get()));
&gt; &gt; +    ASSERT_NULL(WKPageConfigurationGetPageGroup(configuration.get()));
&gt; &gt; +    ASSERT_NULL(WKPageConfigurationGetPreferences(configuration.get()));
&gt; &gt; +    ASSERT_NULL(WKPageConfigurationGetRelatedPage(configuration.get()));
&gt; 
&gt; Shouldn&apos;t these be instantiated when you ask for them?

I want that to be the case eventually, but I need to do more refactoring a bit lower down to make it clean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062063</commentid>
    <comment_count>6</comment_count>
      <attachid>244825</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-16 17:54:10 -0800</bug_when>
    <thetext>Created attachment 244825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062065</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-16 18:07:32 -0800</bug_when>
    <thetext>Committed r178618: &lt;http://trac.webkit.org/changeset/178618&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062107</commentid>
    <comment_count>8</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-01-17 08:50:12 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Committed r178618: &lt;http://trac.webkit.org/changeset/178618&gt;

Looks like you could have used an iOS EWS bot, Sam.  :(

Attempted iOS build fix:
Committed r178625: &lt;http://trac.webkit.org/changeset/178625&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244788</attachid>
            <date>2015-01-16 12:46:13 -0800</date>
            <delta_ts>2015-01-16 13:59:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140559-20150116124618.patch</filename>
            <type>text/plain</type>
            <size>54356</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3ODU5MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDE1LTAxLTE2ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGEgYmFzaWMgY29uZmlndXJhdGlv
biBvYmplY3QgZm9yIFdLVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQwNTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgLSBBZGRzIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgKGJhY2tlZCBieSBBUEk6
OlBhZ2VDb25maWd1cmF0aW9uKS4gV0tXZWJWaWV3IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICBp
cyBub3QgeWV0IGJyaWRnZWQgdG8gdGhpcywgYnV0IHRoYXQgd2lsbCBoYXBwZW4gc29vbi4gRm9y
IG5vdywgaXQgaGFzIGEgZmV3IGJhc2ljCisgICAgICAgICAgY29uZmlndXJhdGlvbiBvcHRpb25z
LgorICAgICAgICAtIEFkZHMgV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYgYXMgQy1TUEkgdmVy
c2lvbiBvZiBXS1VzZXJDb250ZW50Q29udHJvbGxlci4KKyAgICAgICAgLSBBZGRzIFdLVXNlclNj
cmlwdFJlZiBhcyBDLVNQSSB2ZXJzaW9uIG9mIFdLVXNlclNjcmlwdC4KKworICAgICAgICAqIFNo
YXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOgor
ICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaDoKKyAgICAgICAgKFdlYktp
dDo6dG9XS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChBUEk6OlBhZ2VDb25m
aWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1
cmF0aW9uOjp+UGFnZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJh
dGlvbjo6cHJvY2Vzc1Bvb2wpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0
UHJvY2Vzc1Bvb2wpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6dXNlckNvbnRl
bnRDb250cm9sbGVyKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFVzZXJD
b250ZW50Q29udHJvbGxlcik6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpwYWdl
R3JvdXApOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0UGFnZUdyb3VwKToK
KyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnByZWZlcmVuY2VzKToKKyAgICAgICAg
KEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFByZWZlcmVuY2VzKToKKyAgICAgICAgKEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb246OnJlbGF0ZWRQYWdlKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb246OnNldFJlbGF0ZWRQYWdlKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b246OndlYlBhZ2VDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBh
Z2VDb25maWd1cmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoQVBJOjpMYXp5SW5pdGlhbGl6ZWQ6
OmdldCk6CisgICAgICAgIChBUEk6OkxhenlJbml0aWFsaXplZDo6c2V0KToKKyAgICAgICAgKEFQ
STo6TGF6eUluaXRpYWxpemVkOjpwZWVrKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b246OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcDog
QWRkZWQuCisgICAgICAgIChBUEk6OmdlbmVyYXRlSWRlbnRpZmllcik6CisgICAgICAgIChBUEk6
OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSVVzZXJTY3JpcHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRUeXBlSUQpOgorICAgICAgICAo
V0tQYWdlQ29uZmlndXJhdGlvbkNyZWF0ZSk6CisgICAgICAgIChXS1BhZ2VDb25maWd1cmF0aW9u
R2V0Q29udGV4dCk6CisgICAgICAgIChXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dCk6Cisg
ICAgICAgIChXS1BhZ2VDb25maWd1cmF0aW9uR2V0UGFnZUdyb3VwKToKKyAgICAgICAgKFdLUGFn
ZUNvbmZpZ3VyYXRpb25TZXRQYWdlR3JvdXApOgorICAgICAgICAoV0tQYWdlQ29uZmlndXJhdGlv
bkdldFByZWZlcmVuY2VzKToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRQcmVmZXJl
bmNlcyk6CisgICAgICAgIChXS1BhZ2VDb25maWd1cmF0aW9uR2V0UmVsYXRlZFBhZ2UpOgorICAg
ICAgICAoV0tQYWdlQ29uZmlndXJhdGlvblNldFJlbGF0ZWRQYWdlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdLVXNlckNvbnRlbnRDb250cm9sbGVyR2V0VHlwZUlEKToKKyAgICAgICAgKFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyQ3JlYXRlKToKKyAgICAgICAgKFdLVXNlckNvbnRlbnRDb250cm9s
bGVyR2V0VXNlclNjcmlwdHMpOgorICAgICAgICAoV0tVc2VyQ29udGVudENvbnRyb2xsZXJBZGRV
c2VyU2NyaXB0KToKKyAgICAgICAgKFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVtb3ZlQWxsVXNl
clNjcmlwdHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29udHJv
bGxlclJlZi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyU2NyaXB0
UmVmLmNwcDogQWRkZWQuCisgICAgICAgIChXS1VzZXJTY3JpcHRHZXRUeXBlSUQpOgorICAgICAg
ICAoV0tVc2VyU2NyaXB0Q3JlYXRlV2l0aFNvdXJjZSk6CisgICAgICAgIChXS1VzZXJTY3JpcHRD
b3B5U291cmNlKToKKyAgICAgICAgKFdLVXNlclNjcmlwdEdldEluamVjdGlvblRpbWUpOgorICAg
ICAgICAoV0tVc2VyU2NyaXB0R2V0TWFpbkZyYW1lT25seSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLVXNlclNjcmlwdFJlZi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVXNlclNjcmlwdC5tbToKKyAgICAgICAgKC1bV0tVc2VyU2NyaXB0IGluaXRXaXRo
U291cmNlOmluamVjdGlvblRpbWU6Zm9yTWFpbkZyYW1lT25seTpdKToKKyAgICAgICAgKGdlbmVy
YXRlSWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1ZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdD
b25maWd1cmF0aW9uLm1tOgorICAgICAgICAoTGF6eUluaXRpYWxpemVkOjpnZXQpOiBEZWxldGVk
LgorICAgICAgICAoTGF6eUluaXRpYWxpemVkOjpzZXQpOiBEZWxldGVkLgorICAgICAgICAoTGF6
eUluaXRpYWxpemVkOjpwZWVrKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3VyYXRp
b246XSk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjpjcmVhdGUpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKwogMjAxNS0wMS0xNiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgogCiAgICAgICAgIExvZyB1bmhhbmRsZWQgbWVzc2FnZXMgaW4gdGhlIHdlYiBwcm9jZXNzCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgJKHJldmlzaW9uIDE3ODU4MSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyOCw2ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIE9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyLAogICAgICAgICBPcmlnaW5EYXRhTWFuYWdlciwKICAgICAgICAgUGFnZSwKKyAgICAgICAg
UGFnZUNvbmZpZ3VyYXRpb24sCiAgICAgICAgIFBhZ2VHcm91cCwKICAgICAgICAgUHJvY2Vzc1Bv
b2wsCiAgICAgICAgIFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiwKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tCYXNlLmgJKHJldmlzaW9uIDE3ODU4MSkKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDYgKzEyMCw3IEBA
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLT3BlblBhbmVsUGEKIHR5cGVkZWYgY29uc3Qg
c3RydWN0IE9wYXF1ZVdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIqIFdLT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS09yaWdpbkRhdGFNYW5h
Z2VyKiBXS09yaWdpbkRhdGFNYW5hZ2VyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVl
V0tQYWdlKiBXS1BhZ2VSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BhZ2VDb25m
aWd1cmF0aW9uKiBXS1BhZ2VDb25maWd1cmF0aW9uUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
T3BhcXVlV0tQYWdlR3JvdXAqIFdLUGFnZUdyb3VwUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
T3BhcXVlV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXIqIFdLUGx1Z2luU2l0ZURhdGFNYW5hZ2VyUmVm
OwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQcmVmZXJlbmNlcyogV0tQcmVmZXJlbmNl
c1JlZjsKQEAgLTEyNyw3ICsxMjgsOSBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1By
b3RlY3Rpb25TCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1RleHRDaGVja2VyKiBXS1Rl
eHRDaGVja2VyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tTZXNzaW9uKiBXS1Nl
c3Npb25SZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1Nlc3Npb25TdGF0ZSogV0tT
ZXNzaW9uU3RhdGVSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1VzZXJDb250ZW50
Q29udHJvbGxlciogV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KiBXS1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tVc2VyU2NyaXB0
KiBXS1VzZXJTY3JpcHRSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ZpYnJhdGlv
biogV0tWaWJyYXRpb25SZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ZpZXdwb3J0
QXR0cmlidXRlcyogV0tWaWV3cG9ydEF0dHJpYnV0ZXNSZWY7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgJKHJldmlzaW9uIDE3ODU4MSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTczLDYgKzk3MywxOSBAQCBpbmxpbmUgV2ViQ29yZTo6VXNlclNjcmlwdElu
amVjdGlvblRpbWUgCiAgICAgcmV0dXJuIFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRTdGFydDsK
IH0KIAoraW5saW5lIF9XS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lIHRvV0tVc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZShXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3RlZFRpbWUp
Cit7CisgICAgc3dpdGNoIChpbmplY3RlZFRpbWUpIHsKKyAgICBjYXNlIFdlYkNvcmU6OkluamVj
dEF0RG9jdW1lbnRTdGFydDoKKyAgICAgICAgcmV0dXJuIGtXS0luamVjdEF0RG9jdW1lbnRTdGFy
dDsKKyAgICBjYXNlIFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRFbmQ6CisgICAgICAgIHJldHVy
biBrV0tJbmplY3RBdERvY3VtZW50RW5kOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBrV0tJbmplY3RBdERvY3VtZW50U3RhcnQ7Cit9CisKIGlubGluZSBX
ZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIHRvVXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lcyhXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgd2tJbmplY3RlZEZyYW1lcykKIHsKICAg
ICBzd2l0Y2ggKHdrSW5qZWN0ZWRGcmFtZXMpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKKworI2luY2x1
ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIldlYlBhZ2VHcm91
cC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2Vz
LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCituYW1lc3Bh
Y2UgQVBJIHsKKworUGFnZUNvbmZpZ3VyYXRpb246OlBhZ2VDb25maWd1cmF0aW9uKCkKK3sKK30K
KworUGFnZUNvbmZpZ3VyYXRpb246On5QYWdlQ29uZmlndXJhdGlvbigpCit7Cit9CisKK1dlYlBy
b2Nlc3NQb29sKiBQYWdlQ29uZmlndXJhdGlvbjo6cHJvY2Vzc1Bvb2woKQoreworICAgIHJldHVy
biBtX3Byb2Nlc3NQb29sLmdldChbXSB7IHJldHVybiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQ
STo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKS0+d2ViUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uKCkpOyB9KTsKK30KKwordm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0UHJvY2Vz
c1Bvb2woV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQoreworICAgIG1fcHJvY2Vzc1Bvb2wu
c2V0KHByb2Nlc3NQb29sKTsKK30KKworV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqIFBh
Z2VDb25maWd1cmF0aW9uOjp1c2VyQ29udGVudENvbnRyb2xsZXIoKQoreworICAgIHJldHVybiBt
X3VzZXJDb250ZW50Q29udHJvbGxlci5nZXQoW10geyByZXR1cm4gV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OmNyZWF0ZSgpOyB9KTsKK30KKwordm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6
c2V0VXNlckNvbnRlbnRDb250cm9sbGVyKFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KiB1
c2VyQ29udGVudENvbnRyb2xsZXIpCit7CisgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXIuc2V0
KHVzZXJDb250ZW50Q29udHJvbGxlcik7Cit9CisKK1dlYlBhZ2VHcm91cCogUGFnZUNvbmZpZ3Vy
YXRpb246OnBhZ2VHcm91cCgpCit7CisgICAgcmV0dXJuIG1fcGFnZUdyb3VwLmdldCgpOworfQor
Cit2b2lkIFBhZ2VDb25maWd1cmF0aW9uOjpzZXRQYWdlR3JvdXAoV2ViUGFnZUdyb3VwKiBwYWdl
R3JvdXApCit7CisgICAgbV9wYWdlR3JvdXAgPSBwYWdlR3JvdXA7Cit9CisKK1dlYlByZWZlcmVu
Y2VzKiBQYWdlQ29uZmlndXJhdGlvbjo6cHJlZmVyZW5jZXMoKQoreworICAgIHJldHVybiBtX3By
ZWZlcmVuY2VzLmdldCgpOworfQorCit2b2lkIFBhZ2VDb25maWd1cmF0aW9uOjpzZXRQcmVmZXJl
bmNlcyhXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMpCit7CisgICAgbV9wcmVmZXJlbmNlcyA9
IHByZWZlcmVuY2VzOworfQorCitXZWJQYWdlUHJveHkqIFBhZ2VDb25maWd1cmF0aW9uOjpyZWxh
dGVkUGFnZSgpCit7CisgICAgcmV0dXJuIG1fcmVsYXRlZFBhZ2UuZ2V0KCk7Cit9CisKK3ZvaWQg
UGFnZUNvbmZpZ3VyYXRpb246OnNldFJlbGF0ZWRQYWdlKFdlYlBhZ2VQcm94eSogcmVsYXRlZFBh
Z2UpCit7CisgICAgbV9yZWxhdGVkUGFnZSA9IHJlbGF0ZWRQYWdlOworfQorCitXZWJLaXQ6Oldl
YlBhZ2VDb25maWd1cmF0aW9uIFBhZ2VDb25maWd1cmF0aW9uOjp3ZWJQYWdlQ29uZmlndXJhdGlv
bigpCit7CisgICAgV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwor
CisgICAgY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1c2VyQ29udGVudENv
bnRyb2xsZXIoKTsKKyAgICBjb25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IHBhZ2VHcm91cCgpOwor
ICAgIGNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMgPSBwcmVmZXJlbmNlcygpOworICAgIGNvbmZp
Z3VyYXRpb24ucmVsYXRlZFBhZ2UgPSByZWxhdGVkUGFnZSgpOworCisgICAgcmV0dXJuIGNvbmZp
Z3VyYXRpb247Cit9CisKK30gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
QVBJUGFnZUNvbmZpZ3VyYXRpb25faAorI2RlZmluZSBBUElQYWdlQ29uZmlndXJhdGlvbl9oCisK
KyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworc3RydWN0IFdlYlBhZ2VDb25maWd1cmF0aW9uOworY2xhc3MgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk7CitjbGFzcyBXZWJQcm9jZXNzUG9vbDsKK2NsYXNzIFdl
YlBhZ2VHcm91cDsKK2NsYXNzIFdlYlByZWZlcmVuY2VzOworY2xhc3MgV2ViUGFnZVByb3h5Owor
fQorCituYW1lc3BhY2UgQVBJIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgTGF6eUlu
aXRpYWxpemVkIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFdURjo6R2V0UHRySGVs
cGVyPFQ+OjpQdHJUeXBlIFB0clR5cGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGPgorICAg
IFB0clR5cGUgZ2V0KEYmJiBmKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQp
IHsKKyAgICAgICAgICAgIG1fdmFsdWUgPSBmKCk7CisgICAgICAgICAgICBtX2lzSW5pdGlhbGl6
ZWQgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUuZ2V0KCk7Cisg
ICAgfQorCisgICAgdm9pZCBzZXQoUHRyVHlwZSB0KQorICAgIHsKKyAgICAgICAgbV92YWx1ZSA9
IHQ7CisgICAgICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7CisgICAgfQorCisgICAgdm9pZCBz
ZXQoVCYmIHQpCisgICAgeworICAgICAgICBtX3ZhbHVlID0gV1RGOjptb3ZlKHQpOworICAgICAg
ICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIH0KKworICAgIFB0clR5cGUgcGVlaygpCisg
ICAgeworICAgICAgICByZXR1cm4gbV92YWx1ZS5nZXQoKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBUIG1fdmFsdWU7Cit9OworCitj
bGFzcyBQYWdlQ29uZmlndXJhdGlvbiA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6
UGFnZUNvbmZpZ3VyYXRpb24+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQYWdl
Q29uZmlndXJhdGlvbj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgUGFnZUNvbmZpZ3VyYXRpb24pOworICAgIH0KKyAgICB2aXJ0dWFsIH5QYWdlQ29uZmlndXJh
dGlvbigpOworCisgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2woKTsKKyAg
ICB2b2lkIHNldFByb2Nlc3NQb29sKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqKTsKKworICAgIFdl
YktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqIHVzZXJDb250ZW50Q29udHJvbGxl
cigpOworICAgIHZvaWQgc2V0VXNlckNvbnRlbnRDb250cm9sbGVyKFdlYktpdDo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkqKTsKKworICAgIFdlYktpdDo6V2ViUGFnZUdyb3VwKiBwYWdl
R3JvdXAoKTsKKyAgICB2b2lkIHNldFBhZ2VHcm91cChXZWJLaXQ6OldlYlBhZ2VHcm91cCopOwor
CisgICAgV2ViS2l0OjpXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMoKTsKKyAgICB2b2lkIHNl
dFByZWZlcmVuY2VzKFdlYktpdDo6V2ViUHJlZmVyZW5jZXMqKTsKKworICAgIFdlYktpdDo6V2Vi
UGFnZVByb3h5KiByZWxhdGVkUGFnZSgpOworICAgIHZvaWQgc2V0UmVsYXRlZFBhZ2UoV2ViS2l0
OjpXZWJQYWdlUHJveHkqKTsKKworICAgIFdlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24gd2Vi
UGFnZUNvbmZpZ3VyYXRpb24oKTsKKworcHJpdmF0ZToKKyAgICBQYWdlQ29uZmlndXJhdGlvbigp
OworCisgICAgTGF6eUluaXRpYWxpemVkPFJlZlB0cjxXZWJLaXQ6OldlYlByb2Nlc3NQb29sPj4g
bV9wcm9jZXNzUG9vbDsKKyAgICBMYXp5SW5pdGlhbGl6ZWQ8UmVmUHRyPFdlYktpdDo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk+PiBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyAgICBS
ZWZQdHI8V2ViS2l0OjpXZWJQYWdlR3JvdXA+IG1fcGFnZUdyb3VwOworICAgIFJlZlB0cjxXZWJL
aXQ6OldlYlByZWZlcmVuY2VzPiBtX3ByZWZlcmVuY2VzOworICAgIFJlZlB0cjxXZWJLaXQ6Oldl
YlBhZ2VQcm94eT4gbV9yZWxhdGVkUGFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCisK
KyNlbmRpZiAvLyBBUElQYWdlQ29uZmlndXJhdGlvbl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQVBJVXNlclNjcmlwdC5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgorCituYW1lc3BhY2UgQVBJIHsKKworc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlSWRlbnRp
ZmllcigpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXI7CisKKyAgICByZXR1cm4g
KytpZGVudGlmaWVyOworfQorCitXZWJDb3JlOjpVUkwgVXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlx
dWVVUkwoKQoreworICAgIFN0cmluZ0J1aWxkZXIgdXJsU3RyaW5nQnVpbGRlcjsKKyAgICB1cmxT
dHJpbmdCdWlsZGVyLmFwcGVuZCgidXNlci1zY3JpcHQ6Iik7CisgICAgdXJsU3RyaW5nQnVpbGRl
ci5hcHBlbmROdW1iZXIoZ2VuZXJhdGVJZGVudGlmaWVyKCkpOworICAgIHJldHVybiBXZWJDb3Jl
OjpVUkwgeyBXZWJDb3JlOjpVUkwgeyB9LCB1cmxTdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkgfTsK
K30KKworCit9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJVXNlclNjcmlwdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oCShyZXZpc2lvbiAxNzg1ODEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NiArMzMsMTMgQEAgbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFVzZXJTY3JpcHQgZmluYWwgOiBw
dWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVzZXJTY3JpcHQ+IHsKIHB1YmxpYzoKKyAg
ICBzdGF0aWMgV2ViQ29yZTo6VVJMIGdlbmVyYXRlVW5pcXVlVVJMKCk7CisKKyAgICBzdGF0aWMg
UmVmUHRyPFVzZXJTY3JpcHQ+IGNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFVzZXJTY3JpcHQodXNlclNjcmlw
dCkpOworICAgIH0KKwogICAgIFVzZXJTY3JpcHQoV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2Ny
aXB0KQogICAgICAgICA6IG1fdXNlclNjcmlwdCh1c2VyU2NyaXB0KQogICAgIHsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9uIDE3ODU4
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsOCArNTIsMTAgQEAKIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBOYXZp
Z2F0aW9uRGF0YTsKK2NsYXNzIFBhZ2VDb25maWd1cmF0aW9uOwogY2xhc3MgUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOwogY2xhc3MgU2Vzc2lvblN0YXRlOworY2xhc3MgVXNlclNjcmlwdDsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02OSw3ICs3MSw2IEBAIGNsYXNzIFdlYkJhY2tGb3J3
YXJkTGlzdDsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CiBjbGFzcyBXZWJCYXR0ZXJ5
TWFuYWdlclByb3h5OwogY2xhc3MgV2ViQmF0dGVyeVN0YXR1czsKLWNsYXNzIFdlYlJlc291cmNl
Q2FjaGVNYW5hZ2VyUHJveHk7CiBjbGFzcyBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJv
eHk7CiBjbGFzcyBXZWJDb29raWVNYW5hZ2VyUHJveHk7CiBjbGFzcyBXZWJDcmVkZW50aWFsOwpA
QCAtODYsOCArODcsOCBAQCBjbGFzcyBXZWJJbnNwZWN0b3JQcm94eTsKIGNsYXNzIFdlYktleVZh
bHVlU3RvcmFnZU1hbmFnZXI7CiBjbGFzcyBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5OwogY2xh
c3MgV2ViTm90aWZpY2F0aW9uOwotY2xhc3MgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI7CiBjbGFz
cyBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk7CitjbGFzcyBXZWJOb3RpZmljYXRpb25Qcm92
aWRlcjsKIGNsYXNzIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnM7CiBjbGFzcyBXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5OwogY2xhc3MgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTsKQEAg
LTk5LDcgKzEwMCw5IEBAIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogY2xhc3MgV2ViUHJvdGVjdGlv
blNwYWNlOwogY2xhc3MgV2ViUmVuZGVyTGF5ZXI7CiBjbGFzcyBXZWJSZW5kZXJPYmplY3Q7Citj
bGFzcyBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5OwogY2xhc3MgV2ViVGV4dENoZWNrZXI7
CitjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKIGNsYXNzIFdlYlZpYnJhdGlv
blByb3h5OwogY2xhc3MgV2ViVmlld3BvcnRBdHRyaWJ1dGVzOwogCkBAIC0xMzksNiArMTQyLDcg
QEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLT3BlblBhbmVsUGFyYW1ldGVycwogV0tfQUREX0FQSV9N
QVBQSU5HKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYsIFdlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyUHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tPcmlnaW5EYXRhTWFuYWdlclJlZiwg
V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS1BhZ2VHcm91
cFJlZiwgV2ViUGFnZUdyb3VwKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLUGFnZUNvbmZpZ3VyYXRp
b25SZWYsIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24pCiBXS19BRERfQVBJX01BUFBJTkcoV0tQYWdl
UmVmLCBXZWJQYWdlUHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tQbHVnaW5TaXRlRGF0YU1h
bmFnZXJSZWYsIFdlYlBsdWdpblNpdGVEYXRhTWFuYWdlcikKIFdLX0FERF9BUElfTUFQUElORyhX
S1ByZWZlcmVuY2VzUmVmLCBXZWJQcmVmZXJlbmNlcykKQEAgLTE0Nyw3ICsxNTEsOSBAQCBXS19B
RERfQVBJX01BUFBJTkcoV0tSZW5kZXJMYXllclJlZiwgV2ViCiBXS19BRERfQVBJX01BUFBJTkco
V0tSZW5kZXJPYmplY3RSZWYsIFdlYlJlbmRlck9iamVjdCkKIFdLX0FERF9BUElfTUFQUElORyhX
S1Nlc3Npb25TdGF0ZVJlZiwgQVBJOjpTZXNzaW9uU3RhdGUpCiBXS19BRERfQVBJX01BUFBJTkco
V0tUZXh0Q2hlY2tlclJlZiwgV2ViVGV4dENoZWNrZXIpCitXS19BRERfQVBJX01BUFBJTkcoV0tV
c2VyQ29udGVudENvbnRyb2xsZXJSZWYsIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KQog
V0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYsIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkpCitXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyU2Ny
aXB0UmVmLCBBUEk6OlVzZXJTY3JpcHQpCiBXS19BRERfQVBJX01BUFBJTkcoV0tWaWJyYXRpb25S
ZWYsIFdlYlZpYnJhdGlvblByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVmlld3BvcnRBdHRy
aWJ1dGVzUmVmLCBXZWJWaWV3cG9ydEF0dHJpYnV0ZXMpCiBXS19BRERfQVBJX01BUFBJTkcoV0tJ
bnNwZWN0b3JSZWYsIFdlYkluc3BlY3RvclByb3h5KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25m
aWd1cmF0aW9uUmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLUGFnZUNvbmZpZ3VyYXRpb25S
ZWYuaCIKKworI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiV0tB
UElDYXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLUGFnZUNv
bmZpZ3VyYXRpb25HZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b0FQSShBUEk6OlBhZ2VDb25m
aWd1cmF0aW9uOjpBUElUeXBlKTsKK30KKworV0tQYWdlQ29uZmlndXJhdGlvblJlZiBXS1BhZ2VD
b25maWd1cmF0aW9uQ3JlYXRlKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoQVBJOjpQYWdlQ29uZmln
dXJhdGlvbjo6Y3JlYXRlKCkubGVha1JlZigpKTsKK30KKworV0tDb250ZXh0UmVmIFdLUGFnZUNv
bmZpZ3VyYXRpb25HZXRDb250ZXh0KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlv
bikKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5wcm9jZXNzUG9v
bCgpKTsKK30KKwordm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dChXS1BhZ2VDb25m
aWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLQ29udGV4dFJlZiBjb250ZXh0KQoreworICAg
IHRvSW1wbChjb25maWd1cmF0aW9uKS0+c2V0UHJvY2Vzc1Bvb2wodG9JbXBsKGNvbnRleHQpKTsK
K30KKworV0tQYWdlR3JvdXBSZWYgV0tQYWdlQ29uZmlndXJhdGlvbkdldFBhZ2VHcm91cChXS1Bh
Z2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgcmV0dXJuIHRvQVBJKHRv
SW1wbChjb25maWd1cmF0aW9uKS0+cGFnZUdyb3VwKCkpOworfQorCit2b2lkIFdLUGFnZUNvbmZp
Z3VyYXRpb25TZXRQYWdlR3JvdXAoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9u
LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXApCit7CisgICAgdG9JbXBsKGNvbmZpZ3VyYXRpb24p
LT5zZXRQYWdlR3JvdXAodG9JbXBsKHBhZ2VHcm91cCkpOworfQorCitXS1ByZWZlcmVuY2VzUmVm
IFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRQcmVmZXJlbmNlcyhXS1BhZ2VDb25maWd1cmF0aW9uUmVm
IGNvbmZpZ3VyYXRpb24pCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb25maWd1cmF0aW9u
KS0+cHJlZmVyZW5jZXMoKSk7Cit9CisKK3ZvaWQgV0tQYWdlQ29uZmlndXJhdGlvblNldFByZWZl
cmVuY2VzKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlcykKK3sKKyAgICB0b0ltcGwoY29uZmlndXJhdGlvbiktPnNldFByZWZl
cmVuY2VzKHRvSW1wbChwcmVmZXJlbmNlcykpOworfQorCitXS1BhZ2VSZWYgV0tQYWdlQ29uZmln
dXJhdGlvbkdldFJlbGF0ZWRQYWdlKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlv
bikKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5yZWxhdGVkUGFn
ZSgpKTsKK30KKwordm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0UmVsYXRlZFBhZ2UoV0tQYWdl
Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS1BhZ2VSZWYgcmVsYXRlZFBhZ2UpCit7
CisgICAgdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5zZXRSZWxhdGVkUGFnZSh0b0ltcGwocmVsYXRl
ZFBhZ2UpKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VD
b25maWd1cmF0aW9uUmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tQYWdlQ29uZmln
dXJhdGlvblJlZl9oCisjZGVmaW5lIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWZfaAorCisjaW5jbHVk
ZSA8V2ViS2l0L1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgewor
I2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1BhZ2VDb25maWd1cmF0aW9uR2V0VHlwZUlE
KCk7CisKK1dLX0VYUE9SVCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIFdLUGFnZUNvbmZpZ3VyYXRp
b25DcmVhdGUoKTsKKworV0tfRVhQT1JUIFdLQ29udGV4dFJlZiBXS1BhZ2VDb25maWd1cmF0aW9u
R2V0Q29udGV4dChXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pOworV0tfRVhQ
T1JUIHZvaWQgV0tQYWdlQ29uZmlndXJhdGlvblNldENvbnRleHQoV0tQYWdlQ29uZmlndXJhdGlv
blJlZiBjb25maWd1cmF0aW9uLCBXS0NvbnRleHRSZWYgY29udGV4dCk7CisKK1dLX0VYUE9SVCBX
S1BhZ2VHcm91cFJlZiBXS1BhZ2VDb25maWd1cmF0aW9uR2V0UGFnZUdyb3VwKFdLUGFnZUNvbmZp
Z3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VDb25maWd1
cmF0aW9uU2V0UGFnZUdyb3VwKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwg
V0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwKTsKKworV0tfRVhQT1JUIFdLUHJlZmVyZW5jZXNSZWYg
V0tQYWdlQ29uZmlndXJhdGlvbkdldFByZWZlcmVuY2VzKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYg
Y29uZmlndXJhdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0UHJl
ZmVyZW5jZXMoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzKTsKKworV0tfRVhQT1JUIFdLUGFnZVJlZiBXS1BhZ2VDb25maWd1
cmF0aW9uR2V0UmVsYXRlZFBhZ2UoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9u
KTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRSZWxhdGVkUGFnZShXS1Bh
Z2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLUGFnZVJlZiByZWxhdGVkUGFnZSk7
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBXS1BhZ2VDb25m
aWd1cmF0aW9uUmVmX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Vz
ZXJDb250ZW50Q29udHJvbGxlclJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29udHJv
bGxlclJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1VzZXJDb250ZW50Q29udHJvbGxlclJl
Zi5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQg
V0tVc2VyQ29udGVudENvbnRyb2xsZXJHZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b0FQSShX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6QVBJVHlwZSk7Cit9CisKK1dLVXNlckNvbnRl
bnRDb250cm9sbGVyUmVmIFdLVXNlckNvbnRlbnRDb250cm9sbGVyQ3JlYXRlKCkKK3sKKyAgICBy
ZXR1cm4gdG9BUEkoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNyZWF0ZSgpLmxlYWtS
ZWYoKSk7Cit9CisKK1dLQXJyYXlSZWYgV0tVc2VyQ29udGVudENvbnRyb2xsZXJHZXRVc2VyU2Ny
aXB0cyhXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZiB1c2VyQ29udGVudENvbnRyb2xsZXJSZWYp
Cit7CisgICAgcmV0dXJuIHRvQVBJKCZ0b0ltcGwodXNlckNvbnRlbnRDb250cm9sbGVyUmVmKS0+
dXNlclNjcmlwdHMoKSk7Cit9CisKK3ZvaWQgV0tVc2VyQ29udGVudENvbnRyb2xsZXJBZGRVc2Vy
U2NyaXB0KFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmIHVzZXJDb250ZW50Q29udHJvbGxlclJl
ZiwgV0tVc2VyU2NyaXB0UmVmIHVzZXJTY3JpcHRSZWYpCit7CisgICAgdG9JbXBsKHVzZXJDb250
ZW50Q29udHJvbGxlclJlZiktPmFkZFVzZXJTY3JpcHQoKnRvSW1wbCh1c2VyU2NyaXB0UmVmKSk7
Cit9CisKK3ZvaWQgV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZW1vdmVBbGxVc2VyU2NyaXB0cyhX
S1VzZXJDb250ZW50Q29udHJvbGxlclJlZiB1c2VyQ29udGVudENvbnRyb2xsZXJSZWYpCit7Cisg
ICAgdG9JbXBsKHVzZXJDb250ZW50Q29udHJvbGxlclJlZiktPnJlbW92ZUFsbFVzZXJTY3JpcHRz
KCk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVu
dENvbnRyb2xsZXJSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyUmVmX2gKKyNkZWZpbmUgV0tVc2VyQ29udGVudENvbnRyb2xsZXJS
ZWZfaAorCisjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMK
K2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1VzZXJDb250ZW50
Q29udHJvbGxlckdldFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tVc2VyQ29udGVudENvbnRyb2xs
ZXJSZWYgV0tVc2VyQ29udGVudENvbnRyb2xsZXJDcmVhdGUoKTsKKworV0tfRVhQT1JUIFdLQXJy
YXlSZWYgV0tVc2VyQ29udGVudENvbnRyb2xsZXJHZXRVc2VyU2NyaXB0cyhXS1VzZXJDb250ZW50
Q29udHJvbGxlclJlZiB1c2VyQ29udGVudENvbnRyb2xsZXIpOworV0tfRVhQT1JUIHZvaWQgV0tV
c2VyQ29udGVudENvbnRyb2xsZXJBZGRVc2VyU2NyaXB0KFdLVXNlckNvbnRlbnRDb250cm9sbGVy
UmVmIHVzZXJDb250ZW50Q29udHJvbGxlciwgV0tVc2VyU2NyaXB0UmVmIHVzZXJTY3JpcHQpOwor
V0tfRVhQT1JUIHZvaWQgV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZW1vdmVBbGxVc2VyU2NyaXB0
cyhXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZiB1c2VyQ29udGVudENvbnRyb2xsZXIpOworCisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS1VzZXJDb250ZW50
Q29udHJvbGxlclJlZl9oICovCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tVc2VyU2NyaXB0UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tVc2VyU2NyaXB0UmVmLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV0tVc2VyU2NyaXB0UmVmLmgiCisKKyNpbmNsdWRlICJBUElVc2VyU2NyaXB0LmgiCisjaW5j
bHVkZSAiV0tBUElDYXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlE
IFdLVXNlclNjcmlwdEdldFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKEFQSTo6VXNlclNj
cmlwdDo6QVBJVHlwZSk7Cit9CisKK1dLVXNlclNjcmlwdFJlZiBXS1VzZXJTY3JpcHRDcmVhdGVX
aXRoU291cmNlKFdLU3RyaW5nUmVmIHNvdXJjZVJlZiwgX1dLVXNlclNjcmlwdEluamVjdGlvblRp
bWUgaW5qZWN0aW9uVGltZSwgYm9vbCBmb3JNYWluRnJhbWVPbmx5KQoreworICAgIHJldHVybiB0
b0FQSShBUEk6OlVzZXJTY3JpcHQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHsgdG9XVEZT
dHJpbmcoc291cmNlUmVmKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB7
IH0sIHsgfSwgdG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFp
bkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5q
ZWN0SW5BbGxGcmFtZXMgfSkubGVha1JlZigpKTsKK30KKworV0tTdHJpbmdSZWYgV0tVc2VyU2Ny
aXB0Q29weVNvdXJjZShXS1VzZXJTY3JpcHRSZWYgdXNlclNjcmlwdFJlZikKK3sKKyAgICByZXR1
cm4gdG9Db3BpZWRBUEkodG9JbXBsKHVzZXJTY3JpcHRSZWYpLT51c2VyU2NyaXB0KCkuc291cmNl
KCkpOworfQorCitfV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBXS1VzZXJTY3JpcHRHZXRJbmpl
Y3Rpb25UaW1lKFdLVXNlclNjcmlwdFJlZiB1c2VyU2NyaXB0UmVmKQoreworICAgIHJldHVybiB0
b1dLVXNlclNjcmlwdEluamVjdGlvblRpbWUodG9JbXBsKHVzZXJTY3JpcHRSZWYpLT51c2VyU2Ny
aXB0KCkuaW5qZWN0aW9uVGltZSgpKTsKK30KKworYm9vbCBXS1VzZXJTY3JpcHRHZXRNYWluRnJh
bWVPbmx5KFdLVXNlclNjcmlwdFJlZiB1c2VyU2NyaXB0UmVmKQoreworICAgIHJldHVybiB0b0lt
cGwodXNlclNjcmlwdFJlZiktPnVzZXJTY3JpcHQoKS5pbmplY3RlZEZyYW1lcygpID09IFdlYkNv
cmU6OkluamVjdEluVG9wRnJhbWVPbmx5OworfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLVXNlclNjcmlwdFJlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1VzZXJTY3JpcHRSZWZf
aAorI2RlZmluZSBXS1VzZXJTY3JpcHRSZWZfaAorCisjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5o
PgorI2luY2x1ZGUgPFdlYktpdC9XS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lLmg+CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlE
IFdLVXNlclNjcmlwdEdldFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tVc2VyU2NyaXB0UmVmIFdL
VXNlclNjcmlwdENyZWF0ZVdpdGhTb3VyY2UoV0tTdHJpbmdSZWYgc291cmNlLCBfV0tVc2VyU2Ny
aXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBib29sIGZvck1haW5GcmFtZU9ubHkpOwor
CitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tVc2VyU2NyaXB0Q29weVNvdXJjZShXS1VzZXJTY3Jp
cHRSZWYgdXNlclNjcmlwdCk7CitXS19FWFBPUlQgX1dLVXNlclNjcmlwdEluamVjdGlvblRpbWUg
V0tVc2VyU2NyaXB0R2V0SW5qZWN0aW9uVGltZShXS1VzZXJTY3JpcHRSZWYgdXNlclNjcmlwdCk7
CitXS19FWFBPUlQgYm9vbCBXS1VzZXJTY3JpcHRHZXRNYWluRnJhbWVPbmx5KFdLVXNlclNjcmlw
dFJlZiB1c2VyU2NyaXB0KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2Vu
ZGlmIC8qIFdLVXNlclNjcmlwdFJlZl9oICovCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQkocmV2aXNpb24gMTc4NTgxKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI4LDI4ICsyOCwxNCBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAot
I2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCiBAaW1wbGVtZW50YXRpb24gV0tV
c2VyU2NyaXB0CiAKLXN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUlkZW50aWZpZXIoKQotewotICAg
IHN0YXRpYyB1aW50NjRfdCBpZGVudGlmaWVyOwotCi0gICAgcmV0dXJuICsraWRlbnRpZmllcjsK
LX0KLQogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBp
bmplY3Rpb25UaW1lOihXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKWluamVjdGlvblRpbWUgZm9y
TWFpbkZyYW1lT25seTooQk9PTClmb3JNYWluRnJhbWVPbmx5CiB7CiAgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBTdHJpbmdCdWlsZGVy
IHVybFN0cmluZ0J1aWxkZXI7Ci0gICAgdXJsU3RyaW5nQnVpbGRlci5hcHBlbmQoInVzZXItc2Ny
aXB0OiIpOwotICAgIHVybFN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKGdlbmVyYXRlSWRlbnRp
ZmllcigpKTsKLSAgICBXZWJDb3JlOjpVUkwgdXJsIHsgV2ViQ29yZTo6VVJMIHsgfSwgdXJsU3Ry
aW5nQnVpbGRlci50b1N0cmluZygpIH07Ci0KLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6
U3RyaW5nKHNvdXJjZSksIHVybCwgeyB9LCB7IH0sIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdElu
amVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJ
bmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0pOworICAg
IEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBX
ZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU2NyaXB0
OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6
OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgfSk7CiAK
ICAgICByZXR1cm4gc2VsZjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiAxNzg1ODEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVmlld1ByaXZhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2Vsc2UKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVj
dClmcmFtZSBjb250ZXh0UmVmOihXS0NvbnRleHRSZWYpY29udGV4dFJlZiBwYWdlR3JvdXBSZWY6
KFdLUGFnZUdyb3VwUmVmKXBhZ2VHcm91cFJlZjsKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVj
dClmcmFtZSBjb250ZXh0UmVmOihXS0NvbnRleHRSZWYpY29udGV4dFJlZiBwYWdlR3JvdXBSZWY6
KFdLUGFnZUdyb3VwUmVmKXBhZ2VHcm91cFJlZiByZWxhdGVkVG9QYWdlOihXS1BhZ2VSZWYpcmVs
YXRlZFBhZ2U7CistIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgY29uZmlndXJhdGlv
bjooV0tQYWdlQ29uZmlndXJhdGlvblJlZiljb25maWd1cmF0aW9uOwogI2VuZGlmCiAKICNpZiBU
QVJHRVRfT1NfSVBIT05FCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCShyZXZpc2lvbiAx
Nzg1ODEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFdL
X0FQSV9FTkFCTEVECiAKKyNpbXBvcnQgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0
ICJXS1ByZWZlcmVuY2VzLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJX
S1VzZXJDb250ZW50Q29udHJvbGxlci5oIgpAQCAtNDEsNTEgKzQyLDE2IEBACiAjaW1wb3J0ICJV
SUtpdFNQSS5oIgogI2VuZGlmCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIExhenlJbml0
aWFsaXplZCB7Ci1wdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRj4KLSAgICBUKiBnZXQo
RiYmIGYpCi0gICAgewotICAgICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewotICAgICAgICAg
ICAgbV92YWx1ZSA9IGYoKTsKLSAgICAgICAgICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7Ci0g
ICAgICAgIH0KLQotICAgICAgICByZXR1cm4gbV92YWx1ZS5nZXQoKTsKLSAgICB9Ci0KLSAgICB2
b2lkIHNldChUKiB0KQotICAgIHsKLSAgICAgICAgbV92YWx1ZSA9IHQ7Ci0gICAgICAgIG1faXNJ
bml0aWFsaXplZCA9IHRydWU7Ci0gICAgfQotCi0gICAgdm9pZCBzZXQoUmV0YWluUHRyPFQ+JiYg
dCkKLSAgICB7Ci0gICAgICAgIG1fdmFsdWUgPSBXVEY6Om1vdmUodCk7Ci0gICAgICAgIG1faXNJ
bml0aWFsaXplZCA9IHRydWU7Ci0gICAgfQotCi0gICAgVCogcGVlaygpCi0gICAgewotICAgICAg
ICByZXR1cm4gbV92YWx1ZS5nZXQoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgYm9vbCBtX2lz
SW5pdGlhbGl6ZWQgPSBmYWxzZTsKLSAgICBSZXRhaW5QdHI8VD4gbV92YWx1ZTsKLX07Ci0KIEBp
bXBsZW1lbnRhdGlvbiBXS1dlYlZpZXdDb25maWd1cmF0aW9uIHsKLSAgICBMYXp5SW5pdGlhbGl6
ZWQ8V0tQcm9jZXNzUG9vbD4gX3Byb2Nlc3NQb29sOwotICAgIExhenlJbml0aWFsaXplZDxXS1By
ZWZlcmVuY2VzPiBfcHJlZmVyZW5jZXM7Ci0gICAgTGF6eUluaXRpYWxpemVkPFdLVXNlckNvbnRl
bnRDb250cm9sbGVyPiBfdXNlckNvbnRlbnRDb250cm9sbGVyOwotICAgIExhenlJbml0aWFsaXpl
ZDxfV0tWaXNpdGVkTGlua1Byb3ZpZGVyPiBfdmlzaXRlZExpbmtQcm92aWRlcjsKLSAgICBMYXp5
SW5pdGlhbGl6ZWQ8X1dLV2Vic2l0ZURhdGFTdG9yZT4gX3dlYnNpdGVEYXRhU3RvcmU7CisgICAg
QVBJOjpMYXp5SW5pdGlhbGl6ZWQ8UmV0YWluUHRyPFdLUHJvY2Vzc1Bvb2w+PiBfcHJvY2Vzc1Bv
b2w7CisgICAgQVBJOjpMYXp5SW5pdGlhbGl6ZWQ8UmV0YWluUHRyPFdLUHJlZmVyZW5jZXM+PiBf
cHJlZmVyZW5jZXM7CisgICAgQVBJOjpMYXp5SW5pdGlhbGl6ZWQ8UmV0YWluUHRyPFdLVXNlckNv
bnRlbnRDb250cm9sbGVyPj4gX3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyAgICBBUEk6OkxhenlJ
bml0aWFsaXplZDxSZXRhaW5QdHI8X1dLVmlzaXRlZExpbmtQcm92aWRlcj4+IF92aXNpdGVkTGlu
a1Byb3ZpZGVyOworICAgIEFQSTo6TGF6eUluaXRpYWxpemVkPFJldGFpblB0cjxfV0tXZWJzaXRl
RGF0YVN0b3JlPj4gX3dlYnNpdGVEYXRhU3RvcmU7CiAgICAgV2ViS2l0OjpXZWFrT2JqQ1B0cjxX
S1dlYlZpZXc+IF9yZWxhdGVkV2ViVmlldzsKICAgICBXZWJLaXQ6OldlYWtPYmpDUHRyPFdLV2Vi
Vmlldz4gX2FsdGVybmF0ZVdlYlZpZXdGb3JOYXZpZ2F0aW9uR2VzdHVyZXM7CiAgICAgUmV0YWlu
UHRyPE5TU3RyaW5nPiBfZ3JvdXBJZGVudGlmaWVyOwotICAgIExhenlJbml0aWFsaXplZDxOU1N0
cmluZz4gX2FwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDsKKyAgICBBUEk6OkxhenlJbml0aWFs
aXplZDxSZXRhaW5QdHI8TlNTdHJpbmc+PiBfYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50Owog
CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIExhenlJbml0aWFsaXplZDxXS1dlYlZpZXdDb250ZW50
UHJvdmlkZXJSZWdpc3RyeT4gX2NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5OwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkocmV2aXNpb24gMTc4NTgxKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw2ICszNCw3IEBACiAjZW5kaWYKIAogI2ltcG9ydCAiQVBJTGVnYWN5Q29udGV4
dEhpc3RvcnlDbGllbnQuaCIKKyNpbXBvcnQgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW1w
b3J0ICJBY3Rpb25NZW51SGl0VGVzdFJlc3VsdC5oIgogI2ltcG9ydCAiQXR0cmlidXRlZFN0cmlu
Zy5oIgogI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKQEAgLTM3OTUsNiArMzc5NiwxNCBAQCAt
IChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgY29udGV4CiAgICAgcmV0dXJuIFtzZWxm
IGluaXRXaXRoRnJhbWU6ZnJhbWUgcHJvY2Vzc1Bvb2w6KnRvSW1wbChjb250ZXh0UmVmKSBjb25m
aWd1cmF0aW9uOndlYlBhZ2VDb25maWd1cmF0aW9uIHdlYlZpZXc6bmlsXTsKIH0KIAorLSAoaWQp
aW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLUGFnZUNvbmZpZ3Vy
YXRpb25SZWYpY29uZmlndXJhdGlvbgoreworICAgIGF1dG8mIHByb2Nlc3NQb29sID0gKnRvSW1w
bChjb25maWd1cmF0aW9uKS0+cHJvY2Vzc1Bvb2woKTsKKyAgICBhdXRvIHdlYlBhZ2VDb25maWd1
cmF0aW9uID0gdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT53ZWJQYWdlQ29uZmlndXJhdGlvbigpOwor
CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgcHJvY2Vzc1Bvb2w6cHJvY2Vz
c1Bvb2wgY29uZmlndXJhdGlvbjp3ZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJWaWV3Om5pbF07Cit9
CisKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwODAKIC0gKEJPT0wp
d2FudHNVcGRhdGVMYXllcgogewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5LmgJKHJldmlzaW9uIDE3ODU4MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Nyw2ICs1NywxMCBAQCBjbGFzcyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjsKIAogY2xh
c3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBs
PEFQSTo6T2JqZWN0OjpUeXBlOjpVc2VyQ29udGVudENvbnRyb2xsZXI+LCBwcml2YXRlIElQQzo6
TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5PiBjcmVhdGUoKQorICAgIHsgCisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkpOworICAgIH0gCiAgICAgZXhw
bGljaXQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKTsKICAgICB+V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkoKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTc4NTgxKQorKysgU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDcwLDYgKzEwNzAsMTUgQEAKIAkJN0M4NUZEN0YxOTM0MTY2NTAwMDE3N0M0IC8qIFdl
YlByZWZlcmVuY2VzS2V5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3Qzg1RkQ3RDE5MzQxNjY1MDAwMTc3QzQgLyogV2ViUHJlZmVyZW5jZXNLZXlz
LmNwcCAqLzsgfTsKIAkJN0M4NUZEODAxOTM0MTY2NTAwMDE3N0M0IC8qIFdlYlByZWZlcmVuY2Vz
S2V5cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4
NUZEN0UxOTM0MTY2NTAwMDE3N0M0IC8qIFdlYlByZWZlcmVuY2VzS2V5cy5oICovOyB9OwogCQk3
Qzg5RDI5NDFBNjcxMjJGMDAzQTVGREUgLyogQVBJVXNlclNjcmlwdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4OUQyOTIxQTY3MTIyRjAwM0E1RkRF
IC8qIEFQSVVzZXJTY3JpcHQuaCAqLzsgfTsKKwkJN0M4OUQyOTcxQTY3NTNCMjAwM0E1RkRFIC8q
IEFQSVBhZ2VDb25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDODlEMjk1MUE2NzUzQjIwMDNBNUZERSAvKiBBUElQYWdlQ29uZmln
dXJhdGlvbi5jcHAgKi87IH07CisJCTdDODlEMjk4MUE2NzUzQjIwMDNBNUZERSAvKiBBUElQYWdl
Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0M4OUQyOTYxQTY3NTNCMjAwM0E1RkRFIC8qIEFQSVBhZ2VDb25maWd1cmF0aW9uLmgg
Ki87IH07CisJCTdDODlEMjlCMUE2NzgzN0IwMDNBNUZERSAvKiBXS1BhZ2VDb25maWd1cmF0aW9u
UmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
ODlEMjk5MUE2NzgzN0IwMDNBNUZERSAvKiBXS1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcCAqLzsg
fTsKKwkJN0M4OUQyOUMxQTY3ODM3QjAwM0E1RkRFIC8qIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODlEMjlB
MUE2NzgzN0IwMDNBNUZERSAvKiBXS1BhZ2VDb25maWd1cmF0aW9uUmVmLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0M4OUQyOUYxQTY3ODU1NDAw
M0E1RkRFIC8qIFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODlEMjlEMUE2Nzg1NTQwMDNBNUZERSAv
KiBXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5jcHAgKi87IH07CisJCTdDODlEMkEwMUE2Nzg1
NTQwMDNBNUZERSAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4OUQyOUUxQTY3ODU1NDAwM0E1RkRF
IC8qIFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0M4OUQyQTMxQTY3ODg3NTAwM0E1RkRFIC8qIFdL
VXNlclNjcmlwdFJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3Qzg5RDJBMTFBNjc4ODc1MDAzQTVGREUgLyogV0tVc2VyU2NyaXB0UmVmLmNwcCAq
LzsgfTsKKwkJN0M4OUQyQTQxQTY3ODg3NTAwM0E1RkRFIC8qIFdLVXNlclNjcmlwdFJlZi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4OUQyQTIxQTY3
ODg3NTAwM0E1RkRFIC8qIFdLVXNlclNjcmlwdFJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdDODlEMkE2MUE2Nzg5RUEwMDNBNUZERSAvKiBB
UElVc2VyU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDODlEMkE1MUE2Nzg5RUEwMDNBNUZERSAvKiBBUElVc2VyU2NyaXB0LmNwcCAqLzsg
fTsKIAkJN0M4RUIxMTcxOERCNkExOTAwNzkxN0MyIC8qIFdLUHJlZmVyZW5jZXNQcml2YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzhFQjExNjE4
REI2QTE5MDA3OTE3QzIgLyogV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzlEMTUzNzE4NDU4NERBMDA5RDM5
MTggLyogV0tCcm93c2luZ0NvbnRleHRHcm91cEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzlEMTUzNjE4NDU4NERBMDA5RDM5MTggLyog
V0tCcm93c2luZ0NvbnRleHRHcm91cEludGVybmFsLmggKi87IH07CiAJCTdDQTI1NEVCMTgyOTkz
Q0UwMEZDOEE0MSAvKiBXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0EyNTRFQTE4Mjk5M0NFMDBG
QzhBNDEgLyogV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zMTgyLDYgKzMxOTEsMTUgQEAK
IAkJN0M4NUZEN0QxOTM0MTY2NTAwMDE3N0M0IC8qIFdlYlByZWZlcmVuY2VzS2V5cy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQcmVmZXJlbmNlc0tleXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzg1RkQ3RTE5MzQxNjY1MDAwMTc3QzQg
LyogV2ViUHJlZmVyZW5jZXNLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlByZWZlcmVuY2VzS2V5cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzg5
RDI5MjFBNjcxMjJGMDAzQTVGREUgLyogQVBJVXNlclNjcmlwdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBUElVc2VyU2NyaXB0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdDODlEMjk1MUE2NzUzQjIwMDNBNUZERSAvKiBBUElQYWdlQ29uZmlndXJhdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElQYWdlQ29uZmlndXJh
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDODlEMjk2MUE2NzUzQjIw
MDNBNUZERSAvKiBBUElQYWdlQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBUElQYWdlQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3Qzg5RDI5OTFBNjc4MzdCMDAzQTVGREUgLyogV0tQYWdlQ29uZmlndXJhdGlvblJl
Zi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1BhZ2VDb25maWd1
cmF0aW9uUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M4OUQyOUExQTY3
ODM3QjAwM0E1RkRFIC8qIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3Qzg5RDI5RDFBNjc4NTU0MDAzQTVGREUgLyogV0tVc2VyQ29udGVu
dENvbnRyb2xsZXJSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3Qzg5RDI5RTFBNjc4NTU0MDAzQTVGREUgLyogV0tVc2VyQ29udGVudENvbnRyb2xsZXJS
ZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVc2VyQ29udGVudENvbnRy
b2xsZXJSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M4OUQyQTExQTY3ODg3
NTAwM0E1RkRFIC8qIFdLVXNlclNjcmlwdFJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXS1VzZXJTY3JpcHRSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3Qzg5RDJBMjFBNjc4ODc1MDAzQTVGREUgLyogV0tVc2VyU2NyaXB0UmVmLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVXNlclNjcmlwdFJlZi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3Qzg5RDJBNTFBNjc4OUVBMDAzQTVGREUgLyogQVBJVXNl
clNjcmlwdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElVc2Vy
U2NyaXB0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4RUIxMTYxOERCNkEx
OTAwNzkxN0MyIC8qIFdLUHJlZmVyZW5jZXNQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLUHJlZmVyZW5jZXNQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDOUQxNTM2MTg0NTg0REEwMDlEMzkxOCAvKiBXS0Jyb3dzaW5nQ29udGV4dEdy
b3VwSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCcm93c2lu
Z0NvbnRleHRHcm91cEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
QTI1NEVBMTgyOTkzQ0UwMEZDOEE0MSAvKiBXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnJvd3NpbmdDb250ZXh0UG9s
aWN5RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYwNjAsNiArNjA3
OCw4IEBACiAJCQkJN0NEM0E0ODExQTVEMDJGQTAwOTYyM0I4IC8qIEFQSU5hdmlnYXRpb24uaCAq
LywKIAkJCQlCQ0Y2OUZBMTExNzZEMDE0MDA0NzFBNTIgLyogQVBJTmF2aWdhdGlvbkRhdGEuY3Bw
ICovLAogCQkJCUJDRjY5RkEwMTE3NkQwMTQwMDQ3MUE1MiAvKiBBUElOYXZpZ2F0aW9uRGF0YS5o
ICovLAorCQkJCTdDODlEMjk1MUE2NzUzQjIwMDNBNUZERSAvKiBBUElQYWdlQ29uZmlndXJhdGlv
bi5jcHAgKi8sCisJCQkJN0M4OUQyOTYxQTY3NTNCMjAwM0E1RkRFIC8qIEFQSVBhZ2VDb25maWd1
cmF0aW9uLmggKi8sCiAJCQkJMUFGREQzMTQxODkxQjU0MDAwMTUzOTcwIC8qIEFQSVBvbGljeUNs
aWVudC5oICovLAogCQkJCTdDRTREMjFEMUE0OTE0Q0EwMEM3RjE1MiAvKiBBUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uY3BwICovLAogCQkJCTdDRTREMjFFMUE0OTE0Q0EwMEM3RjE1MiAvKiBB
UElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCAqLywKQEAgLTYwNjgsNiArNjA4OCw3IEBACiAJ
CQkJMUFGREU2NUYxOTU0RTlCMTAwQzQ4RkZBIC8qIEFQSVNlc3Npb25TdGF0ZS5jcHAgKi8sCiAJ
CQkJMUFGREU2NjAxOTU0RTlCMTAwQzQ4RkZBIC8qIEFQSVNlc3Npb25TdGF0ZS5oICovLAogCQkJ
CTFBNEQ2NjQ3MThBMkQ5MUEwMEQ4MkUyMSAvKiBBUElVSUNsaWVudC5oICovLAorCQkJCTdDODlE
MkE1MUE2Nzg5RUEwMDNBNUZERSAvKiBBUElVc2VyU2NyaXB0LmNwcCAqLywKIAkJCQk3Qzg5RDI5
MjFBNjcxMjJGMDAzQTVGREUgLyogQVBJVXNlclNjcmlwdC5oICovLAogCQkJCTFBMzYzNUE3MUEz
MTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlLmNwcCAqLywKIAkJCQkxQTM2MzVB
ODFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oICovLApAQCAtNjE1MCw2
ICs2MTcxLDggQEAKIAkJCQk3NTU0MjJCQTE4MDYyQjlDMDA0NkY2QTggLyogV0tPcmlnaW5EYXRh
TWFuYWdlci5oICovLAogCQkJCUJDRDU5N0Q0MTEyQjU2REMwMEVDOEMyMyAvKiBXS1BhZ2UuY3Bw
ICovLAogCQkJCUJDRDU5N0Q1MTEyQjU2REMwMEVDOEMyMyAvKiBXS1BhZ2UuaCAqLywKKwkJCQk3
Qzg5RDI5OTFBNjc4MzdCMDAzQTVGREUgLyogV0tQYWdlQ29uZmlndXJhdGlvblJlZi5jcHAgKi8s
CisJCQkJN0M4OUQyOUExQTY3ODM3QjAwM0E1RkRFIC8qIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYu
aCAqLywKIAkJCQkxQUI4QTFGNzE4NDAwQkI4MDBFOUFFNjkgLyogV0tQYWdlQ29udGV4dE1lbnVD
bGllbnQuaCAqLywKIAkJCQk4MzcyREIyNDFBNjc0QzhGMDBDNjk3QzUgLyogV0tQYWdlRGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQuaCAqLywKIAkJCQkxQUI4QTFGMzE4NDAwQjhGMDBFOUFFNjkgLyog
V0tQYWdlRmluZENsaWVudC5oICovLApAQCAtNjE3OCw2ICs2MjAxLDEwIEBACiAJCQkJMUFERTQ2
QjExOTU0RUM2MTAwMEY3OTg1IC8qIFdLU2Vzc2lvblN0YXRlUmVmLmggKi8sCiAJCQkJNEE0MTBG
MzUxOUFGN0FDMzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwICov
LAogCQkJCTRBNDEwRjM2MTlBRjdBQzMwMDJFQkFCNSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0LmggKi8sCisJCQkJN0M4OUQyOUQxQTY3ODU1NDAwM0E1RkRFIC8qIFdLVXNlckNvbnRl
bnRDb250cm9sbGVyUmVmLmNwcCAqLywKKwkJCQk3Qzg5RDI5RTFBNjc4NTU0MDAzQTVGREUgLyog
V0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuaCAqLywKKwkJCQk3Qzg5RDJBMTFBNjc4ODc1MDAz
QTVGREUgLyogV0tVc2VyU2NyaXB0UmVmLmNwcCAqLywKKwkJCQk3Qzg5RDJBMjFBNjc4ODc1MDAz
QTVGREUgLyogV0tVc2VyU2NyaXB0UmVmLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IEM7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzg0Nyw2ICs3ODc0LDcgQEAKIAkJCQlCQzIwNEVF
RjExQzgzRUM4MDA4RjMzNzUgLyogV0tCdW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjA0
RUYwMTFDODNFQzgwMDhGMzM3NSAvKiBXS0J1bmRsZUFQSUNhc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzNUVFQjlGMTI3NzYxQUMwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0M4OUQyQTQxQTY3ODg3NTAwM0E1RkRFIC8qIFdLVXNlclNj
cmlwdFJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1RUVCOUIxMjc3NjE3QzAwMzMyMkI4IC8q
IFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFFRkMx
Q0YxNTI0RTYyNTAwQzlBOTM4IC8qIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0QyNUYxNzExRDZCREUxMDAxNjlCMEUgLyogV0tCdW5kbGVGcmFtZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC03ODcwLDYgKzc4OTgsNyBAQAogCQkJCTFBQjQ3NEQ4MTg0RDQz
RkQwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUVEODJBN0YyMTI4QzZGQUYwMDQ0NzdCMyAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUI0NzRFQTE4NEQ0NTEzMDA1MUI2MjIgLyogV0tCdW5kbGVQYWdl
UG9saWN5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk3Qzg5RDI5QzFBNjc4MzdCMDAzQTVG
REUgLyogV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxQjQx
OTgxMUQ0MUQ1NzAwMTFFOEREIC8qIFdLQnVuZGxlUGFnZVByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBQjQ3NERBMTg0RDQ0MjUwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VSZXNvdXJjZUxv
YWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjQ3NERFMTg0RDQ0NTkwMDUxQjYyMiAv
KiBXS0J1bmRsZVBhZ2VVSUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC03OTA2LDYgKzc5MzUs
NyBAQAogCQkJCUJDMDE3RDBCMTYyNjBGRjQwMDcwNTRGNSAvKiBXS0RPTUludGVybmFscy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkMwMTdEMEQxNjI2MEZGNDAwNzA1NEY1IC8qIFdLRE9NTm9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RDI0QzIxNkNENzA2RDAwN0Q1NDYxIC8qIFdLRE9NTm9k
ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDODlEMjk4MUE2NzUzQjIwMDNBNUZERSAv
KiBBUElQYWdlQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzOUM0MzYxNjI2
MzY2RjAwOEJDNjg5IC8qIFdLRE9NUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUQyNEM1
MTZDRDcwODgwMDdENTQ2MSAvKiBXS0RPTVJhbmdlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMjkzRUJFQUIxNjI3RDlDOTAwNUY4OUYxIC8qIFdLRE9NVGV4dC5oIGluIEhlYWRlcnMgKi8s
CkBAIC04MDI0LDYgKzgwNTQsNyBAQAogCQkJCTFBOUUzMjlGMTgyMkZFREQwMEY1RDA0QyAvKiBX
S1JlbW90ZU9iamVjdENvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzk0ODQwOTE1MEM0Qjk3
MDBFNTJDRTkgLyogV0tSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc2MDg4MjMx
NTA0MTRGNzAwRkM4MkM3IC8qIFdLUmVuZGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3
Qzg5RDJBMDFBNjc4NTU0MDAzQTVGREUgLyogV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuaCBp
biBIZWFkZXJzICovLAogCQkJCTMzMzY3NjNCMTMwQzk5REMwMDZDOURFMiAvKiBXS1Jlc291cmNl
Q2FjaGVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhBNTAxNTExNzY1RjU2MDA3NTc1
NzMgLyogV0tSZXRhaW5QdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBN0UzNzc5MThFNEE0RkUw
MDNEMEZGRiAvKiBXS1NjcmlwdE1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLApAQCAtOTE0OSw2ICs5
MTgwLDcgQEAKIAkJCQkxQUZERTY1RDE5NTRFOEQ1MDBDNDhGRkEgLyogTGVnYWN5U2Vzc2lvblN0
YXRlQ29kaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMUQ4QkExMTczMUEzNjMwMDE0MURB
NCAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQThDNzI4
QzE3Mzg0NzdDMDAwQTY1NTQgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTdDODlEMjlCMUE2NzgzN0IwMDNBNUZERSAvKiBXS1BhZ2VDb25maWd1
cmF0aW9uUmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTdGMkY1MTI1QkY4RDQwMDhBRUIx
RCAvKiBMb2dnaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNjBCRkUxMTMzODFERjkwMDkx
ODk5OSAvKiBMb2dnaW5nRm91bmRhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBMjRCNUYy
MTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
OTQ2MSw2ICs5NDkzLDcgQEAKIAkJCQk1MUE5RTEwNTEzMTVDQ0ZDMDA5RTcwMzEgLyogV2ViS2V5
VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTYyODBGMzE5MTk5
ODJBMDA2QUQ5RjkgLyogV2ViS2l0Lm0gaW4gU291cmNlcyAqLywKIAkJCQlCQzlCQTUwNDE2OTdD
NDUzMDBFNDQ2MTYgLyogV2ViS2l0MkluaXRpYWxpemUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
N0M4OUQyOUYxQTY3ODU1NDAwM0E1RkRFIC8qIFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTMzRDNBM0MxMTMzOTYwQjAwMDcwOUJFNCAvKiBXZWJNZWRp
YUNhY2hlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzM0QzQTNDODEzMzk2MTc5MDA3
MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMzNEM0EzQkExMzM5NjA2MjAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5h
Z2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NjI1LDcgKzk2NTgsOSBAQAogCQkJCTFB
RjQ1OTJFMTk0NjRCMjAwMEY5RDRBMiAvKiBXS0Vycm9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNGRDU0OEIxMzJEODI2ODAwNTVEODE2IC8qIFdLRXJyb3JDRi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQzQwNzVGQjEyNEZGMDI3MDA2OEYyMEEgLyogV0tFcnJvclJlZi5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk3Qzg5RDJBMzFBNjc4ODc1MDAzQTVGREUgLyogV0tVc2VyU2NyaXB0UmVmLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE1OEI2RjA5MThGQ0E3MzMwMDhDQkE1MyAvKiBXS0ZpbGVV
cGxvYWRQYW5lbC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdDODlEMjk3MUE2NzUzQjIwMDNBNUZE
RSAvKiBBUElQYWdlQ29uZmlndXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTQyNTZC
NjE4QkVDMThDMDBERTQxNzkgLyogV0tGb3JtSW5wdXRDb250cm9sLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQzU0MjU2QjkxOEJFQzE4QzAwREU0MTc5IC8qIFdLRm9ybVBvcG92ZXIubW0gaW4gU291
cmNlcyAqLywKIAkJCQlDNTcxOTNCRTE4QzE0QTQ0MDAyRDBGMTIgLyogV0tGb3JtU2VsZWN0Q29u
dHJvbC5tbSBpbiBTb3VyY2VzICovLApAQCAtOTY5NCw2ICs5NzI5LDcgQEAKIAkJCQkxQTE1ODQx
OTE4OTA0NEY1MDAxNzYxNkMgLyogV0tQcm9jZXNzUG9vbC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUxMkY1OEZCMTJBODhBNTQwMDYyOTUzMCAvKiBXS1Byb3RlY3Rpb25TcGFjZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQUQwMUJDQzE5MDVENTQ5MDBDOUM0NUYgLyogV0tSZWxvYWRGcmFtZUVy
cm9yUmVjb3ZlcnlBdHRlbXB0ZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQk3Qzg5RDJBNjFBNjc4
OUVBMDAzQTVGREUgLyogQVBJVXNlclNjcmlwdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTlF
MzI5QTE4MjJFMUNDMDBGNUQwNEMgLyogV0tSZW1vdGVPYmplY3QubW0gaW4gU291cmNlcyAqLywK
IAkJCQkxQUZBNEI4QjFBNjVBMUQwMDA2QzRBQjQgLyogV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTlFMzI5RTE4MjJGRUREMDBGNUQwNEMgLyogV0tS
ZW1vdGVPYmplY3RDb2Rlci5tbSBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244810</attachid>
            <date>2015-01-16 15:37:20 -0800</date>
            <delta_ts>2015-01-16 17:54:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140559-20150116153725.patch</filename>
            <type>text/plain</type>
            <size>71404</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3ODYwNikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2MCBAQAorMjAxNS0wMS0xNiAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBhIGJhc2ljIGNvbmZpZ3VyYXRp
b24gb2JqZWN0IGZvciBXS1ZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0MDU1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIC0gQWRkcyBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIChiYWNrZWQgYnkgQVBJ
OjpQYWdlQ29uZmlndXJhdGlvbikuIFdLV2ViVmlldyBjb25maWd1cmF0aW9uCisgICAgICAgICAg
aXMgbm90IHlldCBicmlkZ2VkIHRvIHRoaXMsIGJ1dCB0aGF0IHdpbGwgaGFwcGVuIHNvb24uIEZv
ciBub3csIGl0IGhhcyBhIGZldyBiYXNpYworICAgICAgICAgIGNvbmZpZ3VyYXRpb24gb3B0aW9u
cy4KKyAgICAgICAgLSBBZGRzIFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmIGFzIEMtU1BJIHZl
cnNpb24gb2YgV0tVc2VyQ29udGVudENvbnRyb2xsZXIuCisgICAgICAgIC0gQWRkcyBXS1VzZXJT
Y3JpcHRSZWYgYXMgQy1TUEkgdmVyc2lvbiBvZiBXS1VzZXJTY3JpcHQuCisKKyAgICAgICAgKiBT
aGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoK
KyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmg6CisgICAgICAgIChXZWJL
aXQ6OnRvV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmln
dXJhdGlvbjo6flBhZ2VDb25maWd1cmF0aW9uKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3Vy
YXRpb246OnByb2Nlc3NQb29sKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNl
dFByb2Nlc3NQb29sKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnVzZXJDb250
ZW50Q29udHJvbGxlcik6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRVc2Vy
Q29udGVudENvbnRyb2xsZXIpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6cGFn
ZUdyb3VwKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFBhZ2VHcm91cCk6
CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpwcmVmZXJlbmNlcyk6CisgICAgICAg
IChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRQcmVmZXJlbmNlcyk6CisgICAgICAgIChBUEk6
OlBhZ2VDb25maWd1cmF0aW9uOjpyZWxhdGVkUGFnZSk6CisgICAgICAgIChBUEk6OlBhZ2VDb25m
aWd1cmF0aW9uOjpzZXRSZWxhdGVkUGFnZSk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0
aW9uOjp3ZWJQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQ
YWdlQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b246OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcDog
QWRkZWQuCisgICAgICAgIChBUEk6OmdlbmVyYXRlSWRlbnRpZmllcik6CisgICAgICAgIChBUEk6
OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSVVzZXJTY3JpcHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRUeXBlSUQpOgorICAgICAgICAo
V0tQYWdlQ29uZmlndXJhdGlvbkNyZWF0ZSk6CisgICAgICAgIChXS1BhZ2VDb25maWd1cmF0aW9u
R2V0Q29udGV4dCk6CisgICAgICAgIChXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dCk6Cisg
ICAgICAgIChXS1BhZ2VDb25maWd1cmF0aW9uR2V0UGFnZUdyb3VwKToKKyAgICAgICAgKFdLUGFn
ZUNvbmZpZ3VyYXRpb25TZXRQYWdlR3JvdXApOgorICAgICAgICAoV0tQYWdlQ29uZmlndXJhdGlv
bkdldFVzZXJDb250ZW50Q29udHJvbGxlcik6CisgICAgICAgIChXS1BhZ2VDb25maWd1cmF0aW9u
U2V0VXNlckNvbnRlbnRDb250cm9sbGVyKToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25H
ZXRQcmVmZXJlbmNlcyk6CisgICAgICAgIChXS1BhZ2VDb25maWd1cmF0aW9uU2V0UHJlZmVyZW5j
ZXMpOgorICAgICAgICAoV0tQYWdlQ29uZmlndXJhdGlvbkdldFJlbGF0ZWRQYWdlKToKKyAgICAg
ICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRSZWxhdGVkUGFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuaDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmNwcDogQWRkZWQuCisgICAg
ICAgIChXS1VzZXJDb250ZW50Q29udHJvbGxlckdldFR5cGVJRCk6CisgICAgICAgIChXS1VzZXJD
b250ZW50Q29udHJvbGxlckNyZWF0ZSk6CisgICAgICAgIChXS1VzZXJDb250ZW50Q29udHJvbGxl
ckdldFVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdLVXNlckNvbnRlbnRDb250cm9sbGVyQWRkVXNl
clNjcmlwdCk6CisgICAgICAgIChXS1VzZXJDb250ZW50Q29udHJvbGxlclJlbW92ZUFsbFVzZXJT
Y3JpcHRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXJSZWYuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLVXNlclNjcmlwdFJl
Zi5jcHA6IEFkZGVkLgorICAgICAgICAoV0tVc2VyU2NyaXB0R2V0VHlwZUlEKToKKyAgICAgICAg
KFdLVXNlclNjcmlwdENyZWF0ZVdpdGhTb3VyY2UpOgorICAgICAgICAoV0tVc2VyU2NyaXB0Q29w
eVNvdXJjZSk6CisgICAgICAgIChXS1VzZXJTY3JpcHRHZXRJbmplY3Rpb25UaW1lKToKKyAgICAg
ICAgKFdLVXNlclNjcmlwdEdldE1haW5GcmFtZU9ubHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1VzZXJTY3JpcHRSZWYuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dlYktpdDJfQy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0
Lm1tOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGlt
ZTpmb3JNYWluRnJhbWVPbmx5Ol0pOgorICAgICAgICAoZ2VuZXJhdGVJZGVudGlmaWVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVmlld1ByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06Cisg
ICAgICAgIChMYXp5SW5pdGlhbGl6ZWQ6OmdldCk6CisgICAgICAgIChMYXp5SW5pdGlhbGl6ZWQ6
OnNldCk6CisgICAgICAgIChMYXp5SW5pdGlhbGl6ZWQ6OnBlZWspOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IGluaXRXaXRoRnJhbWU6
Y29uZmlndXJhdGlvblJlZjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCisyMDE1LTAxLTE2ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgQWRkIGEgYmFzaWMgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIFdL
VmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQw
NTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKworICAgICAgICAq
IFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5o
OgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaDoKKyAgICAgICAgKFdl
YktpdDo6dG9XS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChBUEk6OlBhZ2VD
b25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChBUEk6OlBhZ2VDb25m
aWd1cmF0aW9uOjp+UGFnZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmln
dXJhdGlvbjo6cHJvY2Vzc1Bvb2wpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6
c2V0UHJvY2Vzc1Bvb2wpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6dXNlckNv
bnRlbnRDb250cm9sbGVyKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFVz
ZXJDb250ZW50Q29udHJvbGxlcik6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpw
YWdlR3JvdXApOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0UGFnZUdyb3Vw
KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnByZWZlcmVuY2VzKToKKyAgICAg
ICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFByZWZlcmVuY2VzKToKKyAgICAgICAgKEFQ
STo6UGFnZUNvbmZpZ3VyYXRpb246OnJlbGF0ZWRQYWdlKToKKyAgICAgICAgKEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb246OnNldFJlbGF0ZWRQYWdlKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3Vy
YXRpb246OndlYlBhZ2VDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SVBhZ2VDb25maWd1cmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoQVBJOjpMYXp5SW5pdGlhbGl6
ZWQ6OmdldCk6CisgICAgICAgIChBUEk6OkxhenlJbml0aWFsaXplZDo6c2V0KToKKyAgICAgICAg
KEFQSTo6TGF6eUluaXRpYWxpemVkOjpwZWVrKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3Vy
YXRpb246OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNw
cDogQWRkZWQuCisgICAgICAgIChBUEk6OmdlbmVyYXRlSWRlbnRpZmllcik6CisgICAgICAgIChB
UEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSVVzZXJTY3JpcHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRUeXBlSUQpOgorICAgICAg
ICAoV0tQYWdlQ29uZmlndXJhdGlvbkNyZWF0ZSk6CisgICAgICAgIChXS1BhZ2VDb25maWd1cmF0
aW9uR2V0Q29udGV4dCk6CisgICAgICAgIChXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dCk6
CisgICAgICAgIChXS1BhZ2VDb25maWd1cmF0aW9uR2V0UGFnZUdyb3VwKToKKyAgICAgICAgKFdL
UGFnZUNvbmZpZ3VyYXRpb25TZXRQYWdlR3JvdXApOgorICAgICAgICAoV0tQYWdlQ29uZmlndXJh
dGlvbkdldFByZWZlcmVuY2VzKToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRQcmVm
ZXJlbmNlcyk6CisgICAgICAgIChXS1BhZ2VDb25maWd1cmF0aW9uR2V0UmVsYXRlZFBhZ2UpOgor
ICAgICAgICAoV0tQYWdlQ29uZmlndXJhdGlvblNldFJlbGF0ZWRQYWdlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oOiBBZGRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdLVXNlckNvbnRlbnRDb250cm9sbGVyR2V0VHlwZUlEKToKKyAgICAgICAgKFdL
VXNlckNvbnRlbnRDb250cm9sbGVyQ3JlYXRlKToKKyAgICAgICAgKFdLVXNlckNvbnRlbnRDb250
cm9sbGVyR2V0VXNlclNjcmlwdHMpOgorICAgICAgICAoV0tVc2VyQ29udGVudENvbnRyb2xsZXJB
ZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVtb3ZlQWxs
VXNlclNjcmlwdHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29u
dHJvbGxlclJlZi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyU2Ny
aXB0UmVmLmNwcDogQWRkZWQuCisgICAgICAgIChXS1VzZXJTY3JpcHRHZXRUeXBlSUQpOgorICAg
ICAgICAoV0tVc2VyU2NyaXB0Q3JlYXRlV2l0aFNvdXJjZSk6CisgICAgICAgIChXS1VzZXJTY3Jp
cHRDb3B5U291cmNlKToKKyAgICAgICAgKFdLVXNlclNjcmlwdEdldEluamVjdGlvblRpbWUpOgor
ICAgICAgICAoV0tVc2VyU2NyaXB0R2V0TWFpbkZyYW1lT25seSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLVXNlclNjcmlwdFJlZi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbToKKyAgICAgICAgKC1bV0tVc2VyU2NyaXB0IGluaXRX
aXRoU291cmNlOmluamVjdGlvblRpbWU6Zm9yTWFpbkZyYW1lT25seTpdKToKKyAgICAgICAgKGdl
bmVyYXRlSWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1ZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoTGF6eUluaXRpYWxpemVkOjpnZXQpOiBEZWxl
dGVkLgorICAgICAgICAoTGF6eUluaXRpYWxpemVkOjpzZXQpOiBEZWxldGVkLgorICAgICAgICAo
TGF6eUluaXRpYWxpemVkOjpwZWVrKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3Vy
YXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjpjcmVhdGUpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKwogMjAxNS0wMS0xNiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIE1vcmUgV2ViUGFnZVByb3h5IENUVEUKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9BUElPYmplY3QuaAkocmV2aXNpb24gMTc4NTgxKQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDYgKzEyOCw3
IEBAIHB1YmxpYzoKICAgICAgICAgT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIE9y
aWdpbkRhdGFNYW5hZ2VyLAogICAgICAgICBQYWdlLAorICAgICAgICBQYWdlQ29uZmlndXJhdGlv
biwKICAgICAgICAgUGFnZUdyb3VwLAogICAgICAgICBQcm9jZXNzUG9vbCwKICAgICAgICAgUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jh
c2UuaAkocmV2aXNpb24gMTc4NTgxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNiArMTIwLDcgQEAgdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlV0tPcGVuUGFuZWxQYQogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lciogV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZjsKIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLT3JpZ2luRGF0YU1hbmFnZXIqIFdLT3JpZ2luRGF0
YU1hbmFnZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BhZ2UqIFdLUGFnZVJl
ZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUGFnZUNvbmZpZ3VyYXRpb24qIFdLUGFn
ZUNvbmZpZ3VyYXRpb25SZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BhZ2VHcm91
cCogV0tQYWdlR3JvdXBSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BsdWdpblNp
dGVEYXRhTWFuYWdlciogV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXJSZWY7CiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS1ByZWZlcmVuY2VzKiBXS1ByZWZlcmVuY2VzUmVmOwpAQCAtMTI3LDcg
KzEyOCw5IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUHJvdGVjdGlvblMKIHR5cGVk
ZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVGV4dENoZWNrZXIqIFdLVGV4dENoZWNrZXJSZWY7CiB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1Nlc3Npb24qIFdLU2Vzc2lvblJlZjsKIHR5cGVk
ZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLU2Vzc2lvblN0YXRlKiBXS1Nlc3Npb25TdGF0ZVJlZjsK
K3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVXNlckNvbnRlbnRDb250cm9sbGVyKiBXS1Vz
ZXJDb250ZW50Q29udHJvbGxlclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWY7
Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1VzZXJTY3JpcHQqIFdLVXNlclNjcmlwdFJl
ZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVmlicmF0aW9uKiBXS1ZpYnJhdGlvblJl
ZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVmlld3BvcnRBdHRyaWJ1dGVzKiBXS1Zp
ZXdwb3J0QXR0cmlidXRlc1JlZjsKIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLU2hhcmVkQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS1NoYXJlZEFQSUNhc3QuaAkocmV2aXNpb24gMTc4NTgxKQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NzMs
NiArOTczLDE5IEBAIGlubGluZSBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSAKICAg
ICByZXR1cm4gV2ViQ29yZTo6SW5qZWN0QXREb2N1bWVudFN0YXJ0OwogfQogCitpbmxpbmUgX1dL
VXNlclNjcmlwdEluamVjdGlvblRpbWUgdG9XS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKFdlYkNv
cmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGVkVGltZSkKK3sKKyAgICBzd2l0Y2gg
KGluamVjdGVkVGltZSkgeworICAgIGNhc2UgV2ViQ29yZTo6SW5qZWN0QXREb2N1bWVudFN0YXJ0
OgorICAgICAgICByZXR1cm4ga1dLSW5qZWN0QXREb2N1bWVudFN0YXJ0OworICAgIGNhc2UgV2Vi
Q29yZTo6SW5qZWN0QXREb2N1bWVudEVuZDoKKyAgICAgICAgcmV0dXJuIGtXS0luamVjdEF0RG9j
dW1lbnRFbmQ7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IGtXS0luamVjdEF0RG9jdW1lbnRTdGFydDsKK30KKwogaW5saW5lIFdlYkNvcmU6OlVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXMgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKFdLVXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lcyB3a0luamVjdGVkRnJhbWVzKQogewogICAgIHN3aXRjaCAod2tJbmpl
Y3RlZEZyYW1lcykgewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQYWdl
Q29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgorCisjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCisjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKKyNpbmNsdWRlICJX
ZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFjZSBBUEkgeworCitQYWdl
Q29uZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oKQoreworfQorCitQYWdlQ29uZmlndXJh
dGlvbjo6flBhZ2VDb25maWd1cmF0aW9uKCkKK3sKK30KKworV2ViUHJvY2Vzc1Bvb2wqIFBhZ2VD
b25maWd1cmF0aW9uOjpwcm9jZXNzUG9vbCgpCit7CisgICAgcmV0dXJuIG1fcHJvY2Vzc1Bvb2wu
Z2V0KCk7Cit9CisKK3ZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFByb2Nlc3NQb29sKFdlYlBy
b2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKK3sKKyAgICBtX3Byb2Nlc3NQb29sID0gcHJvY2Vzc1Bv
b2w7Cit9CisKK1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KiBQYWdlQ29uZmlndXJhdGlv
bjo6dXNlckNvbnRlbnRDb250cm9sbGVyKCkKK3sKKyAgICByZXR1cm4gbV91c2VyQ29udGVudENv
bnRyb2xsZXIuZ2V0KCk7Cit9CisKK3ZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFVzZXJDb250
ZW50Q29udHJvbGxlcihXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSogdXNlckNvbnRlbnRD
b250cm9sbGVyKQoreworICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyID0gdXNlckNvbnRlbnRD
b250cm9sbGVyOworfQorCitXZWJQYWdlR3JvdXAqIFBhZ2VDb25maWd1cmF0aW9uOjpwYWdlR3Jv
dXAoKQoreworICAgIHJldHVybiBtX3BhZ2VHcm91cC5nZXQoKTsKK30KKwordm9pZCBQYWdlQ29u
ZmlndXJhdGlvbjo6c2V0UGFnZUdyb3VwKFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwKQoreworICAg
IG1fcGFnZUdyb3VwID0gcGFnZUdyb3VwOworfQorCitXZWJQcmVmZXJlbmNlcyogUGFnZUNvbmZp
Z3VyYXRpb246OnByZWZlcmVuY2VzKCkKK3sKKyAgICByZXR1cm4gbV9wcmVmZXJlbmNlcy5nZXQo
KTsKK30KKwordm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0UHJlZmVyZW5jZXMoV2ViUHJlZmVy
ZW5jZXMqIHByZWZlcmVuY2VzKQoreworICAgIG1fcHJlZmVyZW5jZXMgPSBwcmVmZXJlbmNlczsK
K30KKworV2ViUGFnZVByb3h5KiBQYWdlQ29uZmlndXJhdGlvbjo6cmVsYXRlZFBhZ2UoKQorewor
ICAgIHJldHVybiBtX3JlbGF0ZWRQYWdlLmdldCgpOworfQorCit2b2lkIFBhZ2VDb25maWd1cmF0
aW9uOjpzZXRSZWxhdGVkUGFnZShXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlKQoreworICAgIG1f
cmVsYXRlZFBhZ2UgPSByZWxhdGVkUGFnZTsKK30KKworV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJh
dGlvbiBQYWdlQ29uZmlndXJhdGlvbjo6d2ViUGFnZUNvbmZpZ3VyYXRpb24oKQoreworICAgIFdl
YktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKworICAgIGNvbmZpZ3Vy
YXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyID0gdXNlckNvbnRlbnRDb250cm9sbGVyKCk7Cisg
ICAgY29uZmlndXJhdGlvbi5wYWdlR3JvdXAgPSBwYWdlR3JvdXAoKTsKKyAgICBjb25maWd1cmF0
aW9uLnByZWZlcmVuY2VzID0gcHJlZmVyZW5jZXMoKTsKKyAgICBjb25maWd1cmF0aW9uLnJlbGF0
ZWRQYWdlID0gcmVsYXRlZFBhZ2UoKTsKKworICAgIHJldHVybiBjb25maWd1cmF0aW9uOworfQor
Cit9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQVBJUGFnZUNvbmZpZ3Vy
YXRpb25faAorI2RlZmluZSBBUElQYWdlQ29uZmlndXJhdGlvbl9oCisKKyNpbmNsdWRlICJBUElP
YmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
c3RydWN0IFdlYlBhZ2VDb25maWd1cmF0aW9uOworY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk7CitjbGFzcyBXZWJQcm9jZXNzUG9vbDsKK2NsYXNzIFdlYlBhZ2VHcm91cDsKK2Ns
YXNzIFdlYlByZWZlcmVuY2VzOworY2xhc3MgV2ViUGFnZVByb3h5OworfQorCituYW1lc3BhY2Ug
QVBJIHsKKworY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb24gOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmpl
Y3Q6OlR5cGU6OlBhZ2VDb25maWd1cmF0aW9uPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UGFnZUNvbmZpZ3VyYXRpb24+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFBhZ2VDb25maWd1cmF0aW9uKTsKKyAgICB9CisgICAgdmlydHVhbCB+UGFn
ZUNvbmZpZ3VyYXRpb24oKTsKKworICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQ
b29sKCk7CisgICAgdm9pZCBzZXRQcm9jZXNzUG9vbChXZWJLaXQ6OldlYlByb2Nlc3NQb29sKik7
CisKKyAgICBXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KiB1c2VyQ29udGVu
dENvbnRyb2xsZXIoKTsKKyAgICB2b2lkIHNldFVzZXJDb250ZW50Q29udHJvbGxlcihXZWJLaXQ6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Kik7CisKKyAgICBXZWJLaXQ6OldlYlBhZ2VH
cm91cCogcGFnZUdyb3VwKCk7CisgICAgdm9pZCBzZXRQYWdlR3JvdXAoV2ViS2l0OjpXZWJQYWdl
R3JvdXAqKTsKKworICAgIFdlYktpdDo6V2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzKCk7Cisg
ICAgdm9pZCBzZXRQcmVmZXJlbmNlcyhXZWJLaXQ6OldlYlByZWZlcmVuY2VzKik7CisKKyAgICBX
ZWJLaXQ6OldlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UoKTsKKyAgICB2b2lkIHNldFJlbGF0ZWRQ
YWdlKFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CisKKyAgICBXZWJLaXQ6OldlYlBhZ2VDb25maWd1
cmF0aW9uIHdlYlBhZ2VDb25maWd1cmF0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgUGFnZUNvbmZp
Z3VyYXRpb24oKTsKKworICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByb2Nlc3NQb29sPiBtX3Byb2Nl
c3NQb29sOworICAgIFJlZlB0cjxXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
PiBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlR3Jv
dXA+IG1fcGFnZUdyb3VwOworICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByZWZlcmVuY2VzPiBtX3By
ZWZlcmVuY2VzOworICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9yZWxhdGVkUGFn
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCisKKyNlbmRpZiAvLyBBUElQYWdlQ29uZmln
dXJhdGlvbl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3Jp
cHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNl
clNjcmlwdC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSVVzZXJTY3JpcHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJVXNlclNjcmlwdC5oIgor
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2UgQVBJIHsK
Kworc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlSWRlbnRpZmllcigpCit7CisgICAgc3RhdGljIHVp
bnQ2NF90IGlkZW50aWZpZXI7CisKKyAgICByZXR1cm4gKytpZGVudGlmaWVyOworfQorCitXZWJD
b3JlOjpVUkwgVXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKQoreworICAgIFN0cmluZ0J1
aWxkZXIgdXJsU3RyaW5nQnVpbGRlcjsKKyAgICB1cmxTdHJpbmdCdWlsZGVyLmFwcGVuZCgidXNl
ci1zY3JpcHQ6Iik7CisgICAgdXJsU3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoZ2VuZXJhdGVJ
ZGVudGlmaWVyKCkpOworICAgIHJldHVybiBXZWJDb3JlOjpVUkwgeyBXZWJDb3JlOjpVUkwgeyB9
LCB1cmxTdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkgfTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBB
UEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5o
CShyZXZpc2lvbiAxNzg1ODEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVz
ZXJTY3JpcHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMTMgQEAgbmFtZXNwYWNlIEFQ
SSB7CiAKIGNsYXNzIFVzZXJTY3JpcHQgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6
OlR5cGU6OlVzZXJTY3JpcHQ+IHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgV2ViQ29yZTo6VVJMIGdl
bmVyYXRlVW5pcXVlVVJMKCk7CisKKyAgICBzdGF0aWMgUmVmUHRyPFVzZXJTY3JpcHQ+IGNyZWF0
ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFVzZXJTY3JpcHQodXNlclNjcmlwdCkpOworICAgIH0KKwogICAgIFVzZXJT
Y3JpcHQoV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0KQogICAgICAgICA6IG1fdXNlclNj
cmlwdCh1c2VyU2NyaXB0KQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9uIDE3ODU4MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsOCArNTIsMTAg
QEAKIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBOYXZpZ2F0aW9uRGF0YTsKK2NsYXNzIFBhZ2VD
b25maWd1cmF0aW9uOwogY2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOwogY2xhc3MgU2Vz
c2lvblN0YXRlOworY2xhc3MgVXNlclNjcmlwdDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC02OSw3ICs3MSw2IEBAIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsKIGNsYXNzIFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW07CiBjbGFzcyBXZWJCYXR0ZXJ5TWFuYWdlclByb3h5OwogY2xhc3MgV2Vi
QmF0dGVyeVN0YXR1czsKLWNsYXNzIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk7CiBjbGFz
cyBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHk7CiBjbGFzcyBXZWJDb29raWVNYW5h
Z2VyUHJveHk7CiBjbGFzcyBXZWJDcmVkZW50aWFsOwpAQCAtODYsOCArODcsOCBAQCBjbGFzcyBX
ZWJJbnNwZWN0b3JQcm94eTsKIGNsYXNzIFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI7CiBjbGFz
cyBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5OwogY2xhc3MgV2ViTm90aWZpY2F0aW9uOwotY2xh
c3MgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI7CiBjbGFzcyBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk7CitjbGFzcyBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjsKIGNsYXNzIFdlYk9wZW5QYW5l
bFBhcmFtZXRlcnM7CiBjbGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OwogY2xh
c3MgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTsKQEAgLTk5LDcgKzEwMCw5IEBAIGNsYXNzIFdl
YlByb2Nlc3NQb29sOwogY2xhc3MgV2ViUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgV2ViUmVuZGVy
TGF5ZXI7CiBjbGFzcyBXZWJSZW5kZXJPYmplY3Q7CitjbGFzcyBXZWJSZXNvdXJjZUNhY2hlTWFu
YWdlclByb3h5OwogY2xhc3MgV2ViVGV4dENoZWNrZXI7CitjbGFzcyBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTsKIGNsYXNzIFdlYlZpYnJhdGlvblByb3h5OwogY2xhc3MgV2ViVmlld3Bv
cnRBdHRyaWJ1dGVzOwogCkBAIC0xMzksNiArMTQyLDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdL
T3BlblBhbmVsUGFyYW1ldGVycwogV0tfQUREX0FQSV9NQVBQSU5HKFdLT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJSZWYsIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkpCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tPcmlnaW5EYXRhTWFuYWdlclJlZiwgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94
eSkKIFdLX0FERF9BUElfTUFQUElORyhXS1BhZ2VHcm91cFJlZiwgV2ViUGFnZUdyb3VwKQorV0tf
QUREX0FQSV9NQVBQSU5HKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIEFQSTo6UGFnZUNvbmZpZ3Vy
YXRpb24pCiBXS19BRERfQVBJX01BUFBJTkcoV0tQYWdlUmVmLCBXZWJQYWdlUHJveHkpCiBXS19B
RERfQVBJX01BUFBJTkcoV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXJSZWYsIFdlYlBsdWdpblNpdGVE
YXRhTWFuYWdlcikKIFdLX0FERF9BUElfTUFQUElORyhXS1ByZWZlcmVuY2VzUmVmLCBXZWJQcmVm
ZXJlbmNlcykKQEAgLTE0Nyw3ICsxNTEsOSBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tSZW5kZXJM
YXllclJlZiwgV2ViCiBXS19BRERfQVBJX01BUFBJTkcoV0tSZW5kZXJPYmplY3RSZWYsIFdlYlJl
bmRlck9iamVjdCkKIFdLX0FERF9BUElfTUFQUElORyhXS1Nlc3Npb25TdGF0ZVJlZiwgQVBJOjpT
ZXNzaW9uU3RhdGUpCiBXS19BRERfQVBJX01BUFBJTkcoV0tUZXh0Q2hlY2tlclJlZiwgV2ViVGV4
dENoZWNrZXIpCitXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYs
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHkpCitXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyU2NyaXB0UmVmLCBBUEk6OlVzZXJTY3JpcHQp
CiBXS19BRERfQVBJX01BUFBJTkcoV0tWaWJyYXRpb25SZWYsIFdlYlZpYnJhdGlvblByb3h5KQog
V0tfQUREX0FQSV9NQVBQSU5HKFdLVmlld3BvcnRBdHRyaWJ1dGVzUmVmLCBXZWJWaWV3cG9ydEF0
dHJpYnV0ZXMpCiBXS19BRERfQVBJX01BUFBJTkcoV0tJbnNwZWN0b3JSZWYsIFdlYkluc3BlY3Rv
clByb3h5KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZp
Z3VyYXRpb25SZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldLUGFnZUNvbmZpZ3VyYXRpb25SZWYuaCIKKworI2luY2x1ZGUgIkFQSVBh
Z2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRUeXBlSUQoKQor
eworICAgIHJldHVybiB0b0FQSShBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpBUElUeXBlKTsKK30K
KworV0tQYWdlQ29uZmlndXJhdGlvblJlZiBXS1BhZ2VDb25maWd1cmF0aW9uQ3JlYXRlKCkKK3sK
KyAgICByZXR1cm4gdG9BUEkoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkubGVha1Jl
ZigpKTsKK30KKworV0tDb250ZXh0UmVmIFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRDb250ZXh0KFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gdG9BUEko
dG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5wcm9jZXNzUG9vbCgpKTsKK30KKwordm9pZCBXS1BhZ2VD
b25maWd1cmF0aW9uU2V0Q29udGV4dChXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRp
b24sIFdLQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIHRvSW1wbChjb25maWd1cmF0aW9uKS0+
c2V0UHJvY2Vzc1Bvb2wodG9JbXBsKGNvbnRleHQpKTsKK30KKworV0tQYWdlR3JvdXBSZWYgV0tQ
YWdlQ29uZmlndXJhdGlvbkdldFBhZ2VHcm91cChXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZp
Z3VyYXRpb24pCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb25maWd1cmF0aW9uKS0+cGFn
ZUdyb3VwKCkpOworfQorCit2b2lkIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRQYWdlR3JvdXAoV0tQ
YWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3Jv
dXApCit7CisgICAgdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5zZXRQYWdlR3JvdXAodG9JbXBsKHBh
Z2VHcm91cCkpOworfQorCitXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZiBXS1BhZ2VDb25maWd1
cmF0aW9uR2V0VXNlckNvbnRlbnRDb250cm9sbGVyKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29u
ZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbmZpZ3VyYXRpb24pLT51
c2VyQ29udGVudENvbnRyb2xsZXIoKSk7Cit9CisKK3ZvaWQgV0tQYWdlQ29uZmlndXJhdGlvblNl
dFVzZXJDb250ZW50Q29udHJvbGxlcihXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRp
b24sIFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmIHVzZXJDb250ZW50Q29udHJvbGxlcikKK3sK
KyAgICB0b0ltcGwoY29uZmlndXJhdGlvbiktPnNldFVzZXJDb250ZW50Q29udHJvbGxlcih0b0lt
cGwodXNlckNvbnRlbnRDb250cm9sbGVyKSk7Cit9CisKK1dLUHJlZmVyZW5jZXNSZWYgV0tQYWdl
Q29uZmlndXJhdGlvbkdldFByZWZlcmVuY2VzKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmln
dXJhdGlvbikKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5wcmVm
ZXJlbmNlcygpKTsKK30KKwordm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0UHJlZmVyZW5jZXMo
V0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS1ByZWZlcmVuY2VzUmVmIHBy
ZWZlcmVuY2VzKQoreworICAgIHRvSW1wbChjb25maWd1cmF0aW9uKS0+c2V0UHJlZmVyZW5jZXMo
dG9JbXBsKHByZWZlcmVuY2VzKSk7Cit9CisKK1dLUGFnZVJlZiBXS1BhZ2VDb25maWd1cmF0aW9u
R2V0UmVsYXRlZFBhZ2UoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uKQorewor
ICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29uZmlndXJhdGlvbiktPnJlbGF0ZWRQYWdlKCkpOwor
fQorCit2b2lkIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRSZWxhdGVkUGFnZShXS1BhZ2VDb25maWd1
cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLUGFnZVJlZiByZWxhdGVkUGFnZSkKK3sKKyAgICB0
b0ltcGwoY29uZmlndXJhdGlvbiktPnNldFJlbGF0ZWRQYWdlKHRvSW1wbChyZWxhdGVkUGFnZSkp
OworfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3Vy
YXRpb25SZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlQ29uZmlndXJhdGlvblJlZi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1BhZ2VDb25maWd1cmF0aW9u
UmVmX2gKKyNkZWZpbmUgV0tQYWdlQ29uZmlndXJhdGlvblJlZl9oCisKKyNpbmNsdWRlIDxXZWJL
aXQvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYK
KworV0tfRVhQT1JUIFdLVHlwZUlEIFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRUeXBlSUQoKTsKKwor
V0tfRVhQT1JUIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgV0tQYWdlQ29uZmlndXJhdGlvbkNyZWF0
ZSgpOworCitXS19FWFBPUlQgV0tDb250ZXh0UmVmIFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRDb250
ZXh0KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CitXS19FWFBPUlQgdm9p
ZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dChXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNv
bmZpZ3VyYXRpb24sIFdLQ29udGV4dFJlZiBjb250ZXh0KTsKKworV0tfRVhQT1JUIFdLUGFnZUdy
b3VwUmVmIFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRQYWdlR3JvdXAoV0tQYWdlQ29uZmlndXJhdGlv
blJlZiBjb25maWd1cmF0aW9uKTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZUNvbmZpZ3VyYXRpb25T
ZXRQYWdlR3JvdXAoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS1BhZ2VH
cm91cFJlZiBwYWdlR3JvdXApOworCitXS19FWFBPUlQgV0tVc2VyQ29udGVudENvbnRyb2xsZXJS
ZWYgV0tQYWdlQ29uZmlndXJhdGlvbkdldFVzZXJDb250ZW50Q29udHJvbGxlcihXS1BhZ2VDb25m
aWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pOworV0tfRVhQT1JUIHZvaWQgV0tQYWdlQ29uZmln
dXJhdGlvblNldFVzZXJDb250ZW50Q29udHJvbGxlcihXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNv
bmZpZ3VyYXRpb24sIFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmIHVzZXJDb250ZW50Q29udHJv
bGxlcik7CisKK1dLX0VYUE9SVCBXS1ByZWZlcmVuY2VzUmVmIFdLUGFnZUNvbmZpZ3VyYXRpb25H
ZXRQcmVmZXJlbmNlcyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pOworV0tf
RVhQT1JUIHZvaWQgV0tQYWdlQ29uZmlndXJhdGlvblNldFByZWZlcmVuY2VzKFdLUGFnZUNvbmZp
Z3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlcyk7
CisKK1dLX0VYUE9SVCBXS1BhZ2VSZWYgV0tQYWdlQ29uZmlndXJhdGlvbkdldFJlbGF0ZWRQYWdl
KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CitXS19FWFBPUlQgdm9pZCBX
S1BhZ2VDb25maWd1cmF0aW9uU2V0UmVsYXRlZFBhZ2UoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBj
b25maWd1cmF0aW9uLCBXS1BhZ2VSZWYgcmVsYXRlZFBhZ2UpOworCisjaWZkZWYgX19jcGx1c3Bs
dXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gV0tQYWdlQ29uZmlndXJhdGlvblJlZl9oCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJS
ZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Vz
ZXJDb250ZW50Q29udHJvbGxlclJlZi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuaCIKKworI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLVXNlckNvbnRlbnRDb250cm9s
bGVyR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OkFQSVR5cGUpOworfQorCitXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZiBXS1Vz
ZXJDb250ZW50Q29udHJvbGxlckNyZWF0ZSgpCit7CisgICAgcmV0dXJuIHRvQVBJKFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpjcmVhdGUoKS5sZWFrUmVmKCkpOworfQorCitXS0FycmF5
UmVmIFdLVXNlckNvbnRlbnRDb250cm9sbGVyR2V0VXNlclNjcmlwdHMoV0tVc2VyQ29udGVudENv
bnRyb2xsZXJSZWYgdXNlckNvbnRlbnRDb250cm9sbGVyUmVmKQoreworICAgIHJldHVybiB0b0FQ
SSgmdG9JbXBsKHVzZXJDb250ZW50Q29udHJvbGxlclJlZiktPnVzZXJTY3JpcHRzKCkpOworfQor
Cit2b2lkIFdLVXNlckNvbnRlbnRDb250cm9sbGVyQWRkVXNlclNjcmlwdChXS1VzZXJDb250ZW50
Q29udHJvbGxlclJlZiB1c2VyQ29udGVudENvbnRyb2xsZXJSZWYsIFdLVXNlclNjcmlwdFJlZiB1
c2VyU2NyaXB0UmVmKQoreworICAgIHRvSW1wbCh1c2VyQ29udGVudENvbnRyb2xsZXJSZWYpLT5h
ZGRVc2VyU2NyaXB0KCp0b0ltcGwodXNlclNjcmlwdFJlZikpOworfQorCit2b2lkIFdLVXNlckNv
bnRlbnRDb250cm9sbGVyUmVtb3ZlQWxsVXNlclNjcmlwdHMoV0tVc2VyQ29udGVudENvbnRyb2xs
ZXJSZWYgdXNlckNvbnRlbnRDb250cm9sbGVyUmVmKQoreworICAgIHRvSW1wbCh1c2VyQ29udGVu
dENvbnRyb2xsZXJSZWYpLT5yZW1vdmVBbGxVc2VyU2NyaXB0cygpOworfQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRD
b250cm9sbGVyUmVmLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1VzZXJDb250ZW50Q29udHJvbGxlclJl
Zl9oCisjZGVmaW5lIFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmX2gKKworI2luY2x1ZGUgPFdl
YktpdC9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRp
ZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tVc2VyQ29udGVudENvbnRyb2xsZXJHZXRUeXBlSUQo
KTsKKworV0tfRVhQT1JUIFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmIFdLVXNlckNvbnRlbnRD
b250cm9sbGVyQ3JlYXRlKCk7CisKK1dLX0VYUE9SVCBXS0FycmF5UmVmIFdLVXNlckNvbnRlbnRD
b250cm9sbGVyR2V0VXNlclNjcmlwdHMoV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYgdXNlckNv
bnRlbnRDb250cm9sbGVyKTsKK1dLX0VYUE9SVCB2b2lkIFdLVXNlckNvbnRlbnRDb250cm9sbGVy
QWRkVXNlclNjcmlwdChXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZiB1c2VyQ29udGVudENvbnRy
b2xsZXIsIFdLVXNlclNjcmlwdFJlZiB1c2VyU2NyaXB0KTsKK1dLX0VYUE9SVCB2b2lkIFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyUmVtb3ZlQWxsVXNlclNjcmlwdHMoV0tVc2VyQ29udGVudENvbnRy
b2xsZXJSZWYgdXNlckNvbnRlbnRDb250cm9sbGVyKTsKKworCisjaWZkZWYgX19jcGx1c3BsdXMK
K30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWZfaCAqLwpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlclNjcmlwdFJlZi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlclNjcmlw
dFJlZi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tVc2VyU2NyaXB0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLVXNlclNjcmlwdFJlZi5o
IgorCisjaW5jbHVkZSAiQVBJVXNlclNjcmlwdC5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS1VzZXJTY3JpcHRHZXRUeXBl
SUQoKQoreworICAgIHJldHVybiB0b0FQSShBUEk6OlVzZXJTY3JpcHQ6OkFQSVR5cGUpOworfQor
CitXS1VzZXJTY3JpcHRSZWYgV0tVc2VyU2NyaXB0Q3JlYXRlV2l0aFNvdXJjZShXS1N0cmluZ1Jl
ZiBzb3VyY2VSZWYsIF9XS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIGJv
b2wgZm9yTWFpbkZyYW1lT25seSkKK3sKKyAgICByZXR1cm4gdG9BUEkoQVBJOjpVc2VyU2NyaXB0
OjpjcmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB7IHRvV1RGU3RyaW5nKHNvdXJjZVJlZiksIEFQ
STo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgeyB9LCB7IH0sIHRvVXNlclNjcmlw
dEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3Jl
OjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0pLmxl
YWtSZWYoKSk7Cit9CisKK1dLU3RyaW5nUmVmIFdLVXNlclNjcmlwdENvcHlTb3VyY2UoV0tVc2Vy
U2NyaXB0UmVmIHVzZXJTY3JpcHRSZWYpCit7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1w
bCh1c2VyU2NyaXB0UmVmKS0+dXNlclNjcmlwdCgpLnNvdXJjZSgpKTsKK30KKworX1dLVXNlclNj
cmlwdEluamVjdGlvblRpbWUgV0tVc2VyU2NyaXB0R2V0SW5qZWN0aW9uVGltZShXS1VzZXJTY3Jp
cHRSZWYgdXNlclNjcmlwdFJlZikKK3sKKyAgICByZXR1cm4gdG9XS1VzZXJTY3JpcHRJbmplY3Rp
b25UaW1lKHRvSW1wbCh1c2VyU2NyaXB0UmVmKS0+dXNlclNjcmlwdCgpLmluamVjdGlvblRpbWUo
KSk7Cit9CisKK2Jvb2wgV0tVc2VyU2NyaXB0R2V0TWFpbkZyYW1lT25seShXS1VzZXJTY3JpcHRS
ZWYgdXNlclNjcmlwdFJlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKHVzZXJTY3JpcHRSZWYpLT51
c2VyU2NyaXB0KCkuaW5qZWN0ZWRGcmFtZXMoKSA9PSBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1l
T25seTsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3Jp
cHRSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tV
c2VyU2NyaXB0UmVmLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tVc2VyU2NyaXB0UmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV0tVc2VyU2NyaXB0UmVmX2gKKyNkZWZpbmUgV0tVc2VyU2Ny
aXB0UmVmX2gKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQv
V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVy
biAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1VzZXJTY3JpcHRHZXRUeXBl
SUQoKTsKKworV0tfRVhQT1JUIFdLVXNlclNjcmlwdFJlZiBXS1VzZXJTY3JpcHRDcmVhdGVXaXRo
U291cmNlKFdLU3RyaW5nUmVmIHNvdXJjZSwgX1dLVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5q
ZWN0aW9uVGltZSwgYm9vbCBmb3JNYWluRnJhbWVPbmx5KTsKKworV0tfRVhQT1JUIFdLU3RyaW5n
UmVmIFdLVXNlclNjcmlwdENvcHlTb3VyY2UoV0tVc2VyU2NyaXB0UmVmIHVzZXJTY3JpcHQpOwor
V0tfRVhQT1JUIF9XS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lIFdLVXNlclNjcmlwdEdldEluamVj
dGlvblRpbWUoV0tVc2VyU2NyaXB0UmVmIHVzZXJTY3JpcHQpOworV0tfRVhQT1JUIGJvb2wgV0tV
c2VyU2NyaXB0R2V0TWFpbkZyYW1lT25seShXS1VzZXJTY3JpcHRSZWYgdXNlclNjcmlwdCk7CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS1VzZXJTY3JpcHRS
ZWZfaCAqLwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dlYktpdDJfQy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XZWJLaXQyX0Mu
aAkocmV2aXNpb24gMTc4NTgxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dl
YktpdDJfQy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMyArNTEsMTYgQEAKICNpbmNsdWRlIDxX
ZWJLaXQvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlLmg+CisjaW5jbHVk
ZSA8V2ViS2l0L1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQ
YWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQcmVmZXJlbmNlc1JlZi5oPgogI2luY2x1
ZGUgPFdlYktpdC9XS1N0cmluZy5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1VSTC5oPgogI2luY2x1
ZGUgPFdlYktpdC9XS1VSTFJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tVUkxSZXNwb25z
ZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5oPgogI2lu
Y2x1ZGUgPFdlYktpdC9XS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Lmg+CisjaW5jbHVkZSA8
V2ViS2l0L1dLVXNlclNjcmlwdFJlZi5oPgogCiAjaWYgZGVmaW5lZChfX09CSkNfXykgJiYgX19P
QkpDX18KICNpbXBvcnQgPFdlYktpdC9XS1ZpZXcuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCShyZXZpc2lvbiAxNzg1
ODEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjgsMjggKzI4LDE0IEBACiAKICNpZiBXS19BUElfRU5BQkxF
RAogCi0jaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KIEBpbXBsZW1lbnRhdGlv
biBXS1VzZXJTY3JpcHQKIAotc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlSWRlbnRpZmllcigpCi17
Ci0gICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXI7Ci0KLSAgICByZXR1cm4gKytpZGVudGlm
aWVyOwotfQotCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291
cmNlIGluamVjdGlvblRpbWU6KFdLVXNlclNjcmlwdEluamVjdGlvblRpbWUpaW5qZWN0aW9uVGlt
ZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW5GcmFtZU9ubHkKIHsKICAgICBpZiAoIShz
ZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIFN0cmluZ0J1
aWxkZXIgdXJsU3RyaW5nQnVpbGRlcjsKLSAgICB1cmxTdHJpbmdCdWlsZGVyLmFwcGVuZCgidXNl
ci1zY3JpcHQ6Iik7Ci0gICAgdXJsU3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoZ2VuZXJhdGVJ
ZGVudGlmaWVyKCkpOwotICAgIFdlYkNvcmU6OlVSTCB1cmwgeyBXZWJDb3JlOjpVUkwgeyB9LCB1
cmxTdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkgfTsKLQotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1
Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsg
V1RGOjpTdHJpbmcoc291cmNlKSwgdXJsLCB7IH0sIHsgfSwgQVBJOjp0b1dlYkNvcmVVc2VyU2Ny
aXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNv
cmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgfSk7
CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNl
bGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJT
Y3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9LCBBUEk6OnRvV2ViQ29yZVVzZXJT
Y3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2Vi
Q29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyB9
KTsKIAogICAgIHJldHVybiBzZWxmOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDE3ODU4MSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjZWxzZQogLSAoaWQpaW5pdFdpdGhGcmFtZToo
TlNSZWN0KWZyYW1lIGNvbnRleHRSZWY6KFdLQ29udGV4dFJlZiljb250ZXh0UmVmIHBhZ2VHcm91
cFJlZjooV0tQYWdlR3JvdXBSZWYpcGFnZUdyb3VwUmVmOwogLSAoaWQpaW5pdFdpdGhGcmFtZToo
TlNSZWN0KWZyYW1lIGNvbnRleHRSZWY6KFdLQ29udGV4dFJlZiljb250ZXh0UmVmIHBhZ2VHcm91
cFJlZjooV0tQYWdlR3JvdXBSZWYpcGFnZUdyb3VwUmVmIHJlbGF0ZWRUb1BhZ2U6KFdLUGFnZVJl
ZilyZWxhdGVkUGFnZTsKKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBjb25maWd1
cmF0aW9uUmVmOihXS1BhZ2VDb25maWd1cmF0aW9uUmVmKWNvbmZpZ3VyYXRpb247CiAjZW5kaWYK
IAogI2lmIFRBUkdFVF9PU19JUEhPTkUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0JKHJl
dmlzaW9uIDE3ODU4MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAog
CiAjaWYgV0tfQVBJX0VOQUJMRUQKIAorI2ltcG9ydCAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIK
ICNpbXBvcnQgIldLUHJlZmVyZW5jZXMuaCIKICNpbXBvcnQgIldLUHJvY2Vzc1Bvb2wuaCIKICNp
bXBvcnQgIldLVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCkBAIC00Myw4ICs0NCwxMCBAQAogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBMYXp5SW5pdGlhbGl6ZWQgewogcHVibGljOgorICAg
IHR5cGVkZWYgdHlwZW5hbWUgV1RGOjpHZXRQdHJIZWxwZXI8VD46OlB0clR5cGUgUHRyVHlwZTsK
KwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEY+Ci0gICAgVCogZ2V0KEYmJiBmKQorICAgIFB0clR5
cGUgZ2V0KEYmJiBmKQogICAgIHsKICAgICAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAg
ICAgICAgICAgIG1fdmFsdWUgPSBmKCk7CkBAIC01NCwzOCArNTcsMzggQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gbV92YWx1ZS5nZXQoKTsKICAgICB9CiAKLSAgICB2b2lkIHNldChUKiB0KQor
ICAgIHZvaWQgc2V0KFB0clR5cGUgdCkKICAgICB7CiAgICAgICAgIG1fdmFsdWUgPSB0OwogICAg
ICAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgIH0KIAotICAgIHZvaWQgc2V0KFJldGFp
blB0cjxUPiYmIHQpCisgICAgdm9pZCBzZXQoVCYmIHQpCiAgICAgewogICAgICAgICBtX3ZhbHVl
ID0gV1RGOjptb3ZlKHQpOwogICAgICAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgIH0K
IAotICAgIFQqIHBlZWsoKQorICAgIFB0clR5cGUgcGVlaygpCiAgICAgewogICAgICAgICByZXR1
cm4gbV92YWx1ZS5nZXQoKTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSW5pdGlh
bGl6ZWQgPSBmYWxzZTsKLSAgICBSZXRhaW5QdHI8VD4gbV92YWx1ZTsKKyAgICBUIG1fdmFsdWU7
CiB9OwogCiBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3Q29uZmlndXJhdGlvbiB7Ci0gICAgTGF6
eUluaXRpYWxpemVkPFdLUHJvY2Vzc1Bvb2w+IF9wcm9jZXNzUG9vbDsKLSAgICBMYXp5SW5pdGlh
bGl6ZWQ8V0tQcmVmZXJlbmNlcz4gX3ByZWZlcmVuY2VzOwotICAgIExhenlJbml0aWFsaXplZDxX
S1VzZXJDb250ZW50Q29udHJvbGxlcj4gX3VzZXJDb250ZW50Q29udHJvbGxlcjsKLSAgICBMYXp5
SW5pdGlhbGl6ZWQ8X1dLVmlzaXRlZExpbmtQcm92aWRlcj4gX3Zpc2l0ZWRMaW5rUHJvdmlkZXI7
Ci0gICAgTGF6eUluaXRpYWxpemVkPF9XS1dlYnNpdGVEYXRhU3RvcmU+IF93ZWJzaXRlRGF0YVN0
b3JlOworICAgIExhenlJbml0aWFsaXplZDxSZXRhaW5QdHI8V0tQcm9jZXNzUG9vbD4+IF9wcm9j
ZXNzUG9vbDsKKyAgICBMYXp5SW5pdGlhbGl6ZWQ8UmV0YWluUHRyPFdLUHJlZmVyZW5jZXM+PiBf
cHJlZmVyZW5jZXM7CisgICAgTGF6eUluaXRpYWxpemVkPFJldGFpblB0cjxXS1VzZXJDb250ZW50
Q29udHJvbGxlcj4+IF91c2VyQ29udGVudENvbnRyb2xsZXI7CisgICAgTGF6eUluaXRpYWxpemVk
PFJldGFpblB0cjxfV0tWaXNpdGVkTGlua1Byb3ZpZGVyPj4gX3Zpc2l0ZWRMaW5rUHJvdmlkZXI7
CisgICAgTGF6eUluaXRpYWxpemVkPFJldGFpblB0cjxfV0tXZWJzaXRlRGF0YVN0b3JlPj4gX3dl
YnNpdGVEYXRhU3RvcmU7CiAgICAgV2ViS2l0OjpXZWFrT2JqQ1B0cjxXS1dlYlZpZXc+IF9yZWxh
dGVkV2ViVmlldzsKICAgICBXZWJLaXQ6OldlYWtPYmpDUHRyPFdLV2ViVmlldz4gX2FsdGVybmF0
ZVdlYlZpZXdGb3JOYXZpZ2F0aW9uR2VzdHVyZXM7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBf
Z3JvdXBJZGVudGlmaWVyOwotICAgIExhenlJbml0aWFsaXplZDxOU1N0cmluZz4gX2FwcGxpY2F0
aW9uTmFtZUZvclVzZXJBZ2VudDsKKyAgICBMYXp5SW5pdGlhbGl6ZWQ8UmV0YWluUHRyPE5TU3Ry
aW5nPj4gX2FwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDsKIAogI2lmIFBMQVRGT1JNKElPUykK
ICAgICBMYXp5SW5pdGlhbGl6ZWQ8V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnk+IF9j
b250ZW50UHJvdmlkZXJSZWdpc3RyeTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1dLVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0JKHJldmlzaW9uIDE3ODU4MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBA
QAogI2VuZGlmCiAKICNpbXBvcnQgIkFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgiCisj
aW1wb3J0ICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2ltcG9ydCAiQWN0aW9uTWVudUhpdFRl
c3RSZXN1bHQuaCIKICNpbXBvcnQgIkF0dHJpYnV0ZWRTdHJpbmcuaCIKICNpbXBvcnQgIkNvbG9y
U3BhY2VEYXRhLmgiCkBAIC0zNzk1LDYgKzM3OTYsMTQgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZToo
TlNSZWN0KWZyYW1lIGNvbnRleAogICAgIHJldHVybiBbc2VsZiBpbml0V2l0aEZyYW1lOmZyYW1l
IHByb2Nlc3NQb29sOip0b0ltcGwoY29udGV4dFJlZikgY29uZmlndXJhdGlvbjp3ZWJQYWdlQ29u
ZmlndXJhdGlvbiB3ZWJWaWV3Om5pbF07CiB9CiAKKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVj
dClmcmFtZSBjb25maWd1cmF0aW9uUmVmOihXS1BhZ2VDb25maWd1cmF0aW9uUmVmKWNvbmZpZ3Vy
YXRpb24KK3sKKyAgICBhdXRvJiBwcm9jZXNzUG9vbCA9ICp0b0ltcGwoY29uZmlndXJhdGlvbikt
PnByb2Nlc3NQb29sKCk7CisgICAgYXV0byB3ZWJQYWdlQ29uZmlndXJhdGlvbiA9IHRvSW1wbChj
b25maWd1cmF0aW9uKS0+d2ViUGFnZUNvbmZpZ3VyYXRpb24oKTsKKworICAgIHJldHVybiBbc2Vs
ZiBpbml0V2l0aEZyYW1lOmZyYW1lIHByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRp
b246d2ViUGFnZUNvbmZpZ3VyYXRpb24gd2ViVmlldzpuaWxdOworfQorCiAjaWYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDgwCiAtIChCT09MKXdhbnRzVXBkYXRlTGF5ZXIK
IHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCShyZXZpc2lv
biAxNzg1ODEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsMTAg
QEAgY2xhc3MgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI7CiAKIGNsYXNzIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6VXNlckNvbnRlbnRDb250cm9sbGVyPiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7
CiBwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eT4gY3JlYXRlKCkKKyAgICB7IAorICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5KTsKKyAgICB9IAogICAgIGV4cGxpY2l0IFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5KCk7CiAgICAgfldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDE3ODU4MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA3MCw2ICsxMDcw
LDE1IEBACiAJCTdDODVGRDdGMTkzNDE2NjUwMDAxNzdDNCAvKiBXZWJQcmVmZXJlbmNlc0tleXMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4NUZE
N0QxOTM0MTY2NTAwMDE3N0M0IC8qIFdlYlByZWZlcmVuY2VzS2V5cy5jcHAgKi87IH07CiAJCTdD
ODVGRDgwMTkzNDE2NjUwMDAxNzdDNCAvKiBXZWJQcmVmZXJlbmNlc0tleXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODVGRDdFMTkzNDE2NjUwMDAx
NzdDNCAvKiBXZWJQcmVmZXJlbmNlc0tleXMuaCAqLzsgfTsKIAkJN0M4OUQyOTQxQTY3MTIyRjAw
M0E1RkRFIC8qIEFQSVVzZXJTY3JpcHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDODlEMjkyMUE2NzEyMkYwMDNBNUZERSAvKiBBUElVc2VyU2NyaXB0
LmggKi87IH07CisJCTdDODlEMjk3MUE2NzUzQjIwMDNBNUZERSAvKiBBUElQYWdlQ29uZmlndXJh
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Qzg5RDI5NTFBNjc1M0IyMDAzQTVGREUgLyogQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwICovOyB9
OworCQk3Qzg5RDI5ODFBNjc1M0IyMDAzQTVGREUgLyogQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODlEMjk2MUE2
NzUzQjIwMDNBNUZERSAvKiBBUElQYWdlQ29uZmlndXJhdGlvbi5oICovOyB9OworCQk3Qzg5RDI5
QjFBNjc4MzdCMDAzQTVGREUgLyogV0tQYWdlQ29uZmlndXJhdGlvblJlZi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg5RDI5OTFBNjc4MzdCMDAz
QTVGREUgLyogV0tQYWdlQ29uZmlndXJhdGlvblJlZi5jcHAgKi87IH07CisJCTdDODlEMjlDMUE2
NzgzN0IwMDNBNUZERSAvKiBXS1BhZ2VDb25maWd1cmF0aW9uUmVmLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg5RDI5QTFBNjc4MzdCMDAzQTVGREUg
LyogV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTdDODlEMjlGMUE2Nzg1NTQwMDNBNUZERSAvKiBXS1VzZXJD
b250ZW50Q29udHJvbGxlclJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Qzg5RDI5RDFBNjc4NTU0MDAzQTVGREUgLyogV0tVc2VyQ29udGVudENv
bnRyb2xsZXJSZWYuY3BwICovOyB9OworCQk3Qzg5RDJBMDFBNjc4NTU0MDAzQTVGREUgLyogV0tV
c2VyQ29udGVudENvbnRyb2xsZXJSZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDODlEMjlFMUE2Nzg1NTQwMDNBNUZERSAvKiBXS1VzZXJDb250ZW50
Q29udHJvbGxlclJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTdDODlEMkEzMUE2Nzg4NzUwMDNBNUZERSAvKiBXS1VzZXJTY3JpcHRSZWYuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4OUQyQTEx
QTY3ODg3NTAwM0E1RkRFIC8qIFdLVXNlclNjcmlwdFJlZi5jcHAgKi87IH07CisJCTdDODlEMkE0
MUE2Nzg4NzUwMDNBNUZERSAvKiBXS1VzZXJTY3JpcHRSZWYuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODlEMkEyMUE2Nzg4NzUwMDNBNUZERSAvKiBX
S1VzZXJTY3JpcHRSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk3Qzg5RDJBNjFBNjc4OUVBMDAzQTVGREUgLyogQVBJVXNlclNjcmlwdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg5RDJBNTFB
Njc4OUVBMDAzQTVGREUgLyogQVBJVXNlclNjcmlwdC5jcHAgKi87IH07CiAJCTdDOEVCMTE3MThE
QjZBMTkwMDc5MTdDMiAvKiBXS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4RUIxMTYxOERCNkExOTAwNzkxN0MyIC8q
IFdLUHJlZmVyZW5jZXNQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJN0M5RDE1MzcxODQ1ODREQTAwOUQzOTE4IC8qIFdLQnJvd3NpbmdD
b250ZXh0R3JvdXBJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0M5RDE1MzYxODQ1ODREQTAwOUQzOTE4IC8qIFdLQnJvd3NpbmdDb250ZXh0
R3JvdXBJbnRlcm5hbC5oICovOyB9OwogCQk3Q0EyNTRFQjE4Mjk5M0NFMDBGQzhBNDEgLyogV0tC
cm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0NBMjU0RUExODI5OTNDRTAwRkM4QTQxIC8qIFdLQnJvd3Np
bmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMzE4Miw2ICszMTkxLDE1IEBACiAJCTdDODVGRDdEMTkzNDE2
NjUwMDAxNzdDNCAvKiBXZWJQcmVmZXJlbmNlc0tleXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViUHJlZmVyZW5jZXNLZXlzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0M4NUZEN0UxOTM0MTY2NTAwMDE3N0M0IC8qIFdlYlByZWZlcmVuY2Vz
S2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQcmVmZXJlbmNlc0tl
eXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4OUQyOTIxQTY3MTIyRjAwM0E1
RkRFIC8qIEFQSVVzZXJTY3JpcHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QVBJVXNlclNjcmlwdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qzg5RDI5NTFB
Njc1M0IyMDAzQTVGREUgLyogQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3Qzg5RDI5NjFBNjc1M0IyMDAzQTVGREUgLyogQVBJUGFn
ZUNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJUGFn
ZUNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M4OUQyOTkx
QTY3ODM3QjAwM0E1RkRFIC8qIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tQYWdlQ29uZmlndXJhdGlvblJlZi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDODlEMjlBMUE2NzgzN0IwMDNBNUZERSAvKiBX
S1BhZ2VDb25maWd1cmF0aW9uUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0M4OUQyOUQxQTY3ODU1NDAwM0E1RkRFIC8qIFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLVXNlckNvbnRlbnRDb250
cm9sbGVyUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M4OUQyOUUxQTY3
ODU1NDAwM0E1RkRFIC8qIFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDODlEMkExMUE2Nzg4NzUwMDNBNUZERSAvKiBXS1Vz
ZXJTY3JpcHRSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tV
c2VyU2NyaXB0UmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M4OUQyQTIx
QTY3ODg3NTAwM0E1RkRFIC8qIFdLVXNlclNjcmlwdFJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS1VzZXJTY3JpcHRSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0M4OUQyQTUxQTY3ODlFQTAwM0E1RkRFIC8qIEFQSVVzZXJTY3JpcHQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJVXNlclNjcmlwdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDOEVCMTE2MThEQjZBMTkwMDc5MTdDMiAvKiBXS1By
ZWZlcmVuY2VzUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1By
ZWZlcmVuY2VzUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzlEMTUz
NjE4NDU4NERBMDA5RDM5MTggLyogV0tCcm93c2luZ0NvbnRleHRHcm91cEludGVybmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRl
cm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0EyNTRFQTE4Mjk5M0NFMDBG
QzhBNDEgLyogV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MDYwLDYgKzYwNzgsOCBAQAogCQkJCTdDRDNB
NDgxMUE1RDAyRkEwMDk2MjNCOCAvKiBBUElOYXZpZ2F0aW9uLmggKi8sCiAJCQkJQkNGNjlGQTEx
MTc2RDAxNDAwNDcxQTUyIC8qIEFQSU5hdmlnYXRpb25EYXRhLmNwcCAqLywKIAkJCQlCQ0Y2OUZB
MDExNzZEMDE0MDA0NzFBNTIgLyogQVBJTmF2aWdhdGlvbkRhdGEuaCAqLywKKwkJCQk3Qzg5RDI5
NTFBNjc1M0IyMDAzQTVGREUgLyogQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwICovLAorCQkJCTdD
ODlEMjk2MUE2NzUzQjIwMDNBNUZERSAvKiBBUElQYWdlQ29uZmlndXJhdGlvbi5oICovLAogCQkJ
CTFBRkREMzE0MTg5MUI1NDAwMDE1Mzk3MCAvKiBBUElQb2xpY3lDbGllbnQuaCAqLywKIAkJCQk3
Q0U0RDIxRDFBNDkxNENBMDBDN0YxNTIgLyogQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNw
cCAqLywKIAkJCQk3Q0U0RDIxRTFBNDkxNENBMDBDN0YxNTIgLyogQVBJUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmggKi8sCkBAIC02MDY4LDYgKzYwODgsNyBAQAogCQkJCTFBRkRFNjVGMTk1NEU5
QjEwMEM0OEZGQSAvKiBBUElTZXNzaW9uU3RhdGUuY3BwICovLAogCQkJCTFBRkRFNjYwMTk1NEU5
QjEwMEM0OEZGQSAvKiBBUElTZXNzaW9uU3RhdGUuaCAqLywKIAkJCQkxQTRENjY0NzE4QTJEOTFB
MDBEODJFMjEgLyogQVBJVUlDbGllbnQuaCAqLywKKwkJCQk3Qzg5RDJBNTFBNjc4OUVBMDAzQTVG
REUgLyogQVBJVXNlclNjcmlwdC5jcHAgKi8sCiAJCQkJN0M4OUQyOTIxQTY3MTIyRjAwM0E1RkRF
IC8qIEFQSVVzZXJTY3JpcHQuaCAqLywKIAkJCQkxQTM2MzVBNzFBMzE0NEEzMDBFRDYxOTcgLyog
QVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAgKi8sCiAJCQkJMUEzNjM1QTgxQTMxNDRBMzAwRUQ2MTk3
IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuaCAqLywKQEAgLTYxNTAsNiArNjE3MSw4IEBACiAJCQkJ
NzU1NDIyQkExODA2MkI5QzAwNDZGNkE4IC8qIFdLT3JpZ2luRGF0YU1hbmFnZXIuaCAqLywKIAkJ
CQlCQ0Q1OTdENDExMkI1NkRDMDBFQzhDMjMgLyogV0tQYWdlLmNwcCAqLywKIAkJCQlCQ0Q1OTdE
NTExMkI1NkRDMDBFQzhDMjMgLyogV0tQYWdlLmggKi8sCisJCQkJN0M4OUQyOTkxQTY3ODM3QjAw
M0E1RkRFIC8qIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYuY3BwICovLAorCQkJCTdDODlEMjlBMUE2
NzgzN0IwMDNBNUZERSAvKiBXS1BhZ2VDb25maWd1cmF0aW9uUmVmLmggKi8sCiAJCQkJMUFCOEEx
RjcxODQwMEJCODAwRTlBRTY5IC8qIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi8sCiAJCQkJ
ODM3MkRCMjQxQTY3NEM4RjAwQzY5N0M1IC8qIFdLUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50
LmggKi8sCiAJCQkJMUFCOEExRjMxODQwMEI4RjAwRTlBRTY5IC8qIFdLUGFnZUZpbmRDbGllbnQu
aCAqLywKQEAgLTYxNzgsNiArNjIwMSwxMCBAQAogCQkJCTFBREU0NkIxMTk1NEVDNjEwMDBGNzk4
NSAvKiBXS1Nlc3Npb25TdGF0ZVJlZi5oICovLAogCQkJCTRBNDEwRjM1MTlBRjdBQzMwMDJFQkFC
NSAvKiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcCAqLywKIAkJCQk0QTQxMEYzNjE5
QUY3QUMzMDAyRUJBQjUgLyogV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oICovLAorCQkJ
CTdDODlEMjlEMUE2Nzg1NTQwMDNBNUZERSAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5j
cHAgKi8sCisJCQkJN0M4OUQyOUUxQTY3ODU1NDAwM0E1RkRFIC8qIFdLVXNlckNvbnRlbnRDb250
cm9sbGVyUmVmLmggKi8sCisJCQkJN0M4OUQyQTExQTY3ODg3NTAwM0E1RkRFIC8qIFdLVXNlclNj
cmlwdFJlZi5jcHAgKi8sCisJCQkJN0M4OUQyQTIxQTY3ODg3NTAwM0E1RkRFIC8qIFdLVXNlclNj
cmlwdFJlZi5oICovLAogCQkJKTsKIAkJCXBhdGggPSBDOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTc4NDcsNiArNzg3NCw3IEBACiAJCQkJQkMyMDRFRUYxMUM4M0VDODAwOEYzMzc1
IC8qIFdLQnVuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIwNEVGMDExQzgzRUM4MDA4RjMz
NzUgLyogV0tCdW5kbGVBUElDYXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVFRUI5RjEyNzc2
MUFDMDAzMzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJzICovLAor
CQkJCTdDODlEMkE0MUE2Nzg4NzUwMDNBNUZERSAvKiBXS1VzZXJTY3JpcHRSZWYuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzNUVFQjlCMTI3NzYxN0MwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3
YXJkTGlzdEl0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRUZDMUNGMTUyNEU2MjUwMEM5QTkz
OCAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNE
MjVGMTcxMUQ2QkRFMTAwMTY5QjBFIC8qIFdLQnVuZGxlRnJhbWUuaCBpbiBIZWFkZXJzICovLApA
QCAtNzg3MCw2ICs3ODk4LDcgQEAKIAkJCQkxQUI0NzREODE4NEQ0M0ZEMDA1MUI2MjIgLyogV0tC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFRDgyQTdGMjEyOEM2
RkFGMDA0NDc3QjMgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFCNDc0RUExODRENDUxMzAwNTFCNjIyIC8qIFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJN0M4OUQyOUMxQTY3ODM3QjAwM0E1RkRFIC8qIFdLUGFnZUNvbmZp
Z3VyYXRpb25SZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUI0MTk4MTFENDFENTcwMDExRThE
RCAvKiBXS0J1bmRsZVBhZ2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI0NzREQTE4
NEQ0NDI1MDA1MUI2MjIgLyogV0tCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUI0NzRERTE4NEQ0NDU5MDA1MUI2MjIgLyogV0tCdW5kbGVQYWdlVUlD
bGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNzkwNiw2ICs3OTM1LDcgQEAKIAkJCQlCQzAxN0Qw
QjE2MjYwRkY0MDA3MDU0RjUgLyogV0tET01JbnRlcm5hbHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMDE3RDBEMTYyNjBGRjQwMDcwNTRGNSAvKiBXS0RPTU5vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDNUQyNEMyMTZDRDcwNkQwMDdENTQ2MSAvKiBXS0RPTU5vZGVQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3Qzg5RDI5ODFBNjc1M0IyMDAzQTVGREUgLyogQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzlDNDM2MTYyNjM2NkYwMDhCQzY4OSAvKiBX
S0RPTVJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVEMjRDNTE2Q0Q3MDg4MDA3RDU0NjEg
LyogV0tET01SYW5nZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5M0VCRUFCMTYyN0Q5
QzkwMDVGODlGMSAvKiBXS0RPTVRleHQuaCBpbiBIZWFkZXJzICovLApAQCAtODAyNCw2ICs4MDU0
LDcgQEAKIAkJCQkxQTlFMzI5RjE4MjJGRUREMDBGNUQwNEMgLyogV0tSZW1vdGVPYmplY3RDb2Rl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5NDg0MDkxNTBDNEI5NzAwRTUyQ0U5IC8qIFdLUmVu
ZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NjA4ODIzMTUwNDE0RjcwMEZDODJDNyAv
KiBXS1JlbmRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0M4OUQyQTAxQTY3ODU1NDAw
M0E1RkRFIC8qIFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzMzM2NzYzQjEzMEM5OURDMDA2QzlERTIgLyogV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM4QTUwMTUxMTc2NUY1NjAwNzU3NTczIC8qIFdLUmV0YWluUHRy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTdFMzc3OTE4RTRBNEZFMDAzRDBGRkYgLyogV0tTY3Jp
cHRNZXNzYWdlLmggaW4gSGVhZGVycyAqLywKQEAgLTkxNDksNiArOTE4MCw3IEBACiAJCQkJMUFG
REU2NUQxOTU0RThENTAwQzQ4RkZBIC8qIExlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQTFEOEJBMTE3MzFBMzYzMDAxNDFEQTQgLyogTG9jYWxTdG9yYWdl
RGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4QzcyOEMxNzM4NDc3QzAwMEE2NTU0
IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3
Qzg5RDI5QjFBNjc4MzdCMDAzQTVGREUgLyogV0tQYWdlQ29uZmlndXJhdGlvblJlZi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MUE3RjJGNTEyNUJGOEQ0MDA4QUVCMUQgLyogTG9nZ2luZy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MTYwQkZFMTEzMzgxREY5MDA5MTg5OTkgLyogTG9nZ2luZ0Zv
dW5kYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTI0QjVGMjExRjUzMUU4MDBDMzgyNjkg
LyogTWFjaFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk0NjEsNiArOTQ5Myw3IEBA
CiAJCQkJNTFBOUUxMDUxMzE1Q0NGQzAwOUU3MDMxIC8qIFdlYktleVZhbHVlU3RvcmFnZU1hbmFn
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2MjgwRjMxOTE5OTgyQTAwNkFEOUY5IC8qIFdl
YktpdC5tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5QkE1MDQxNjk3QzQ1MzAwRTQ0NjE2IC8qIFdl
YktpdDJJbml0aWFsaXplLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDODlEMjlGMUE2Nzg1NTQw
MDNBNUZERSAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkzM0QzQTNDMTEzMzk2MEIwMDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzNEM0EzQzgxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1lZGlh
Q2FjaGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzRDNB
M0JBMTMzOTYwNjIwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5LmNwcCBpbiBT
b3VyY2VzICovLApAQCAtOTYyNSw3ICs5NjU4LDkgQEAKIAkJCQkxQUY0NTkyRTE5NDY0QjIwMDBG
OUQ0QTIgLyogV0tFcnJvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDRkQ1NDhCMTMyRDgyNjgw
MDU1RDgxNiAvKiBXS0Vycm9yQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0MDc1RkIxMjRG
RjAyNzAwNjhGMjBBIC8qIFdLRXJyb3JSZWYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0M4OUQy
QTMxQTY3ODg3NTAwM0E1RkRFIC8qIFdLVXNlclNjcmlwdFJlZi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBNThCNkYwOTE4RkNBNzMzMDA4Q0JBNTMgLyogV0tGaWxlVXBsb2FkUGFuZWwubW0gaW4g
U291cmNlcyAqLywKKwkJCQk3Qzg5RDI5NzFBNjc1M0IyMDAzQTVGREUgLyogQVBJUGFnZUNvbmZp
Z3VyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU0MjU2QjYxOEJFQzE4QzAwREU0MTc5
IC8qIFdLRm9ybUlucHV0Q29udHJvbC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUM1NDI1NkI5MThC
RUMxOEMwMERFNDE3OSAvKiBXS0Zvcm1Qb3BvdmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU3
MTkzQkUxOEMxNEE0NDAwMkQwRjEyIC8qIFdLRm9ybVNlbGVjdENvbnRyb2wubW0gaW4gU291cmNl
cyAqLywKQEAgLTk2OTQsNiArOTcyOSw3IEBACiAJCQkJMUExNTg0MTkxODkwNDRGNTAwMTc2MTZD
IC8qIFdLUHJvY2Vzc1Bvb2wubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTJGNThGQjEyQTg4QTU0
MDA2Mjk1MzAgLyogV0tQcm90ZWN0aW9uU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFE
MDFCQ0MxOTA1RDU0OTAwQzlDNDVGIC8qIFdLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1w
dGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJN0M4OUQyQTYxQTY3ODlFQTAwM0E1RkRFIC8qIEFQ
SVVzZXJTY3JpcHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE5RTMyOUExODIyRTFDQzAwRjVE
MDRDIC8qIFdLUmVtb3RlT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGQTRCOEIxQTY1
QTFEMDAwNkM0QUI0IC8qIFdlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUE5RTMyOUUxODIyRkVERDAwRjVEMDRDIC8qIFdLUmVtb3RlT2JqZWN0Q29kZXIu
bW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3ODYwNykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE1LTAxLTE2ICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGEgYmFzaWMgY29uZmlndXJhdGlvbiBvYmplY3Qg
Zm9yIFdLVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQwNTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIHRlc3RzIGZvciBXS1BhZ2VDb25maWd1cmF0aW9uUmVmLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvV0tQYWdlQ29uZmlndXJhdGlvbi5jcHA6IEFkZGVkLgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRG
aW5pc2hMb2FkRm9yRnJhbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0UGFnZUxvYWRl
ckNsaWVudCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9tYWMvUGxhdGZvcm1XZWJWaWV3TWFj
Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGxhdGZvcm1XZWJWaWV3Ojppbml0aWFsaXpl
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJW
aWV3KToKKwogMjAxNS0wMS0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlZ3Jlc3Npb24ocjE3ODU4Nik6IENhdXNlZCB3ZWJraXRweS53M2MudGVzdF9jb252
ZXJ0ZXJfdW5pdHRlc3QuVzNDVGVzdENvbnZlcnRlclRlc3QudGVzdF9jb252ZXJ0X3ByZWZpeGVk
X3Byb3BlcnRpZXMgdG8gZmFpbApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdl
YlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmll
dy5oCShyZXZpc2lvbiAxNzg1ODEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2Vi
Vmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKIAogY2xhc3MgUGxhdGZvcm1XZWJWaWV3IHsKIHB1YmxpYzoKKyAgICBleHBsaWNp
dCBQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZik7CiAgICAgZXhwbGljaXQg
UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgPSAwKTsKICAgICBl
eHBsaWNpdCBQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlUmVmIHJlbGF0ZWRQYWdlKTsKICNpZiBQTEFU
Rk9STShNQUMpCkBAIC03NCw2ICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaW11bGF0ZU1v
dXNlTW92ZSh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5KTsKIAogcHJpdmF0ZToKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgdm9pZCBpbml0aWFsaXplKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIENsYXNz
IHdrVmlld1N1YmNsYXNzKTsKKyNlbmRpZgorCiAgICAgUGxhdGZvcm1XS1ZpZXcgbV92aWV3Owog
ICAgIFBsYXRmb3JtV2luZG93IG1fd2luZG93OwogfTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxNzg1ODEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQs
NyBAQAogCQk3NjczNDk5RDE5MzBDNUJCMDBFNDRERjkgLyogU3RvcExvYWRpbmdEdXJpbmdEaWRG
YWlsUHJvdmlzaW9uYWxMb2FkX2J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3NjczNDk5QTE5MzAxODJFMDBFNDRERjkgLyogU3RvcExvYWRp
bmdEdXJpbmdEaWRGYWlsUHJvdmlzaW9uYWxMb2FkX2J1bmRsZS5jcHAgKi87IH07CiAJCTc2RTE4
MkREMTU0NzU2OTEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkUxODJEQzE1NDc1
NjkxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwICovOyB9OwogCQk3
NkUxODJERjE1NDc2N0U2MDBGMUZBREQgLyogYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkUxODJE
RTE1NDc1QTgzMDBGMUZBREQgLyogYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCAqLzsgfTsKKwkJ
N0M4OUQyQUMxQTY5QjgwRDAwM0E1RkRFIC8qIFdLUGFnZUNvbmZpZ3VyYXRpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4OUQyQUExQTY5Qjgw
RDAwM0E1RkRFIC8qIFdLUGFnZUNvbmZpZ3VyYXRpb24uY3BwICovOyB9OwogCQk3QzlFRDk4QjE3
QTE5RjRCMDBFNERDMzMgLyogYXR0cmlidXRlZFN0cmluZ1N0cmlrZXRocm91Z2guaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzlFRDk4
QTE3QTE5RDA2MDBFNERDMzMgLyogYXR0cmlidXRlZFN0cmluZ1N0cmlrZXRocm91Z2guaHRtbCAq
LzsgfTsKIAkJN0NDRTdFQTQxQTQxMTlGMzAwNDQ3QzRDIC8qIEluc3RhbmNlTWV0aG9kU3dpenps
ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMDg1
ODdGRjEzRkVDM0E2MDAxRUY0RTUgLyogSW5zdGFuY2VNZXRob2RTd2l6emxlci5tbSAqLzsgfTsK
IAkJN0NDRTdFQTUxQTQxMUEwODAwNDQ3QzRDIC8qIEphdmFTY3JpcHRUZXN0TWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzA4MTIyNDAxM0ZDMTcy
NDAwREMzOUFFIC8qIEphdmFTY3JpcHRUZXN0TWFjLm1tICovOyB9OwpAQCAtNTA1LDYgKzUwNiw3
IEBACiAJCTdDNkJCRDhBMTlDRUE1NDMwMEMxRjVFMCAvKiBDb3VudGVycy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb3VudGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QzZCQkQ4QjE5Q0VBNjMwMDBDMUY1RTAgLyogQ291bnRlcnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ291bnRlcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3Qzc0RDQyRDE4ODIyOEYzMDBFNUVENTcgLyogU3RyaW5nVmlldy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdWaWV3LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M4OUQyQUExQTY5QjgwRDAwM0E1RkRFIC8q
IFdLUGFnZUNvbmZpZ3VyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0tQYWdlQ29uZmlndXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDOEREQUE5MTczNURFMUQwMEVBNUFDMCAvKiBDbG9zZVRoZW5UZXJtaW5hdGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ2xvc2VUaGVuVGVybWluYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0M5RUQ5OEExN0ExOUQwNjAwRTREQzMzIC8qIGF0dHJpYnV0ZWRTdHJp
bmdTdHJpa2V0aHJvdWdoLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBhdHRyaWJ1dGVkU3RyaW5nU3RyaWtldGhy
b3VnaC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0JCQTA3NjE5QkI4QTkx
MDBCQkYwMjUgLyogT1NPYmplY3RQdHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gT1NPYmplY3RQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
OTc1LDYgKzk3Nyw3IEBACiAJCQkJNzZFMTgyRDkxNTQ3NTUwMTAwRjFGQUREIC8qIFdpbGxTZW5k
U3VibWl0RXZlbnQuY3BwICovLAogCQkJCTc2RTE4MkRDMTU0NzU2OTEwMEYxRkFERCAvKiBXaWxs
U2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgKi8sCiAJCQkJQTFGREZEMkUxOUMyODhCQjAwNTE0
OEE0IC8qIFdLSW1hZ2VDcmVhdGVDR0ltYWdlQ3Jhc2guY3BwICovLAorCQkJCTdDODlEMkFBMUE2
OUI4MEQwMDNBNUZERSAvKiBXS1BhZ2VDb25maWd1cmF0aW9uLmNwcCAqLywKIAkJCQk1MUU5MzAx
NjE1NkIxM0UxMDA0Qzk5REYgLyogV0tQYWdlR2V0U2NhbGVGYWN0b3JOb3RaZXJvLmNwcCAqLywK
IAkJCQk1MjRCQkM5QzE5REYzNzdBMDAyRjFBRjEgLyogV0tQYWdlSXNQbGF5aW5nQXVkaW8uY3Bw
ICovLAogCQkJCUJDN0I2MTlBMTI5OUZFOUUwMEQxNzRBNCAvKiBXS1ByZWZlcmVuY2VzLmNwcCAq
LywKQEAgLTE0MDYsNiArMTQwOSw3IEBACiAJCQkJN0NDRTdFRkYxQTQxMUFFNjAwNDQ3QzRDIC8q
IExvYWRDYW5jZWxlZE5vU2VydmVyUmVkaXJlY3RDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0YwMDFBNDExQUU2MDA0NDdDNEMgLyogTG9hZFBhZ2VPbkNyYXNoLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDQ0U3RjNBMUE0MTFCOEUwMDQ0N0M0QyAvKiBNYXRoRXh0cmFzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTdDODlEMkFDMUE2OUI4MEQwMDNBNUZERSAvKiBXS1BhZ2VD
b25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjM5MUE0MTFCOEUwMDQ0
N0M0QyAvKiBNRDUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGM0IxQTQxMUI4RTAwNDQ3
QzRDIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCMjFBNDExQTUx
MDA0NDdDNEMgLyogTWVtb3J5Q2FjaGVBZGRJbWFnZVRvQ2FjaGVJT1MubW0gaW4gU291cmNlcyAq
LywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XS1BhZ2VDb25maWd1
cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvV0tQYWdlQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvV0tQYWdlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIFdLX0hBVkVfQ19TUEkKKworI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSAiVGVzdC5oIgorCituYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV2ViS2l0MiwgV0tQYWdlQ29uZmlndXJhdGlvbkVtcHR5
KQoreworICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IGNvbmZpZ3VyYXRp
b24gPSBhZG9wdFdLKFdLUGFnZUNvbmZpZ3VyYXRpb25DcmVhdGUoKSk7CisKKyAgICBBU1NFUlRf
TlVMTChXS1BhZ2VDb25maWd1cmF0aW9uR2V0Q29udGV4dChjb25maWd1cmF0aW9uLmdldCgpKSk7
CisgICAgQVNTRVJUX05VTEwoV0tQYWdlQ29uZmlndXJhdGlvbkdldFVzZXJDb250ZW50Q29udHJv
bGxlcihjb25maWd1cmF0aW9uLmdldCgpKSk7CisgICAgQVNTRVJUX05VTEwoV0tQYWdlQ29uZmln
dXJhdGlvbkdldFBhZ2VHcm91cChjb25maWd1cmF0aW9uLmdldCgpKSk7CisgICAgQVNTRVJUX05V
TEwoV0tQYWdlQ29uZmlndXJhdGlvbkdldFByZWZlcmVuY2VzKGNvbmZpZ3VyYXRpb24uZ2V0KCkp
KTsKKyAgICBBU1NFUlRfTlVMTChXS1BhZ2VDb25maWd1cmF0aW9uR2V0UmVsYXRlZFBhZ2UoY29u
ZmlndXJhdGlvbi5nZXQoKSkpOworfQorCitzdGF0aWMgYm9vbCBkaWRGaW5pc2hMb2FkOworCitz
dGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBX
S1R5cGVSZWYsIGNvbnN0IHZvaWQqKQoreworICAgIGRpZEZpbmlzaExvYWQgPSB0cnVlOworfQor
CitzdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQoreworICAg
IFdLUGFnZUxvYWRlckNsaWVudFYwIGxvYWRlckNsaWVudDsKKyAgICBtZW1zZXQoJmxvYWRlckNs
aWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOworCisgICAgbG9hZGVyQ2xpZW50LmJhc2Uu
dmVyc2lvbiA9IDA7CisgICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRp
ZEZpbmlzaExvYWRGb3JGcmFtZTsKKworICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQocGFn
ZSwgJmxvYWRlckNsaWVudC5iYXNlKTsKK30KKworVEVTVChXZWJLaXQyLCBXS1BhZ2VDb25maWd1
cmF0aW9uQmFzaWMpCit7CisgICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4g
Y29uZmlndXJhdGlvbiA9IGFkb3B0V0soV0tQYWdlQ29uZmlndXJhdGlvbkNyZWF0ZSgpKTsKKyAg
ICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFdLQ29udGV4dENy
ZWF0ZSgpKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dChjb25maWd1cmF0aW9u
LmdldCgpLCBjb250ZXh0LmdldCgpKTsKKyAgICAKKyAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmll
dyhjb25maWd1cmF0aW9uLmdldCgpKTsKKyAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcu
cGFnZSgpKTsKKworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1cmwgPSBhZG9wdFdLKFV0aWw6
OmNyZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKTsKKyAgICBXS1BhZ2VMb2Fk
VVJMKHdlYlZpZXcucGFnZSgpLCB1cmwuZ2V0KCkpOworCisgICAgVXRpbDo6cnVuKCZkaWRGaW5p
c2hMb2FkKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0JKHJl
dmlzaW9uIDE3ODU4MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1BsYXRmb3JtV2ViVmll
d01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOSBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKIAotI2ltcG9ydCA8V2ViS2l0L1dLVmll
d1ByaXZhdGUuaD4KICNpbXBvcnQgPENhcmJvbi9DYXJib24uaD4KKyNpbXBvcnQgPFdlYktpdC9X
S1JldGFpblB0ci5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVmlld1ByaXZhdGUuaD4KIAogQGludGVy
ZmFjZSBBY3RpdmVPZmZzY3JlZW5XaW5kb3cgOiBOU1dpbmRvdwogQGVuZApAQCAtNDUsMTUgKzQ2
LDEwIEBAIC0gKEJPT0wpaXNWaXNpYmxlCiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAot
UGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYs
IFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKLSAgICA6IFBsYXRmb3JtV2ViVmlldyhjb250
ZXh0UmVmLCBwYWdlR3JvdXBSZWYsIFtXS1ZpZXcgY2xhc3NdKQotewotfQotCi1QbGF0Zm9ybVdl
YlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VSZWYgcmVsYXRlZFBhZ2UpCit2b2lkIFBsYXRm
b3JtV2ViVmlldzo6aW5pdGlhbGl6ZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRp
b24sIENsYXNzIHdrVmlld1N1YmNsYXNzKQogewogICAgIE5TUmVjdCByZWN0ID0gTlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCk7Ci0gICAgbV92aWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6cmVjdCBjb250ZXh0UmVmOldLUGFnZUdldENvbnRleHQocmVsYXRlZFBhZ2UpIHBhZ2VH
cm91cFJlZjpXS1BhZ2VHZXRQYWdlR3JvdXAocmVsYXRlZFBhZ2UpIHJlbGF0ZWRUb1BhZ2U6cmVs
YXRlZFBhZ2VdOworICAgIG1fdmlldyA9IFtbd2tWaWV3U3ViY2xhc3MgYWxsb2NdIGluaXRXaXRo
RnJhbWU6cmVjdCBjb25maWd1cmF0aW9uUmVmOmNvbmZpZ3VyYXRpb25dOwogICAgIFttX3ZpZXcg
c2V0V2luZG93T2NjbHVzaW9uRGV0ZWN0aW9uRW5hYmxlZDpOT107CiAKICAgICBOU1JlY3Qgd2lu
ZG93UmVjdCA9IE5TT2Zmc2V0UmVjdChyZWN0LCAtMTAwMDAsIFsoTlNTY3JlZW4gKilbW05TU2Ny
ZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gZnJhbWVdLnNpemUuaGVpZ2h0IC0gcmVjdC5z
aXplLmhlaWdodCArIDEwMDAwKTsKQEAgLTY1LDE5ICs2MSw0MCBAQCBQbGF0Zm9ybVdlYlZpZXc6
OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VSCiAgICAgW21fd2luZG93IHNldFJlbGVhc2VkV2hlbkNs
b3NlZDpOT107CiB9CiAKLVBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4
dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIENsYXNzIHdrVmll
d1N1YmNsYXNzKQorUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlQ29uZmln
dXJhdGlvblJlZiBjb25maWd1cmF0aW9uKQogewotICAgIE5TUmVjdCByZWN0ID0gTlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCk7Ci0gICAgbV92aWV3ID0gW1t3a1ZpZXdTdWJjbGFzcyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpyZWN0IGNvbnRleHRSZWY6Y29udGV4dFJlZiBwYWdlR3JvdXBSZWY6cGFn
ZUdyb3VwUmVmXTsKLSAgICBbbV92aWV3IHNldFdpbmRvd09jY2x1c2lvbkRldGVjdGlvbkVuYWJs
ZWQ6Tk9dOworICAgIGluaXRpYWxpemUoY29uZmlndXJhdGlvbiwgW1dLVmlldyBjbGFzc10pOwor
fQogCi0gICAgTlNSZWN0IHdpbmRvd1JlY3QgPSBOU09mZnNldFJlY3QocmVjdCwgLTEwMDAwLCBb
KE5TU2NyZWVuICopW1tOU1NjcmVlbiBzY3JlZW5zXSBvYmplY3RBdEluZGV4OjBdIGZyYW1lXS5z
aXplLmhlaWdodCAtIHJlY3Quc2l6ZS5oZWlnaHQgKyAxMDAwMCk7Ci0gICAgbV93aW5kb3cgPSBb
W0FjdGl2ZU9mZnNjcmVlbldpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDp3aW5kb3dS
ZWN0IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3Rv
cmVCdWZmZXJlZCBkZWZlcjpZRVNdOwotICAgIFttX3dpbmRvdyBzZXRDb2xvclNwYWNlOltbTlNT
Y3JlZW4gbWFpblNjcmVlbl0gY29sb3JTcGFjZV1dOwotICAgIFtbbV93aW5kb3cgY29udGVudFZp
ZXddIGFkZFN1YnZpZXc6bV92aWV3XTsKLSAgICBbbV93aW5kb3cgb3JkZXJCYWNrOm5pbF07Ci0g
ICAgW21fd2luZG93IHNldEF1dG9kaXNwbGF5Ok5PXTsKLSAgICBbbV93aW5kb3cgc2V0UmVsZWFz
ZWRXaGVuQ2xvc2VkOk5PXTsKK1BsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29u
dGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCit7CisgICAg
V0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gY29uZmlndXJhdGlvbiA9IGFkb3B0
V0soV0tQYWdlQ29uZmlndXJhdGlvbkNyZWF0ZSgpKTsKKyAgICAKKyAgICBXS1BhZ2VDb25maWd1
cmF0aW9uU2V0Q29udGV4dChjb25maWd1cmF0aW9uLmdldCgpLCBjb250ZXh0UmVmKTsKKyAgICBX
S1BhZ2VDb25maWd1cmF0aW9uU2V0UGFnZUdyb3VwKGNvbmZpZ3VyYXRpb24uZ2V0KCksIHBhZ2VH
cm91cFJlZik7CisgICAgCisgICAgaW5pdGlhbGl6ZShjb25maWd1cmF0aW9uLmdldCgpLCBbV0tW
aWV3IGNsYXNzXSk7Cit9CisKK1BsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLUGFn
ZVJlZiByZWxhdGVkUGFnZSkKK3sKKyAgICBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9u
UmVmPiBjb25maWd1cmF0aW9uID0gYWRvcHRXSyhXS1BhZ2VDb25maWd1cmF0aW9uQ3JlYXRlKCkp
OworICAgIAorICAgIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRDb250ZXh0KGNvbmZpZ3VyYXRpb24u
Z2V0KCksIFdLUGFnZUdldENvbnRleHQocmVsYXRlZFBhZ2UpKTsKKyAgICBXS1BhZ2VDb25maWd1
cmF0aW9uU2V0UGFnZUdyb3VwKGNvbmZpZ3VyYXRpb24uZ2V0KCksIFdLUGFnZUdldFBhZ2VHcm91
cChyZWxhdGVkUGFnZSkpOworICAgIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRSZWxhdGVkUGFnZShj
b25maWd1cmF0aW9uLmdldCgpLCByZWxhdGVkUGFnZSk7CisKKyAgICBpbml0aWFsaXplKGNvbmZp
Z3VyYXRpb24uZ2V0KCksIFtXS1ZpZXcgY2xhc3NdKTsKK30KKworUGxhdGZvcm1XZWJWaWV3OjpQ
bGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBh
Z2VHcm91cFJlZiwgQ2xhc3Mgd2tWaWV3U3ViY2xhc3MpCit7CisgICAgV0tSZXRhaW5QdHI8V0tQ
YWdlQ29uZmlndXJhdGlvblJlZj4gY29uZmlndXJhdGlvbiA9IGFkb3B0V0soV0tQYWdlQ29uZmln
dXJhdGlvbkNyZWF0ZSgpKTsKKyAgICAKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4
dChjb25maWd1cmF0aW9uLmdldCgpLCBjb250ZXh0UmVmKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0
aW9uU2V0UGFnZUdyb3VwKGNvbmZpZ3VyYXRpb24uZ2V0KCksIHBhZ2VHcm91cFJlZik7CisgICAg
CisgICAgaW5pdGlhbGl6ZShjb25maWd1cmF0aW9uLmdldCgpLCB3a1ZpZXdTdWJjbGFzcyk7CiB9
CiAKIFBsYXRmb3JtV2ViVmlldzo6flBsYXRmb3JtV2ViVmlldygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244825</attachid>
            <date>2015-01-16 17:54:10 -0800</date>
            <delta_ts>2015-01-16 17:56:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140559-20150116175416.patch</filename>
            <type>text/plain</type>
            <size>69846</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3ODYwNikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDE1LTAxLTE2ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGEgYmFzaWMgY29uZmlndXJhdGlv
biBvYmplY3QgZm9yIFdLVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQwNTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgLSBBZGRzIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgKGJhY2tlZCBieSBBUEk6
OlBhZ2VDb25maWd1cmF0aW9uKS4gV0tXZWJWaWV3IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICBp
cyBub3QgeWV0IGJyaWRnZWQgdG8gdGhpcywgYnV0IHRoYXQgd2lsbCBoYXBwZW4gc29vbi4gRm9y
IG5vdywgaXQgaGFzIGEgZmV3IGJhc2ljCisgICAgICAgICAgY29uZmlndXJhdGlvbiBvcHRpb25z
LgorICAgICAgICAtIEFkZHMgV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYgYXMgQy1TUEkgdmVy
c2lvbiBvZiBXS1VzZXJDb250ZW50Q29udHJvbGxlci4KKyAgICAgICAgLSBBZGRzIFdLVXNlclNj
cmlwdFJlZiBhcyBDLVNQSSB2ZXJzaW9uIG9mIFdLVXNlclNjcmlwdC4KKworICAgICAgICAqIFNo
YXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOgor
ICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaDoKKyAgICAgICAgKFdlYktp
dDo6dG9XS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChBUEk6OlBhZ2VDb25m
aWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1
cmF0aW9uOjp+UGFnZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJh
dGlvbjo6cHJvY2Vzc1Bvb2wpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0
UHJvY2Vzc1Bvb2wpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6dXNlckNvbnRl
bnRDb250cm9sbGVyKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFVzZXJD
b250ZW50Q29udHJvbGxlcik6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpwYWdl
R3JvdXApOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0UGFnZUdyb3VwKToK
KyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnByZWZlcmVuY2VzKToKKyAgICAgICAg
KEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFByZWZlcmVuY2VzKToKKyAgICAgICAgKEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb246OnJlbGF0ZWRQYWdlKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb246OnNldFJlbGF0ZWRQYWdlKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b246OndlYlBhZ2VDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBh
Z2VDb25maWd1cmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlv
bjo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEFQSTo6Z2VuZXJhdGVJZGVudGlmaWVyKToKKyAgICAgICAgKEFQSTo6
VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJVXNlclNjcmlwdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5jcHA6IEFk
ZGVkLgorICAgICAgICAoV0tQYWdlQ29uZmlndXJhdGlvbkdldFR5cGVJRCk6CisgICAgICAgIChX
S1BhZ2VDb25maWd1cmF0aW9uQ3JlYXRlKToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25H
ZXRDb250ZXh0KToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRDb250ZXh0KToKKyAg
ICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRQYWdlR3JvdXApOgorICAgICAgICAoV0tQYWdl
Q29uZmlndXJhdGlvblNldFBhZ2VHcm91cCk6CisgICAgICAgIChXS1BhZ2VDb25maWd1cmF0aW9u
R2V0VXNlckNvbnRlbnRDb250cm9sbGVyKToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25T
ZXRVc2VyQ29udGVudENvbnRyb2xsZXIpOgorICAgICAgICAoV0tQYWdlQ29uZmlndXJhdGlvbkdl
dFByZWZlcmVuY2VzKToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRQcmVmZXJlbmNl
cyk6CisgICAgICAgIChXS1BhZ2VDb25maWd1cmF0aW9uR2V0UmVsYXRlZFBhZ2UpOgorICAgICAg
ICAoV0tQYWdlQ29uZmlndXJhdGlvblNldFJlbGF0ZWRQYWdlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdLVXNlckNvbnRlbnRDb250cm9sbGVyR2V0VHlwZUlEKToKKyAgICAgICAgKFdLVXNlckNv
bnRlbnRDb250cm9sbGVyQ3JlYXRlKToKKyAgICAgICAgKFdLVXNlckNvbnRlbnRDb250cm9sbGVy
Q29weVVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdLVXNlckNvbnRlbnRDb250cm9sbGVyQWRkVXNl
clNjcmlwdCk6CisgICAgICAgIChXS1VzZXJDb250ZW50Q29udHJvbGxlclJlbW92ZUFsbFVzZXJT
Y3JpcHRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXJSZWYuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLVXNlclNjcmlwdFJl
Zi5jcHA6IEFkZGVkLgorICAgICAgICAoV0tVc2VyU2NyaXB0R2V0VHlwZUlEKToKKyAgICAgICAg
KFdLVXNlclNjcmlwdENyZWF0ZVdpdGhTb3VyY2UpOgorICAgICAgICAoV0tVc2VyU2NyaXB0Q29w
eVNvdXJjZSk6CisgICAgICAgIChXS1VzZXJTY3JpcHRHZXRJbmplY3Rpb25UaW1lKToKKyAgICAg
ICAgKFdLVXNlclNjcmlwdEdldE1haW5GcmFtZU9ubHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1VzZXJTY3JpcHRSZWYuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dlYktpdDJfQy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0
Lm1tOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGlt
ZTpmb3JNYWluRnJhbWVPbmx5Ol0pOgorICAgICAgICAoZ2VuZXJhdGVJZGVudGlmaWVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVmlld1ByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06Cisg
ICAgICAgIChMYXp5SW5pdGlhbGl6ZWQ6OmdldCk6CisgICAgICAgIChMYXp5SW5pdGlhbGl6ZWQ6
OnNldCk6CisgICAgICAgIChMYXp5SW5pdGlhbGl6ZWQ6OnBlZWspOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IGluaXRXaXRoRnJhbWU6
Y29uZmlndXJhdGlvblJlZjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE1LTAxLTE2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgTW9yZSBXZWJQYWdlUHJveHkgQ1RURQpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElBcnJheS5jcHAJKHJldmlzaW9uIDE3ODU4MSkKKysr
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw3ICszNyw3IEBAIFBhc3NSZWZQdHI8QXJyYXk+IEFycmF5OjpjcmVhdGUoKQogCiBQYXNz
UmVmUHRyPEFycmF5PiBBcnJheTo6Y3JlYXRlKFZlY3RvcjxSZWZQdHI8T2JqZWN0Pj4gZWxlbWVu
dHMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBcnJheShXVEY6Om1vdmUoZWxlbWVudHMp
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXJyYXkoV1RGOjptb3ZlKGVsZW1lbnRzKSkp
OwogfQogCiBQYXNzUmVmUHRyPEFycmF5PiBBcnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkoY29uc3Qg
VmVjdG9yPFdURjo6U3RyaW5nPiYgc3RyaW5ncykKQEAgLTY1LDYgKzY1LDE5IEBAIFZlY3RvcjxX
VEY6OlN0cmluZz4gQXJyYXk6OnRvU3RyaW5nVmVjdG8KICAgICByZXR1cm4gcGF0dGVybnNWZWN0
b3I7CiB9CiAKK1JlZjxBUEk6OkFycmF5PiBBcnJheTo6Y29weSgpCit7CisgICAgc2l6ZV90IHNp
emUgPSB0aGlzLT5zaXplKCk7CisgICAgaWYgKCFzaXplKQorICAgICAgICByZXR1cm4gKkFycmF5
OjpjcmVhdGUoKTsKKworICAgIFZlY3RvcjxSZWZQdHI8T2JqZWN0Pj4gZWxlbWVudHM7CisgICAg
ZWxlbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIGVudHJ5IDogdGhpcy0+ZWxlbWVudHMoKSkKKyAgICAgICAgZWxlbWVudHMudW5jaGVja2Vk
QXBwZW5kKGVudHJ5KTsKKyAgICByZXR1cm4gKkFycmF5OjpjcmVhdGUoZWxlbWVudHMpOworfQor
CiBBcnJheTo6QXJyYXkoVmVjdG9yPFJlZlB0cjxPYmplY3Q+PiBlbGVtZW50cykKICAgICA6IG1f
ZWxlbWVudHMoV1RGOjptb3ZlKGVsZW1lbnRzKSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvQVBJQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL0FQSUFycmF5LmgJKHJldmlzaW9uIDE3ODU4MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvQVBJQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QXJyYXk+IGNyZWF0ZShWZWN0b3I8UmVmUHRyPE9iamVj
dD4+IGVsZW1lbnRzKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcnJheT4gY3JlYXRlU3RyaW5n
QXJyYXkoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYpOwogICAgIFZlY3RvcjxXVEY6OlN0cmlu
Zz4gdG9TdHJpbmdWZWN0b3IoKTsKKyAgICBSZWY8QXJyYXk+IGNvcHkoKTsKIAogICAgIHZpcnR1
YWwgfkFycmF5KCk7CiAKQEAgLTgyLDYgKzgzLDcgQEAgcHVibGljOgogICAgICAgICApOwogICAg
IH0KIAorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFycmF5KFZlY3RvcjxSZWZQdHI8T2JqZWN0
Pj4gZWxlbWVudHMpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgJ
KHJldmlzaW9uIDE3ODU4MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw2ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIE9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyLAogICAgICAgICBPcmlnaW5EYXRhTWFuYWdlciwKICAgICAg
ICAgUGFnZSwKKyAgICAgICAgUGFnZUNvbmZpZ3VyYXRpb24sCiAgICAgICAgIFBhZ2VHcm91cCwK
ICAgICAgICAgUHJvY2Vzc1Bvb2wsCiAgICAgICAgIFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiwK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgJKHJldmlzaW9uIDE3ODU4MSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMTIwLDYgKzEyMCw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLT3BlblBhbmVs
UGEKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIq
IFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS09yaWdpbkRhdGFNYW5hZ2VyKiBXS09yaWdpbkRhdGFNYW5hZ2VyUmVmOwogdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tQYWdlKiBXS1BhZ2VSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVj
dCBPcGFxdWVXS1BhZ2VDb25maWd1cmF0aW9uKiBXS1BhZ2VDb25maWd1cmF0aW9uUmVmOwogdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQYWdlR3JvdXAqIFdLUGFnZUdyb3VwUmVmOwogdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXIqIFdLUGx1Z2lu
U2l0ZURhdGFNYW5hZ2VyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQcmVmZXJl
bmNlcyogV0tQcmVmZXJlbmNlc1JlZjsKQEAgLTEyNyw3ICsxMjgsOSBAQCB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS1Byb3RlY3Rpb25TCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVX
S1RleHRDaGVja2VyKiBXS1RleHRDaGVja2VyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlV0tTZXNzaW9uKiBXS1Nlc3Npb25SZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVX
S1Nlc3Npb25TdGF0ZSogV0tTZXNzaW9uU3RhdGVSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBP
cGFxdWVXS1VzZXJDb250ZW50Q29udHJvbGxlciogV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWY7
CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
KiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
T3BhcXVlV0tVc2VyU2NyaXB0KiBXS1VzZXJTY3JpcHRSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBPcGFxdWVXS1ZpYnJhdGlvbiogV0tWaWJyYXRpb25SZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBPcGFxdWVXS1ZpZXdwb3J0QXR0cmlidXRlcyogV0tWaWV3cG9ydEF0dHJpYnV0ZXNSZWY7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgJ
KHJldmlzaW9uIDE3ODU4MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJl
ZEFQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTczLDYgKzk3MywxOSBAQCBpbmxpbmUgV2Vi
Q29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUgCiAgICAgcmV0dXJuIFdlYkNvcmU6OkluamVj
dEF0RG9jdW1lbnRTdGFydDsKIH0KIAoraW5saW5lIF9XS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1l
IHRvV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9u
VGltZSBpbmplY3RlZFRpbWUpCit7CisgICAgc3dpdGNoIChpbmplY3RlZFRpbWUpIHsKKyAgICBj
YXNlIFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRTdGFydDoKKyAgICAgICAgcmV0dXJuIGtXS0lu
amVjdEF0RG9jdW1lbnRTdGFydDsKKyAgICBjYXNlIFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRF
bmQ6CisgICAgICAgIHJldHVybiBrV0tJbmplY3RBdERvY3VtZW50RW5kOworICAgIH0KKworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBrV0tJbmplY3RBdERvY3VtZW50U3Rh
cnQ7Cit9CisKIGlubGluZSBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIHRvVXNl
ckNvbnRlbnRJbmplY3RlZEZyYW1lcyhXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgd2tJbmpl
Y3RlZEZyYW1lcykKIHsKICAgICBzd2l0Y2ggKHdrSW5qZWN0ZWRGcmFtZXMpIHsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQ
YWdlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uaCIKKworI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgorI2lu
Y2x1ZGUgIldlYlBhZ2VHcm91cC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1
ZGUgIldlYlByZWZlcmVuY2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNs
dWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OworCituYW1lc3BhY2UgQVBJIHsKKworUGFnZUNvbmZpZ3VyYXRpb246OlBhZ2VDb25m
aWd1cmF0aW9uKCkKK3sKK30KKworUGFnZUNvbmZpZ3VyYXRpb246On5QYWdlQ29uZmlndXJhdGlv
bigpCit7Cit9CisKK1dlYlByb2Nlc3NQb29sKiBQYWdlQ29uZmlndXJhdGlvbjo6cHJvY2Vzc1Bv
b2woKQoreworICAgIHJldHVybiBtX3Byb2Nlc3NQb29sLmdldCgpOworfQorCit2b2lkIFBhZ2VD
b25maWd1cmF0aW9uOjpzZXRQcm9jZXNzUG9vbChXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wp
Cit7CisgICAgbV9wcm9jZXNzUG9vbCA9IHByb2Nlc3NQb29sOworfQorCitXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eSogUGFnZUNvbmZpZ3VyYXRpb246OnVzZXJDb250ZW50Q29udHJvbGxl
cigpCit7CisgICAgcmV0dXJuIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLmdldCgpOworfQorCit2
b2lkIFBhZ2VDb25maWd1cmF0aW9uOjpzZXRVc2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkqIHVzZXJDb250ZW50Q29udHJvbGxlcikKK3sKKyAgICBtX3Vz
ZXJDb250ZW50Q29udHJvbGxlciA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsKK30KKworV2ViUGFn
ZUdyb3VwKiBQYWdlQ29uZmlndXJhdGlvbjo6cGFnZUdyb3VwKCkKK3sKKyAgICByZXR1cm4gbV9w
YWdlR3JvdXAuZ2V0KCk7Cit9CisKK3ZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFBhZ2VHcm91
cChXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCkKK3sKKyAgICBtX3BhZ2VHcm91cCA9IHBhZ2VHcm91
cDsKK30KKworV2ViUHJlZmVyZW5jZXMqIFBhZ2VDb25maWd1cmF0aW9uOjpwcmVmZXJlbmNlcygp
Cit7CisgICAgcmV0dXJuIG1fcHJlZmVyZW5jZXMuZ2V0KCk7Cit9CisKK3ZvaWQgUGFnZUNvbmZp
Z3VyYXRpb246OnNldFByZWZlcmVuY2VzKFdlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcykKK3sK
KyAgICBtX3ByZWZlcmVuY2VzID0gcHJlZmVyZW5jZXM7Cit9CisKK1dlYlBhZ2VQcm94eSogUGFn
ZUNvbmZpZ3VyYXRpb246OnJlbGF0ZWRQYWdlKCkKK3sKKyAgICByZXR1cm4gbV9yZWxhdGVkUGFn
ZS5nZXQoKTsKK30KKwordm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0UmVsYXRlZFBhZ2UoV2Vi
UGFnZVByb3h5KiByZWxhdGVkUGFnZSkKK3sKKyAgICBtX3JlbGF0ZWRQYWdlID0gcmVsYXRlZFBh
Z2U7Cit9CisKK1dlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24gUGFnZUNvbmZpZ3VyYXRpb246
OndlYlBhZ2VDb25maWd1cmF0aW9uKCkKK3sKKyAgICBXZWJLaXQ6OldlYlBhZ2VDb25maWd1cmF0
aW9uIGNvbmZpZ3VyYXRpb247CisKKyAgICBjb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJv
bGxlciA9IHVzZXJDb250ZW50Q29udHJvbGxlcigpOworICAgIGNvbmZpZ3VyYXRpb24ucGFnZUdy
b3VwID0gcGFnZUdyb3VwKCk7CisgICAgY29uZmlndXJhdGlvbi5wcmVmZXJlbmNlcyA9IHByZWZl
cmVuY2VzKCk7CisgICAgY29uZmlndXJhdGlvbi5yZWxhdGVkUGFnZSA9IHJlbGF0ZWRQYWdlKCk7
CisKKyAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgQVBJCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmln
dXJhdGlvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElQYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEFQSVBhZ2VDb25maWd1cmF0aW9uX2gKKyNkZWZpbmUgQVBJUGFn
ZUNvbmZpZ3VyYXRpb25faAorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3N0cnVjdCBXZWJQYWdlQ29uZmlndXJh
dGlvbjsKK2NsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OworY2xhc3MgV2ViUHJv
Y2Vzc1Bvb2w7CitjbGFzcyBXZWJQYWdlR3JvdXA7CitjbGFzcyBXZWJQcmVmZXJlbmNlczsKK2Ns
YXNzIFdlYlBhZ2VQcm94eTsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIFBhZ2VDb25m
aWd1cmF0aW9uIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpQYWdlQ29uZmlndXJh
dGlvbj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+IGNyZWF0
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWdlQ29uZmlndXJhdGlv
bik7CisgICAgfQorICAgIHZpcnR1YWwgflBhZ2VDb25maWd1cmF0aW9uKCk7CisKKyAgICAvLyBG
SVhNRTogVGhlIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBzaG91bGQgcmV0dXJuIHRoZWlyIGRl
ZmF1bHQgdmFsdWVzCisgICAgLy8gcmF0aGVyIHRoYW4gbnVsbHB0ci4KKyAgICAKKyAgICBXZWJL
aXQ6OldlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCgpOworICAgIHZvaWQgc2V0UHJvY2Vzc1Bv
b2woV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCopOworCisgICAgV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eSogdXNlckNvbnRlbnRDb250cm9sbGVyKCk7CisgICAgdm9pZCBzZXRV
c2VyQ29udGVudENvbnRyb2xsZXIoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eSopOworCisgICAgV2ViS2l0OjpXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCgpOworICAgIHZvaWQg
c2V0UGFnZUdyb3VwKFdlYktpdDo6V2ViUGFnZUdyb3VwKik7CisKKyAgICBXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzKiBwcmVmZXJlbmNlcygpOworICAgIHZvaWQgc2V0UHJlZmVyZW5jZXMoV2ViS2l0
OjpXZWJQcmVmZXJlbmNlcyopOworCisgICAgV2ViS2l0OjpXZWJQYWdlUHJveHkqIHJlbGF0ZWRQ
YWdlKCk7CisgICAgdm9pZCBzZXRSZWxhdGVkUGFnZShXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwor
CisgICAgV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbigp
OworCitwcml2YXRlOgorICAgIFBhZ2VDb25maWd1cmF0aW9uKCk7CisKKyAgICBSZWZQdHI8V2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbD4gbV9wcm9jZXNzUG9vbDsKKyAgICBSZWZQdHI8V2ViS2l0OjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRyb2xsZXI7Cisg
ICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZUdyb3VwPiBtX3BhZ2VHcm91cDsKKyAgICBSZWZQdHI8
V2ViS2l0OjpXZWJQcmVmZXJlbmNlcz4gbV9wcmVmZXJlbmNlczsKKyAgICBSZWZQdHI8V2ViS2l0
OjpXZWJQYWdlUHJveHk+IG1fcmVsYXRlZFBhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkK
KworCisjZW5kaWYgLy8gQVBJUGFnZUNvbmZpZ3VyYXRpb25faApJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkFQSVVzZXJTY3JpcHQuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KKworbmFtZXNwYWNlIEFQSSB7CisKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUlk
ZW50aWZpZXIoKQoreworICAgIHN0YXRpYyB1aW50NjRfdCBpZGVudGlmaWVyOworCisgICAgcmV0
dXJuICsraWRlbnRpZmllcjsKK30KKworV2ViQ29yZTo6VVJMIFVzZXJTY3JpcHQ6OmdlbmVyYXRl
VW5pcXVlVVJMKCkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHVybFN0cmluZ0J1aWxkZXI7CisgICAg
dXJsU3RyaW5nQnVpbGRlci5hcHBlbmQoInVzZXItc2NyaXB0OiIpOworICAgIHVybFN0cmluZ0J1
aWxkZXIuYXBwZW5kTnVtYmVyKGdlbmVyYXRlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6VVJMIHsgV2ViQ29yZTo6VVJMIHsgfSwgdXJsU3RyaW5nQnVpbGRlci50b1N0cmluZygp
IH07Cit9CisKKworfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuaAkocmV2aXNpb24gMTc4NTgxKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDYgKzMzLDEzIEBAIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBVc2VyU2NyaXB0IGZpbmFs
IDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVc2VyU2NyaXB0PiB7CiBwdWJsaWM6
CisgICAgc3RhdGljIFdlYkNvcmU6OlVSTCBnZW5lcmF0ZVVuaXF1ZVVSTCgpOworCisgICAgc3Rh
dGljIFJlZlB0cjxVc2VyU2NyaXB0PiBjcmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2Ny
aXB0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVc2VyU2NyaXB0KHVzZXJT
Y3JpcHQpKTsKKyAgICB9CisKICAgICBVc2VyU2NyaXB0KFdlYkNvcmU6OlVzZXJTY3JpcHQgdXNl
clNjcmlwdCkKICAgICAgICAgOiBtX3VzZXJTY3JpcHQodXNlclNjcmlwdCkKICAgICB7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAx
Nzg1ODEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTUyLDggKzUyLDEwIEBACiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3Mg
TmF2aWdhdGlvbkRhdGE7CitjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNsYXNzIFByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbjsKIGNsYXNzIFNlc3Npb25TdGF0ZTsKK2NsYXNzIFVzZXJTY3JpcHQ7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjksNyArNzEsNiBAQCBjbGFzcyBXZWJCYWNr
Rm9yd2FyZExpc3Q7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgV2ViQmF0
dGVyeU1hbmFnZXJQcm94eTsKIGNsYXNzIFdlYkJhdHRlcnlTdGF0dXM7Ci1jbGFzcyBXZWJSZXNv
dXJjZUNhY2hlTWFuYWdlclByb3h5OwogY2xhc3MgV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5l
clByb3h5OwogY2xhc3MgV2ViQ29va2llTWFuYWdlclByb3h5OwogY2xhc3MgV2ViQ3JlZGVudGlh
bDsKQEAgLTg2LDggKzg3LDggQEAgY2xhc3MgV2ViSW5zcGVjdG9yUHJveHk7CiBjbGFzcyBXZWJL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyOwogY2xhc3MgV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eTsK
IGNsYXNzIFdlYk5vdGlmaWNhdGlvbjsKLWNsYXNzIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOwog
Y2xhc3MgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OworY2xhc3MgV2ViTm90aWZpY2F0aW9u
UHJvdmlkZXI7CiBjbGFzcyBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOwogY2xhc3MgV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk7
CkBAIC05OSw3ICsxMDAsOSBAQCBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIGNsYXNzIFdlYlByb3Rl
Y3Rpb25TcGFjZTsKIGNsYXNzIFdlYlJlbmRlckxheWVyOwogY2xhc3MgV2ViUmVuZGVyT2JqZWN0
OworY2xhc3MgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTsKIGNsYXNzIFdlYlRleHRDaGVj
a2VyOworY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk7CiBjbGFzcyBXZWJWaWJy
YXRpb25Qcm94eTsKIGNsYXNzIFdlYlZpZXdwb3J0QXR0cmlidXRlczsKIApAQCAtMTM5LDYgKzE0
Miw3IEBAIFdLX0FERF9BUElfTUFQUElORyhXS09wZW5QYW5lbFBhcmFtZXRlcnMKIFdLX0FERF9B
UElfTUFQUElORyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLT3JpZ2luRGF0YU1hbmFnZXJS
ZWYsIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tQYWdl
R3JvdXBSZWYsIFdlYlBhZ2VHcm91cCkKK1dLX0FERF9BUElfTUFQUElORyhXS1BhZ2VDb25maWd1
cmF0aW9uUmVmLCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uKQogV0tfQUREX0FQSV9NQVBQSU5HKFdL
UGFnZVJlZiwgV2ViUGFnZVByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUGx1Z2luU2l0ZURh
dGFNYW5hZ2VyUmVmLCBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIpCiBXS19BRERfQVBJX01BUFBJ
TkcoV0tQcmVmZXJlbmNlc1JlZiwgV2ViUHJlZmVyZW5jZXMpCkBAIC0xNDcsNyArMTUxLDkgQEAg
V0tfQUREX0FQSV9NQVBQSU5HKFdLUmVuZGVyTGF5ZXJSZWYsIFdlYgogV0tfQUREX0FQSV9NQVBQ
SU5HKFdLUmVuZGVyT2JqZWN0UmVmLCBXZWJSZW5kZXJPYmplY3QpCiBXS19BRERfQVBJX01BUFBJ
TkcoV0tTZXNzaW9uU3RhdGVSZWYsIEFQSTo6U2Vzc2lvblN0YXRlKQogV0tfQUREX0FQSV9NQVBQ
SU5HKFdLVGV4dENoZWNrZXJSZWYsIFdlYlRleHRDaGVja2VyKQorV0tfQUREX0FQSV9NQVBQSU5H
KFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eSkKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmLCBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KQorV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNl
clNjcmlwdFJlZiwgQVBJOjpVc2VyU2NyaXB0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVmlicmF0
aW9uUmVmLCBXZWJWaWJyYXRpb25Qcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS1ZpZXdwb3J0
QXR0cmlidXRlc1JlZiwgV2ViVmlld3BvcnRBdHRyaWJ1dGVzKQogV0tfQUREX0FQSV9NQVBQSU5H
KFdLSW5zcGVjdG9yUmVmLCBXZWJJbnNwZWN0b3JQcm94eSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
Q29uZmlndXJhdGlvblJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1BhZ2VDb25maWd1cmF0
aW9uUmVmLmgiCisKKyNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUg
IldLQVBJQ2FzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS1Bh
Z2VDb25maWd1cmF0aW9uR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoQVBJOjpQYWdl
Q29uZmlndXJhdGlvbjo6QVBJVHlwZSk7Cit9CisKK1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYgV0tQ
YWdlQ29uZmlndXJhdGlvbkNyZWF0ZSgpCit7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OlBhZ2VD
b25maWd1cmF0aW9uOjpjcmVhdGUoKS5sZWFrUmVmKCkpOworfQorCitXS0NvbnRleHRSZWYgV0tQ
YWdlQ29uZmlndXJhdGlvbkdldENvbnRleHQoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1
cmF0aW9uKQoreworICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29uZmlndXJhdGlvbiktPnByb2Nl
c3NQb29sKCkpOworfQorCit2b2lkIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRDb250ZXh0KFdLUGFn
ZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgV0tDb250ZXh0UmVmIGNvbnRleHQpCit7
CisgICAgdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5zZXRQcm9jZXNzUG9vbCh0b0ltcGwoY29udGV4
dCkpOworfQorCitXS1BhZ2VHcm91cFJlZiBXS1BhZ2VDb25maWd1cmF0aW9uR2V0UGFnZUdyb3Vw
KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gdG9B
UEkodG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5wYWdlR3JvdXAoKSk7Cit9CisKK3ZvaWQgV0tQYWdl
Q29uZmlndXJhdGlvblNldFBhZ2VHcm91cChXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3Vy
YXRpb24sIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCkKK3sKKyAgICB0b0ltcGwoY29uZmlndXJh
dGlvbiktPnNldFBhZ2VHcm91cCh0b0ltcGwocGFnZUdyb3VwKSk7Cit9CisKK1dLVXNlckNvbnRl
bnRDb250cm9sbGVyUmVmIFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRVc2VyQ29udGVudENvbnRyb2xs
ZXIoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uKQoreworICAgIHJldHVybiB0
b0FQSSh0b0ltcGwoY29uZmlndXJhdGlvbiktPnVzZXJDb250ZW50Q29udHJvbGxlcigpKTsKK30K
Kwordm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0VXNlckNvbnRlbnRDb250cm9sbGVyKFdLUGFn
ZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgV0tVc2VyQ29udGVudENvbnRyb2xsZXJS
ZWYgdXNlckNvbnRlbnRDb250cm9sbGVyKQoreworICAgIHRvSW1wbChjb25maWd1cmF0aW9uKS0+
c2V0VXNlckNvbnRlbnRDb250cm9sbGVyKHRvSW1wbCh1c2VyQ29udGVudENvbnRyb2xsZXIpKTsK
K30KKworV0tQcmVmZXJlbmNlc1JlZiBXS1BhZ2VDb25maWd1cmF0aW9uR2V0UHJlZmVyZW5jZXMo
V0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uKQoreworICAgIHJldHVybiB0b0FQ
SSh0b0ltcGwoY29uZmlndXJhdGlvbiktPnByZWZlcmVuY2VzKCkpOworfQorCit2b2lkIFdLUGFn
ZUNvbmZpZ3VyYXRpb25TZXRQcmVmZXJlbmNlcyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZp
Z3VyYXRpb24sIFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXMpCit7CisgICAgdG9JbXBsKGNv
bmZpZ3VyYXRpb24pLT5zZXRQcmVmZXJlbmNlcyh0b0ltcGwocHJlZmVyZW5jZXMpKTsKK30KKwor
V0tQYWdlUmVmIFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRSZWxhdGVkUGFnZShXS1BhZ2VDb25maWd1
cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb25m
aWd1cmF0aW9uKS0+cmVsYXRlZFBhZ2UoKSk7Cit9CisKK3ZvaWQgV0tQYWdlQ29uZmlndXJhdGlv
blNldFJlbGF0ZWRQYWdlKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgV0tQ
YWdlUmVmIHJlbGF0ZWRQYWdlKQoreworICAgIHRvSW1wbChjb25maWd1cmF0aW9uKS0+c2V0UmVs
YXRlZFBhZ2UodG9JbXBsKHJlbGF0ZWRQYWdlKSk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmln
dXJhdGlvblJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWZfaAorI2RlZmluZSBXS1BhZ2VDb25maWd1
cmF0aW9uUmVmX2gKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3Bs
dXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tQYWdl
Q29uZmlndXJhdGlvbkdldFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tQYWdlQ29uZmlndXJhdGlv
blJlZiBXS1BhZ2VDb25maWd1cmF0aW9uQ3JlYXRlKCk7CisKK1dLX0VYUE9SVCBXS0NvbnRleHRS
ZWYgV0tQYWdlQ29uZmlndXJhdGlvbkdldENvbnRleHQoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBj
b25maWd1cmF0aW9uKTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRDb250
ZXh0KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgV0tDb250ZXh0UmVmIGNv
bnRleHQpOworCitXS19FWFBPUlQgV0tQYWdlR3JvdXBSZWYgV0tQYWdlQ29uZmlndXJhdGlvbkdl
dFBhZ2VHcm91cChXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pOworV0tfRVhQ
T1JUIHZvaWQgV0tQYWdlQ29uZmlndXJhdGlvblNldFBhZ2VHcm91cChXS1BhZ2VDb25maWd1cmF0
aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCk7CisKK1dLX0VY
UE9SVCBXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZiBXS1BhZ2VDb25maWd1cmF0aW9uR2V0VXNl
ckNvbnRlbnRDb250cm9sbGVyKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7
CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0VXNlckNvbnRlbnRDb250cm9s
bGVyKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgV0tVc2VyQ29udGVudENv
bnRyb2xsZXJSZWYgdXNlckNvbnRlbnRDb250cm9sbGVyKTsKKworV0tfRVhQT1JUIFdLUHJlZmVy
ZW5jZXNSZWYgV0tQYWdlQ29uZmlndXJhdGlvbkdldFByZWZlcmVuY2VzKFdLUGFnZUNvbmZpZ3Vy
YXRpb25SZWYgY29uZmlndXJhdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VDb25maWd1cmF0
aW9uU2V0UHJlZmVyZW5jZXMoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzKTsKKworV0tfRVhQT1JUIFdLUGFnZVJlZiBXS1Bh
Z2VDb25maWd1cmF0aW9uR2V0UmVsYXRlZFBhZ2UoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25m
aWd1cmF0aW9uKTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRSZWxhdGVk
UGFnZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLUGFnZVJlZiByZWxh
dGVkUGFnZSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBX
S1BhZ2VDb25maWd1cmF0aW9uUmVmX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250
ZW50Q29udHJvbGxlclJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1VzZXJDb250ZW50Q29u
dHJvbGxlclJlZi5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwor
V0tUeXBlSUQgV0tVc2VyQ29udGVudENvbnRyb2xsZXJHZXRUeXBlSUQoKQoreworICAgIHJldHVy
biB0b0FQSShXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6QVBJVHlwZSk7Cit9CisKK1dL
VXNlckNvbnRlbnRDb250cm9sbGVyUmVmIFdLVXNlckNvbnRlbnRDb250cm9sbGVyQ3JlYXRlKCkK
K3sKKyAgICByZXR1cm4gdG9BUEkoJldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpjcmVh
dGUoKS5sZWFrUmVmKCkpOworfQorCitXS0FycmF5UmVmIFdLVXNlckNvbnRlbnRDb250cm9sbGVy
Q29weVVzZXJTY3JpcHRzKFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmIHVzZXJDb250ZW50Q29u
dHJvbGxlclJlZikKK3sKKyAgICBSZWY8QVBJOjpBcnJheT4gdXNlclNjcmlwdHMgPSB0b0ltcGwo
dXNlckNvbnRlbnRDb250cm9sbGVyUmVmKS0+dXNlclNjcmlwdHMoKS5jb3B5KCk7CisgICAgcmV0
dXJuIHRvQVBJKCZ1c2VyU2NyaXB0cy5sZWFrUmVmKCkpOworfQorCit2b2lkIFdLVXNlckNvbnRl
bnRDb250cm9sbGVyQWRkVXNlclNjcmlwdChXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZiB1c2Vy
Q29udGVudENvbnRyb2xsZXJSZWYsIFdLVXNlclNjcmlwdFJlZiB1c2VyU2NyaXB0UmVmKQorewor
ICAgIHRvSW1wbCh1c2VyQ29udGVudENvbnRyb2xsZXJSZWYpLT5hZGRVc2VyU2NyaXB0KCp0b0lt
cGwodXNlclNjcmlwdFJlZikpOworfQorCit2b2lkIFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVt
b3ZlQWxsVXNlclNjcmlwdHMoV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYgdXNlckNvbnRlbnRD
b250cm9sbGVyUmVmKQoreworICAgIHRvSW1wbCh1c2VyQ29udGVudENvbnRyb2xsZXJSZWYpLT5y
ZW1vdmVBbGxVc2VyU2NyaXB0cygpOworfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVu
dENvbnRyb2xsZXJSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZl9oCisjZGVmaW5lIFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyUmVmX2gKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKwor
I2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tU
eXBlSUQgV0tVc2VyQ29udGVudENvbnRyb2xsZXJHZXRUeXBlSUQoKTsKKworV0tfRVhQT1JUIFdL
VXNlckNvbnRlbnRDb250cm9sbGVyUmVmIFdLVXNlckNvbnRlbnRDb250cm9sbGVyQ3JlYXRlKCk7
CisKK1dLX0VYUE9SVCBXS0FycmF5UmVmIFdLVXNlckNvbnRlbnRDb250cm9sbGVyQ29weVVzZXJT
Y3JpcHRzKFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmIHVzZXJDb250ZW50Q29udHJvbGxlcik7
CitXS19FWFBPUlQgdm9pZCBXS1VzZXJDb250ZW50Q29udHJvbGxlckFkZFVzZXJTY3JpcHQoV0tV
c2VyQ29udGVudENvbnRyb2xsZXJSZWYgdXNlckNvbnRlbnRDb250cm9sbGVyLCBXS1VzZXJTY3Jp
cHRSZWYgdXNlclNjcmlwdCk7CitXS19FWFBPUlQgdm9pZCBXS1VzZXJDb250ZW50Q29udHJvbGxl
clJlbW92ZUFsbFVzZXJTY3JpcHRzKFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmIHVzZXJDb250
ZW50Q29udHJvbGxlcik7CisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2Vu
ZGlmIC8qIFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmX2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlclNjcmlwdFJlZi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1VzZXJTY3JpcHRSZWYuaCIKKworI2luY2x1ZGUgIkFQ
SVVzZXJTY3JpcHQuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKwordXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKKworV0tUeXBlSUQgV0tVc2VyU2NyaXB0R2V0VHlwZUlEKCkKK3sKKyAgICByZXR1
cm4gdG9BUEkoQVBJOjpVc2VyU2NyaXB0OjpBUElUeXBlKTsKK30KKworV0tVc2VyU2NyaXB0UmVm
IFdLVXNlclNjcmlwdENyZWF0ZVdpdGhTb3VyY2UoV0tTdHJpbmdSZWYgc291cmNlUmVmLCBfV0tV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBib29sIGZvck1haW5GcmFtZU9u
bHkpCit7CisgICAgcmV0dXJuIHRvQVBJKEFQSTo6VXNlclNjcmlwdDo6Y3JlYXRlKFdlYkNvcmU6
OlVzZXJTY3JpcHQgeyB0b1dURlN0cmluZyhzb3VyY2VSZWYpLCBBUEk6OlVzZXJTY3JpcHQ6Omdl
bmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9LCB0b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGlu
amVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFt
ZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyB9KS5sZWFrUmVmKCkpOworfQorCitX
S1N0cmluZ1JlZiBXS1VzZXJTY3JpcHRDb3B5U291cmNlKFdLVXNlclNjcmlwdFJlZiB1c2VyU2Ny
aXB0UmVmKQoreworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwodXNlclNjcmlwdFJlZikt
PnVzZXJTY3JpcHQoKS5zb3VyY2UoKSk7Cit9CisKK19XS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1l
IFdLVXNlclNjcmlwdEdldEluamVjdGlvblRpbWUoV0tVc2VyU2NyaXB0UmVmIHVzZXJTY3JpcHRS
ZWYpCit7CisgICAgcmV0dXJuIHRvV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSh0b0ltcGwodXNl
clNjcmlwdFJlZiktPnVzZXJTY3JpcHQoKS5pbmplY3Rpb25UaW1lKCkpOworfQorCitib29sIFdL
VXNlclNjcmlwdEdldE1haW5GcmFtZU9ubHkoV0tVc2VyU2NyaXB0UmVmIHVzZXJTY3JpcHRSZWYp
Cit7CisgICAgcmV0dXJuIHRvSW1wbCh1c2VyU2NyaXB0UmVmKS0+dXNlclNjcmlwdCgpLmluamVj
dGVkRnJhbWVzKCkgPT0gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHk7Cit9CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyU2NyaXB0UmVmLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlclNjcmlwdFJlZi5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlclNjcmlw
dFJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdLVXNlclNjcmlwdFJlZl9oCisjZGVmaW5lIFdLVXNlclNjcmlwdFJlZl9oCisKKyNpbmNs
dWRlIDxXZWJLaXQvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLVXNlclNjcmlwdEluamVj
dGlvblRpbWUuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgor
CitXS19FWFBPUlQgV0tUeXBlSUQgV0tVc2VyU2NyaXB0R2V0VHlwZUlEKCk7CisKK1dLX0VYUE9S
VCBXS1VzZXJTY3JpcHRSZWYgV0tVc2VyU2NyaXB0Q3JlYXRlV2l0aFNvdXJjZShXS1N0cmluZ1Jl
ZiBzb3VyY2UsIF9XS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIGJvb2wg
Zm9yTWFpbkZyYW1lT25seSk7CisKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1VzZXJTY3JpcHRD
b3B5U291cmNlKFdLVXNlclNjcmlwdFJlZiB1c2VyU2NyaXB0KTsKK1dLX0VYUE9SVCBfV0tVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSBXS1VzZXJTY3JpcHRHZXRJbmplY3Rpb25UaW1lKFdLVXNlclNj
cmlwdFJlZiB1c2VyU2NyaXB0KTsKK1dLX0VYUE9SVCBib29sIFdLVXNlclNjcmlwdEdldE1haW5G
cmFtZU9ubHkoV0tVc2VyU2NyaXB0UmVmIHVzZXJTY3JpcHQpOworCisjaWZkZWYgX19jcGx1c3Bs
dXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tVc2VyU2NyaXB0UmVmX2ggKi8KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XZWJLaXQyX0MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV2ViS2l0Ml9DLmgJKHJldmlzaW9uIDE3ODU4
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XZWJLaXQyX0MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsMTMgKzUxLDE2IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLT3BlblBhbmVs
UGFyYW1ldGVycy5oPgogI2luY2x1ZGUgPFdlYktpdC9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVy
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1BhZ2VD
b25maWd1cmF0aW9uUmVmLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZUdyb3VwLmg+CiAjaW5j
bHVkZSA8V2ViS2l0L1dLUHJlZmVyZW5jZXNSZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tTdHJp
bmcuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tVUkwuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tVUkxS
ZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVVJMUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxX
ZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1VzZXJTY3Jp
cHRSZWYuaD4KIAogI2lmIGRlZmluZWQoX19PQkpDX18pICYmIF9fT0JKQ19fCiAjaW1wb3J0IDxX
ZWJLaXQvV0tWaWV3Lmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLVXNlclNjcmlwdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQkocmV2aXNpb24gMTc4NTgxKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI4LDI4ICsyOCwxNCBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAotI2ltcG9ydCA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgotCiBAaW1wbGVtZW50YXRpb24gV0tVc2VyU2NyaXB0CiAK
LXN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUlkZW50aWZpZXIoKQotewotICAgIHN0YXRpYyB1aW50
NjRfdCBpZGVudGlmaWVyOwotCi0gICAgcmV0dXJuICsraWRlbnRpZmllcjsKLX0KLQogLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25UaW1l
OihXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKWluamVjdGlvblRpbWUgZm9yTWFpbkZyYW1lT25s
eTooQk9PTClmb3JNYWluRnJhbWVPbmx5CiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBTdHJpbmdCdWlsZGVyIHVybFN0cmluZ0J1
aWxkZXI7Ci0gICAgdXJsU3RyaW5nQnVpbGRlci5hcHBlbmQoInVzZXItc2NyaXB0OiIpOwotICAg
IHVybFN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKGdlbmVyYXRlSWRlbnRpZmllcigpKTsKLSAg
ICBXZWJDb3JlOjpVUkwgdXJsIHsgV2ViQ29yZTo6VVJMIHsgfSwgdXJsU3RyaW5nQnVpbGRlci50
b1N0cmluZygpIH07Ci0KLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6
VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6U3RyaW5nKHNvdXJj
ZSksIHVybCwgeyB9LCB7IH0sIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUo
aW5qZWN0aW9uVGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZy
YW1lT25seSA6IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0pOworICAgIEFQSTo6T2JqZWN0
Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2Vy
U2NyaXB0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVu
aXF1ZVVSTCgpLCB7IH0sIHsgfSwgQVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9w
RnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgfSk7CiAKICAgICByZXR1cm4g
c2VsZjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3
UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiAxNzg1ODEpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NiArNDAsNyBAQAogI2Vsc2UKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBjb250
ZXh0UmVmOihXS0NvbnRleHRSZWYpY29udGV4dFJlZiBwYWdlR3JvdXBSZWY6KFdLUGFnZUdyb3Vw
UmVmKXBhZ2VHcm91cFJlZjsKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBjb250
ZXh0UmVmOihXS0NvbnRleHRSZWYpY29udGV4dFJlZiBwYWdlR3JvdXBSZWY6KFdLUGFnZUdyb3Vw
UmVmKXBhZ2VHcm91cFJlZiByZWxhdGVkVG9QYWdlOihXS1BhZ2VSZWYpcmVsYXRlZFBhZ2U7Cist
IChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgY29uZmlndXJhdGlvblJlZjooV0tQYWdl
Q29uZmlndXJhdGlvblJlZiljb25maWd1cmF0aW9uOwogI2VuZGlmCiAKICNpZiBUQVJHRVRfT1Nf
SVBIT05FCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCShyZXZpc2lvbiAxNzg1ODEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFdLX0FQSV9FTkFC
TEVECiAKKyNpbXBvcnQgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJXS1ByZWZl
cmVuY2VzLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJXS1VzZXJDb250
ZW50Q29udHJvbGxlci5oIgpAQCAtNDMsOCArNDQsMTAgQEAKIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4gY2xhc3MgTGF6eUluaXRpYWxpemVkIHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIHR5cGVuYW1l
IFdURjo6R2V0UHRySGVscGVyPFQ+OjpQdHJUeXBlIFB0clR5cGU7CisKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGPgotICAgIFQqIGdldChGJiYgZikKKyAgICBQdHJUeXBlIGdldChGJiYgZikKICAg
ICB7CiAgICAgICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgICAgICBtX3ZhbHVl
ID0gZigpOwpAQCAtNTQsMzggKzU3LDM4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fdmFs
dWUuZ2V0KCk7CiAgICAgfQogCi0gICAgdm9pZCBzZXQoVCogdCkKKyAgICB2b2lkIHNldChQdHJU
eXBlIHQpCiAgICAgewogICAgICAgICBtX3ZhbHVlID0gdDsKICAgICAgICAgbV9pc0luaXRpYWxp
emVkID0gdHJ1ZTsKICAgICB9CiAKLSAgICB2b2lkIHNldChSZXRhaW5QdHI8VD4mJiB0KQorICAg
IHZvaWQgc2V0KFQmJiB0KQogICAgIHsKICAgICAgICAgbV92YWx1ZSA9IFdURjo6bW92ZSh0KTsK
ICAgICAgICAgbV9pc0luaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9CiAKLSAgICBUKiBwZWVrKCkK
KyAgICBQdHJUeXBlIHBlZWsoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdmFsdWUuZ2V0KCk7
CiAgICAgfQogCiBwcml2YXRlOgogICAgIGJvb2wgbV9pc0luaXRpYWxpemVkID0gZmFsc2U7Ci0g
ICAgUmV0YWluUHRyPFQ+IG1fdmFsdWU7CisgICAgVCBtX3ZhbHVlOwogfTsKIAogQGltcGxlbWVu
dGF0aW9uIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gewotICAgIExhenlJbml0aWFsaXplZDxXS1By
b2Nlc3NQb29sPiBfcHJvY2Vzc1Bvb2w7Ci0gICAgTGF6eUluaXRpYWxpemVkPFdLUHJlZmVyZW5j
ZXM+IF9wcmVmZXJlbmNlczsKLSAgICBMYXp5SW5pdGlhbGl6ZWQ8V0tVc2VyQ29udGVudENvbnRy
b2xsZXI+IF91c2VyQ29udGVudENvbnRyb2xsZXI7Ci0gICAgTGF6eUluaXRpYWxpemVkPF9XS1Zp
c2l0ZWRMaW5rUHJvdmlkZXI+IF92aXNpdGVkTGlua1Byb3ZpZGVyOwotICAgIExhenlJbml0aWFs
aXplZDxfV0tXZWJzaXRlRGF0YVN0b3JlPiBfd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBMYXp5SW5p
dGlhbGl6ZWQ8UmV0YWluUHRyPFdLUHJvY2Vzc1Bvb2w+PiBfcHJvY2Vzc1Bvb2w7CisgICAgTGF6
eUluaXRpYWxpemVkPFJldGFpblB0cjxXS1ByZWZlcmVuY2VzPj4gX3ByZWZlcmVuY2VzOworICAg
IExhenlJbml0aWFsaXplZDxSZXRhaW5QdHI8V0tVc2VyQ29udGVudENvbnRyb2xsZXI+PiBfdXNl
ckNvbnRlbnRDb250cm9sbGVyOworICAgIExhenlJbml0aWFsaXplZDxSZXRhaW5QdHI8X1dLVmlz
aXRlZExpbmtQcm92aWRlcj4+IF92aXNpdGVkTGlua1Byb3ZpZGVyOworICAgIExhenlJbml0aWFs
aXplZDxSZXRhaW5QdHI8X1dLV2Vic2l0ZURhdGFTdG9yZT4+IF93ZWJzaXRlRGF0YVN0b3JlOwog
ICAgIFdlYktpdDo6V2Vha09iakNQdHI8V0tXZWJWaWV3PiBfcmVsYXRlZFdlYlZpZXc7CiAgICAg
V2ViS2l0OjpXZWFrT2JqQ1B0cjxXS1dlYlZpZXc+IF9hbHRlcm5hdGVXZWJWaWV3Rm9yTmF2aWdh
dGlvbkdlc3R1cmVzOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2dyb3VwSWRlbnRpZmllcjsK
LSAgICBMYXp5SW5pdGlhbGl6ZWQ8TlNTdHJpbmc+IF9hcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdl
bnQ7CisgICAgTGF6eUluaXRpYWxpemVkPFJldGFpblB0cjxOU1N0cmluZz4+IF9hcHBsaWNhdGlv
bk5hbWVGb3JVc2VyQWdlbnQ7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgTGF6eUluaXRpYWxp
emVkPFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5PiBfY29udGVudFByb3ZpZGVyUmVn
aXN0cnk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
CShyZXZpc2lvbiAxNzg1ODEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNlbmRpZgogCiAjaW1w
b3J0ICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgorI2ltcG9ydCAiQVBJUGFnZUNv
bmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIkFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0LmgiCiAjaW1w
b3J0ICJBdHRyaWJ1dGVkU3RyaW5nLmgiCiAjaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgpAQCAt
Mzc5NSw2ICszNzk2LDE0IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBjb250
ZXgKICAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBwcm9jZXNzUG9vbDoqdG9J
bXBsKGNvbnRleHRSZWYpIGNvbmZpZ3VyYXRpb246d2ViUGFnZUNvbmZpZ3VyYXRpb24gd2ViVmll
dzpuaWxdOwogfQogCistIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgY29uZmlndXJh
dGlvblJlZjooV0tQYWdlQ29uZmlndXJhdGlvblJlZiljb25maWd1cmF0aW9uCit7CisgICAgYXV0
byYgcHJvY2Vzc1Bvb2wgPSAqdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5wcm9jZXNzUG9vbCgpOwor
ICAgIGF1dG8gd2ViUGFnZUNvbmZpZ3VyYXRpb24gPSB0b0ltcGwoY29uZmlndXJhdGlvbiktPndl
YlBhZ2VDb25maWd1cmF0aW9uKCk7CisKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpm
cmFtZSBwcm9jZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOndlYlBhZ2VDb25maWd1
cmF0aW9uIHdlYlZpZXc6bmlsXTsKK30KKwogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTA4MAogLSAoQk9PTCl3YW50c1VwZGF0ZUxheWVyCiB7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAkocmV2aXNpb24gMTc4NTgxKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDEwIEBAIGNsYXNzIFdlYlNjcmlw
dE1lc3NhZ2VIYW5kbGVyOwogCiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSA6
IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJDb250ZW50Q29u
dHJvbGxlcj4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgorICAgIHN0
YXRpYyBSZWY8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IGNyZWF0ZSgpCisgICAgeyAK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkpOworICAgIH0gCiAgICAgZXhwbGljaXQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHko
KTsKICAgICB+V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKTsKIApJbmRleDogU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTc4NTgxKQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcwLDYgKzEwNzAsMTUgQEAKIAkJN0M4NUZEN0Yx
OTM0MTY2NTAwMDE3N0M0IC8qIFdlYlByZWZlcmVuY2VzS2V5cy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg1RkQ3RDE5MzQxNjY1MDAwMTc3QzQg
LyogV2ViUHJlZmVyZW5jZXNLZXlzLmNwcCAqLzsgfTsKIAkJN0M4NUZEODAxOTM0MTY2NTAwMDE3
N0M0IC8qIFdlYlByZWZlcmVuY2VzS2V5cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M4NUZEN0UxOTM0MTY2NTAwMDE3N0M0IC8qIFdlYlByZWZlcmVu
Y2VzS2V5cy5oICovOyB9OwogCQk3Qzg5RDI5NDFBNjcxMjJGMDAzQTVGREUgLyogQVBJVXNlclNj
cmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4
OUQyOTIxQTY3MTIyRjAwM0E1RkRFIC8qIEFQSVVzZXJTY3JpcHQuaCAqLzsgfTsKKwkJN0M4OUQy
OTcxQTY3NTNCMjAwM0E1RkRFIC8qIEFQSVBhZ2VDb25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODlEMjk1MUE2NzUzQjIwMDNB
NUZERSAvKiBBUElQYWdlQ29uZmlndXJhdGlvbi5jcHAgKi87IH07CisJCTdDODlEMjk4MUE2NzUz
QjIwMDNBNUZERSAvKiBBUElQYWdlQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4OUQyOTYxQTY3NTNCMjAwM0E1RkRFIC8qIEFQ
SVBhZ2VDb25maWd1cmF0aW9uLmggKi87IH07CisJCTdDODlEMjlCMUE2NzgzN0IwMDNBNUZERSAv
KiBXS1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDODlEMjk5MUE2NzgzN0IwMDNBNUZERSAvKiBXS1BhZ2VDb25m
aWd1cmF0aW9uUmVmLmNwcCAqLzsgfTsKKwkJN0M4OUQyOUMxQTY3ODM3QjAwM0E1RkRFIC8qIFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDODlEMjlBMUE2NzgzN0IwMDNBNUZERSAvKiBXS1BhZ2VDb25maWd1cmF0
aW9uUmVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJN0M4OUQyOUYxQTY3ODU1NDAwM0E1RkRFIC8qIFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVm
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODlE
MjlEMUE2Nzg1NTQwMDNBNUZERSAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5jcHAgKi87
IH07CisJCTdDODlEMkEwMUE2Nzg1NTQwMDNBNUZERSAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxl
clJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4
OUQyOUUxQTY3ODU1NDAwM0E1RkRFIC8qIFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0M4OUQyQTMx
QTY3ODg3NTAwM0E1RkRFIC8qIFdLVXNlclNjcmlwdFJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg5RDJBMTFBNjc4ODc1MDAzQTVGREUgLyog
V0tVc2VyU2NyaXB0UmVmLmNwcCAqLzsgfTsKKwkJN0M4OUQyQTQxQTY3ODg3NTAwM0E1RkRFIC8q
IFdLVXNlclNjcmlwdFJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0M4OUQyQTIxQTY3ODg3NTAwM0E1RkRFIC8qIFdLVXNlclNjcmlwdFJlZi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdDODlEMkE2
MUE2Nzg5RUEwMDNBNUZERSAvKiBBUElVc2VyU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODlEMkE1MUE2Nzg5RUEwMDNBNUZERSAvKiBB
UElVc2VyU2NyaXB0LmNwcCAqLzsgfTsKIAkJN0M4RUIxMTcxOERCNkExOTAwNzkxN0MyIC8qIFdL
UHJlZmVyZW5jZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzhFQjExNjE4REI2QTE5MDA3OTE3QzIgLyogV0tQcmVmZXJlbmNlc1ByaXZh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
QzlEMTUzNzE4NDU4NERBMDA5RDM5MTggLyogV0tCcm93c2luZ0NvbnRleHRHcm91cEludGVybmFs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzlEMTUz
NjE4NDU4NERBMDA5RDM5MTggLyogV0tCcm93c2luZ0NvbnRleHRHcm91cEludGVybmFsLmggKi87
IH07CiAJCTdDQTI1NEVCMTgyOTkzQ0UwMEZDOEE0MSAvKiBXS0Jyb3dzaW5nQ29udGV4dFBvbGlj
eURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3Q0EyNTRFQTE4Mjk5M0NFMDBGQzhBNDEgLyogV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxl
Z2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0zMTgyLDYgKzMxOTEsMTUgQEAKIAkJN0M4NUZEN0QxOTM0MTY2NTAwMDE3N0M0IC8qIFdlYlBy
ZWZlcmVuY2VzS2V5cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJQcmVmZXJlbmNlc0tleXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzg1
RkQ3RTE5MzQxNjY1MDAwMTc3QzQgLyogV2ViUHJlZmVyZW5jZXNLZXlzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlByZWZlcmVuY2VzS2V5cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3Qzg5RDI5MjFBNjcxMjJGMDAzQTVGREUgLyogQVBJVXNlclNjcmlw
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElVc2VyU2NyaXB0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDODlEMjk1MUE2NzUzQjIwMDNBNUZERSAvKiBB
UElQYWdlQ29uZmlndXJhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBUElQYWdlQ29uZmlndXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdDODlEMjk2MUE2NzUzQjIwMDNBNUZERSAvKiBBUElQYWdlQ29uZmlndXJhdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElQYWdlQ29uZmlndXJhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qzg5RDI5OTFBNjc4MzdCMDAzQTVGREUgLyog
V0tQYWdlQ29uZmlndXJhdGlvblJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXS1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0M4OUQyOUExQTY3ODM3QjAwM0E1RkRFIC8qIFdLUGFnZUNvbmZpZ3VyYXRpb25S
ZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlQ29uZmlndXJhdGlv
blJlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qzg5RDI5RDFBNjc4NTU0MDAz
QTVGREUgLyogV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qzg5RDI5RTFBNjc4NTU0MDAzQTVGREUgLyogV0tV
c2VyQ29udGVudENvbnRyb2xsZXJSZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0M4OUQyQTExQTY3ODg3NTAwM0E1RkRFIC8qIFdLVXNlclNjcmlwdFJlZi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1VzZXJTY3JpcHRSZWYuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qzg5RDJBMjFBNjc4ODc1MDAzQTVGREUgLyog
V0tVc2VyU2NyaXB0UmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVXNl
clNjcmlwdFJlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qzg5RDJBNTFBNjc4
OUVBMDAzQTVGREUgLyogQVBJVXNlclNjcmlwdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBUElVc2VyU2NyaXB0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0M4RUIxMTYxOERCNkExOTAwNzkxN0MyIC8qIFdLUHJlZmVyZW5jZXNQcml2YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUHJlZmVyZW5jZXNQcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDOUQxNTM2MTg0NTg0REEwMDlEMzkxOCAv
KiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tCcm93c2luZ0NvbnRleHRHcm91cEludGVybmFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDQTI1NEVBMTgyOTkzQ0UwMEZDOEE0MSAvKiBXS0Jyb3dzaW5n
Q29udGV4dFBvbGljeURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTYwNjAsNiArNjA3OCw4IEBACiAJCQkJN0NEM0E0ODExQTVEMDJGQTAwOTYyM0I4
IC8qIEFQSU5hdmlnYXRpb24uaCAqLywKIAkJCQlCQ0Y2OUZBMTExNzZEMDE0MDA0NzFBNTIgLyog
QVBJTmF2aWdhdGlvbkRhdGEuY3BwICovLAogCQkJCUJDRjY5RkEwMTE3NkQwMTQwMDQ3MUE1MiAv
KiBBUElOYXZpZ2F0aW9uRGF0YS5oICovLAorCQkJCTdDODlEMjk1MUE2NzUzQjIwMDNBNUZERSAv
KiBBUElQYWdlQ29uZmlndXJhdGlvbi5jcHAgKi8sCisJCQkJN0M4OUQyOTYxQTY3NTNCMjAwM0E1
RkRFIC8qIEFQSVBhZ2VDb25maWd1cmF0aW9uLmggKi8sCiAJCQkJMUFGREQzMTQxODkxQjU0MDAw
MTUzOTcwIC8qIEFQSVBvbGljeUNsaWVudC5oICovLAogCQkJCTdDRTREMjFEMUE0OTE0Q0EwMEM3
RjE1MiAvKiBBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwICovLAogCQkJCTdDRTREMjFF
MUE0OTE0Q0EwMEM3RjE1MiAvKiBBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCAqLywKQEAg
LTYwNjgsNiArNjA4OCw3IEBACiAJCQkJMUFGREU2NUYxOTU0RTlCMTAwQzQ4RkZBIC8qIEFQSVNl
c3Npb25TdGF0ZS5jcHAgKi8sCiAJCQkJMUFGREU2NjAxOTU0RTlCMTAwQzQ4RkZBIC8qIEFQSVNl
c3Npb25TdGF0ZS5oICovLAogCQkJCTFBNEQ2NjQ3MThBMkQ5MUEwMEQ4MkUyMSAvKiBBUElVSUNs
aWVudC5oICovLAorCQkJCTdDODlEMkE1MUE2Nzg5RUEwMDNBNUZERSAvKiBBUElVc2VyU2NyaXB0
LmNwcCAqLywKIAkJCQk3Qzg5RDI5MjFBNjcxMjJGMDAzQTVGREUgLyogQVBJVXNlclNjcmlwdC5o
ICovLAogCQkJCTFBMzYzNUE3MUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3Jl
LmNwcCAqLywKIAkJCQkxQTM2MzVBODFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFT
dG9yZS5oICovLApAQCAtNjE1MCw2ICs2MTcxLDggQEAKIAkJCQk3NTU0MjJCQTE4MDYyQjlDMDA0
NkY2QTggLyogV0tPcmlnaW5EYXRhTWFuYWdlci5oICovLAogCQkJCUJDRDU5N0Q0MTEyQjU2REMw
MEVDOEMyMyAvKiBXS1BhZ2UuY3BwICovLAogCQkJCUJDRDU5N0Q1MTEyQjU2REMwMEVDOEMyMyAv
KiBXS1BhZ2UuaCAqLywKKwkJCQk3Qzg5RDI5OTFBNjc4MzdCMDAzQTVGREUgLyogV0tQYWdlQ29u
ZmlndXJhdGlvblJlZi5jcHAgKi8sCisJCQkJN0M4OUQyOUExQTY3ODM3QjAwM0E1RkRFIC8qIFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWYuaCAqLywKIAkJCQkxQUI4QTFGNzE4NDAwQkI4MDBFOUFFNjkg
LyogV0tQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAqLywKIAkJCQk4MzcyREIyNDFBNjc0QzhGMDBD
Njk3QzUgLyogV0tQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCAqLywKIAkJCQkxQUI4QTFG
MzE4NDAwQjhGMDBFOUFFNjkgLyogV0tQYWdlRmluZENsaWVudC5oICovLApAQCAtNjE3OCw2ICs2
MjAxLDEwIEBACiAJCQkJMUFERTQ2QjExOTU0RUM2MTAwMEY3OTg1IC8qIFdLU2Vzc2lvblN0YXRl
UmVmLmggKi8sCiAJCQkJNEE0MTBGMzUxOUFGN0FDMzAwMkVCQUI1IC8qIFdLVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QuY3BwICovLAogCQkJCTRBNDEwRjM2MTlBRjdBQzMwMDJFQkFCNSAvKiBX
S1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggKi8sCisJCQkJN0M4OUQyOUQxQTY3ODU1NDAw
M0E1RkRFIC8qIFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmNwcCAqLywKKwkJCQk3Qzg5RDI5
RTFBNjc4NTU0MDAzQTVGREUgLyogV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuaCAqLywKKwkJ
CQk3Qzg5RDJBMTFBNjc4ODc1MDAzQTVGREUgLyogV0tVc2VyU2NyaXB0UmVmLmNwcCAqLywKKwkJ
CQk3Qzg5RDJBMjFBNjc4ODc1MDAzQTVGREUgLyogV0tVc2VyU2NyaXB0UmVmLmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IEM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzg0Nyw2ICs3
ODc0LDcgQEAKIAkJCQlCQzIwNEVFRjExQzgzRUM4MDA4RjMzNzUgLyogV0tCdW5kbGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMjA0RUYwMTFDODNFQzgwMDhGMzM3NSAvKiBXS0J1bmRsZUFQSUNh
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUVFQjlGMTI3NzYxQUMwMDMzMjJCOCAvKiBXS0J1
bmRsZUJhY2tGb3J3YXJkTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0M4OUQyQTQxQTY3ODg3
NTAwM0E1RkRFIC8qIFdLVXNlclNjcmlwdFJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1RUVC
OUIxMjc3NjE3QzAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTFFRkMxQ0YxNTI0RTYyNTAwQzlBOTM4IC8qIFdLQnVuZGxlRE9NV2lu
ZG93RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0QyNUYxNzExRDZCREUxMDAxNjlC
MEUgLyogV0tCdW5kbGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03ODcwLDYgKzc4OTgsNyBA
QAogCQkJCTFBQjQ3NEQ4MTg0RDQzRkQwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUVEODJBN0YyMTI4QzZGQUYwMDQ0NzdCMyAvKiBXS0J1
bmRsZVBhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI0NzRFQTE4NEQ0NTEzMDA1
MUI2MjIgLyogV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk3
Qzg5RDI5QzFBNjc4MzdCMDAzQTVGREUgLyogV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMxQjQxOTgxMUQ0MUQ1NzAwMTFFOEREIC8qIFdLQnVuZGxlUGFnZVBy
aXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjQ3NERBMTg0RDQ0MjUwMDUxQjYyMiAvKiBX
S0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjQ3
NERFMTg0RDQ0NTkwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VVSUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC03OTA2LDYgKzc5MzUsNyBAQAogCQkJCUJDMDE3RDBCMTYyNjBGRjQwMDcwNTRGNSAv
KiBXS0RPTUludGVybmFscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMTdEMEQxNjI2MEZGNDAw
NzA1NEY1IC8qIFdLRE9NTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RDI0QzIxNkNENzA2
RDAwN0Q1NDYxIC8qIFdLRE9NTm9kZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdDODlE
Mjk4MUE2NzUzQjIwMDNBNUZERSAvKiBBUElQYWdlQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMzOUM0MzYxNjI2MzY2RjAwOEJDNjg5IC8qIFdLRE9NUmFuZ2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNUQyNEM1MTZDRDcwODgwMDdENTQ2MSAvKiBXS0RPTVJhbmdlUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjkzRUJFQUIxNjI3RDlDOTAwNUY4OUYxIC8qIFdLRE9N
VGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDI0LDYgKzgwNTQsNyBAQAogCQkJCTFBOUUzMjlG
MTgyMkZFREQwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVjdENvZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkzNzk0ODQwOTE1MEM0Qjk3MDBFNTJDRTkgLyogV0tSZW5kZXJMYXllci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzc2MDg4MjMxNTA0MTRGNzAwRkM4MkM3IC8qIFdLUmVuZGVyT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3Qzg5RDJBMDFBNjc4NTU0MDAzQTVGREUgLyogV0tVc2VyQ29u
dGVudENvbnRyb2xsZXJSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzMzY3NjNCMTMwQzk5REMw
MDZDOURFMiAvKiBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzhBNTAxNTExNzY1RjU2MDA3NTc1NzMgLyogV0tSZXRhaW5QdHIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBN0UzNzc5MThFNEE0RkUwMDNEMEZGRiAvKiBXS1NjcmlwdE1lc3NhZ2UuaCBpbiBIZWFk
ZXJzICovLApAQCAtOTE0OSw2ICs5MTgwLDcgQEAKIAkJCQkxQUZERTY1RDE5NTRFOEQ1MDBDNDhG
RkEgLyogTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
MUQ4QkExMTczMUEzNjMwMDE0MURBNCAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQThDNzI4QzE3Mzg0NzdDMDAwQTY1NTQgLyogTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDODlEMjlCMUE2NzgzN0IwMDNB
NUZERSAvKiBXS1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
QTdGMkY1MTI1QkY4RDQwMDhBRUIxRCAvKiBMb2dnaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxNjBCRkUxMTMzODFERjkwMDkxODk5OSAvKiBMb2dnaW5nRm91bmRhdGlvbi5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBMjRCNUYyMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtOTQ2MSw2ICs5NDkzLDcgQEAKIAkJCQk1MUE5RTEwNTEzMTVD
Q0ZDMDA5RTcwMzEgLyogV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQTYyODBGMzE5MTk5ODJBMDA2QUQ5RjkgLyogV2ViS2l0Lm0gaW4gU291cmNlcyAq
LywKIAkJCQlCQzlCQTUwNDE2OTdDNDUzMDBFNDQ2MTYgLyogV2ViS2l0MkluaXRpYWxpemUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJN0M4OUQyOUYxQTY3ODU1NDAwM0E1RkRFIC8qIFdLVXNlckNv
bnRlbnRDb250cm9sbGVyUmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzRDNBM0MxMTMzOTYw
QjAwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzM0QzQTNDODEzMzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzNEM0EzQkExMzM5NjA2MjAwNzA5QkU0
IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NjI1
LDcgKzk2NTgsOSBAQAogCQkJCTFBRjQ1OTJFMTk0NjRCMjAwMEY5RDRBMiAvKiBXS0Vycm9yLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGRDU0OEIxMzJEODI2ODAwNTVEODE2IC8qIFdLRXJyb3JD
Ri5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQwNzVGQjEyNEZGMDI3MDA2OEYyMEEgLyogV0tF
cnJvclJlZi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3Qzg5RDJBMzFBNjc4ODc1MDAzQTVGREUg
LyogV0tVc2VyU2NyaXB0UmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OEI2RjA5MThGQ0E3
MzMwMDhDQkE1MyAvKiBXS0ZpbGVVcGxvYWRQYW5lbC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdD
ODlEMjk3MUE2NzUzQjIwMDNBNUZERSAvKiBBUElQYWdlQ29uZmlndXJhdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDNTQyNTZCNjE4QkVDMThDMDBERTQxNzkgLyogV0tGb3JtSW5wdXRDb250
cm9sLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU0MjU2QjkxOEJFQzE4QzAwREU0MTc5IC8qIFdL
Rm9ybVBvcG92ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDNTcxOTNCRTE4QzE0QTQ0MDAyRDBG
MTIgLyogV0tGb3JtU2VsZWN0Q29udHJvbC5tbSBpbiBTb3VyY2VzICovLApAQCAtOTY5NCw2ICs5
NzI5LDcgQEAKIAkJCQkxQTE1ODQxOTE4OTA0NEY1MDAxNzYxNkMgLyogV0tQcm9jZXNzUG9vbC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTUxMkY1OEZCMTJBODhBNTQwMDYyOTUzMCAvKiBXS1Byb3Rl
Y3Rpb25TcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUQwMUJDQzE5MDVENTQ5MDBDOUM0
NUYgLyogV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIubW0gaW4gU291cmNlcyAq
LywKKwkJCQk3Qzg5RDJBNjFBNjc4OUVBMDAzQTVGREUgLyogQVBJVXNlclNjcmlwdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQTlFMzI5QTE4MjJFMUNDMDBGNUQwNEMgLyogV0tSZW1vdGVPYmpl
Y3QubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUZBNEI4QjFBNjVBMUQwMDA2QzRBQjQgLyogV2Vi
UHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTlFMzI5RTE4
MjJGRUREMDBGNUQwNEMgLyogV0tSZW1vdGVPYmplY3RDb2Rlci5tbSBpbiBTb3VyY2VzICovLApJ
bmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2
aXNpb24gMTc4NjA3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjIgQEAKKzIwMTUtMDEtMTYgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBBZGQgYSBiYXNpYyBjb25maWd1cmF0aW9uIG9iamVjdCBmb3IgV0tWaWV3CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDA1NTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWYuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3Jt
V2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9XS1BhZ2VDb25maWd1cmF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW06CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpQbGF0Zm9ybVdlYlZpZXc6OmluaXRpYWxpemUpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6UGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcpOgorCiAyMDE1LTAxLTE2
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbihy
MTc4NTg2KTogQ2F1c2VkIHdlYmtpdHB5LnczYy50ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5XM0NU
ZXN0Q29udmVydGVyVGVzdC50ZXN0X2NvbnZlcnRfcHJlZml4ZWRfcHJvcGVydGllcyB0byBmYWls
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgJKHJldmlzaW9uIDE3ODU4
MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU2LDYgKzU2LDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBjbGFzcyBQ
bGF0Zm9ybVdlYlZpZXcgewogcHVibGljOgorICAgIGV4cGxpY2l0IFBsYXRmb3JtV2ViVmlldyhX
S1BhZ2VDb25maWd1cmF0aW9uUmVmKTsKICAgICBleHBsaWNpdCBQbGF0Zm9ybVdlYlZpZXcoV0tD
b250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiA9IDApOwogICAgIGV4cGxpY2l0IFBsYXRmb3JtV2Vi
VmlldyhXS1BhZ2VSZWYgcmVsYXRlZFBhZ2UpOwogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTc0LDYg
Kzc1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNpbXVsYXRlTW91c2VNb3ZlKHVuc2lnbmVkIHgs
IHVuc2lnbmVkIHkpOwogCiBwcml2YXRlOgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2b2lkIGlu
aXRpYWxpemUoV0tQYWdlQ29uZmlndXJhdGlvblJlZiwgQ2xhc3Mgd2tWaWV3U3ViY2xhc3MpOwor
I2VuZGlmCisKICAgICBQbGF0Zm9ybVdLVmlldyBtX3ZpZXc7CiAgICAgUGxhdGZvcm1XaW5kb3cg
bV93aW5kb3c7CiB9OwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3ODU4
MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBACiAJCTc2NzM0OTlEMTkz
MEM1QkIwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0RpZEZhaWxQcm92aXNpb25hbExvYWRf
YnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDc2NzM0OTlBMTkzMDE4MkUwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0RpZEZhaWxQcm92
aXNpb25hbExvYWRfYnVuZGxlLmNwcCAqLzsgfTsKIAkJNzZFMTgyREQxNTQ3NTY5MTAwRjFGQURE
IC8qIFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2RTE4MkRDMTU0NzU2OTEwMEYxRkFERCAvKiBXaWxs
U2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgKi87IH07CiAJCTc2RTE4MkRGMTU0NzY3RTYwMEYx
RkFERCAvKiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2RTE4MkRFMTU0NzVBODMwMEYxRkFERCAv
KiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sICovOyB9OworCQk3Qzg5RDJBQzFBNjlCODBEMDAz
QTVGREUgLyogV0tQYWdlQ29uZmlndXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg5RDJBQTFBNjlCODBEMDAzQTVGREUgLyogV0tQYWdl
Q29uZmlndXJhdGlvbi5jcHAgKi87IH07CiAJCTdDOUVEOThCMTdBMTlGNEIwMEU0REMzMyAvKiBh
dHRyaWJ1dGVkU3RyaW5nU3RyaWtldGhyb3VnaC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUVEOThBMTdBMTlEMDYwMEU0REMzMyAv
KiBhdHRyaWJ1dGVkU3RyaW5nU3RyaWtldGhyb3VnaC5odG1sICovOyB9OwogCQk3Q0NFN0VBNDFB
NDExOUYzMDA0NDdDNEMgLyogSW5zdGFuY2VNZXRob2RTd2l6emxlci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwODU4N0ZGMTNGRUMzQTYwMDFFRjRF
NSAvKiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLm1tICovOyB9OwogCQk3Q0NFN0VBNTFBNDExQTA4
MDA0NDdDNEMgLyogSmF2YVNjcmlwdFRlc3RNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMDgxMjI0MDEzRkMxNzI0MDBEQzM5QUUgLyogSmF2YVNj
cmlwdFRlc3RNYWMubW0gKi87IH07CkBAIC01MDUsNiArNTA2LDcgQEAKIAkJN0M2QkJEOEExOUNF
QTU0MzAwQzFGNUUwIC8qIENvdW50ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvdW50ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNkJCRDhCMTlD
RUE2MzAwMEMxRjVFMCAvKiBDb3VudGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb3VudGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
NzRENDJEMTg4MjI4RjMwMEU1RUQ1NyAvKiBTdHJpbmdWaWV3LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ1ZpZXcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3Qzg5RDJBQTFBNjlCODBEMDAzQTVGREUgLyogV0tQYWdlQ29uZmlndXJhdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1BhZ2VDb25maWd1
cmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4RERBQTkxNzM1REUx
RDAwRUE1QUMwIC8qIENsb3NlVGhlblRlcm1pbmF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
bG9zZVRoZW5UZXJtaW5hdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzlF
RDk4QTE3QTE5RDA2MDBFNERDMzMgLyogYXR0cmlidXRlZFN0cmluZ1N0cmlrZXRocm91Z2guaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9IGF0dHJpYnV0ZWRTdHJpbmdTdHJpa2V0aHJvdWdoLmh0bWw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQkJBMDc2MTlCQjhBOTEwMEJCRjAyNSAvKiBPU09iamVj
dFB0ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPU09iamVjdFB0
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NzUsNiArOTc3LDcgQEAKIAkJ
CQk3NkUxODJEOTE1NDc1NTAxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAgKi8s
CiAJCQkJNzZFMTgyREMxNTQ3NTY5MTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnRfQnVu
ZGxlLmNwcCAqLywKIAkJCQlBMUZERkQyRTE5QzI4OEJCMDA1MTQ4QTQgLyogV0tJbWFnZUNyZWF0
ZUNHSW1hZ2VDcmFzaC5jcHAgKi8sCisJCQkJN0M4OUQyQUExQTY5QjgwRDAwM0E1RkRFIC8qIFdL
UGFnZUNvbmZpZ3VyYXRpb24uY3BwICovLAogCQkJCTUxRTkzMDE2MTU2QjEzRTEwMDRDOTlERiAv
KiBXS1BhZ2VHZXRTY2FsZUZhY3Rvck5vdFplcm8uY3BwICovLAogCQkJCTUyNEJCQzlDMTlERjM3
N0EwMDJGMUFGMSAvKiBXS1BhZ2VJc1BsYXlpbmdBdWRpby5jcHAgKi8sCiAJCQkJQkM3QjYxOUEx
Mjk5RkU5RTAwRDE3NEE0IC8qIFdLUHJlZmVyZW5jZXMuY3BwICovLApAQCAtMTQwNiw2ICsxNDA5
LDcgQEAKIAkJCQk3Q0NFN0VGRjFBNDExQUU2MDA0NDdDNEMgLyogTG9hZENhbmNlbGVkTm9TZXJ2
ZXJSZWRpcmVjdENhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjAwMUE0MTFB
RTYwMDQ0N0M0QyAvKiBMb2FkUGFnZU9uQ3Jhc2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ND
RTdGM0ExQTQxMUI4RTAwNDQ3QzRDIC8qIE1hdGhFeHRyYXMuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJN0M4OUQyQUMxQTY5QjgwRDAwM0E1RkRFIC8qIFdLUGFnZUNvbmZpZ3VyYXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMzkxQTQxMUI4RTAwNDQ3QzRDIC8qIE1ENS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0YzQjFBNDExQjhFMDA0NDdDNEMgLyogTWVkaWFUaW1lLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUIyMUE0MTFBNTEwMDQ0N0M0QyAvKiBNZW1vcnlD
YWNoZUFkZEltYWdlVG9DYWNoZUlPUy5tbSBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dLUGFnZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XS1BhZ2VDb25maWd1cmF0
aW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9XS1BhZ2VDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgV0tfSEFWRV9DX1NQSQor
CisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZp
ZXcuaCIKKyNpbmNsdWRlICJUZXN0LmgiCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwor
VEVTVChXZWJLaXQyLCBXS1BhZ2VDb25maWd1cmF0aW9uRW1wdHkpCit7CisgICAgV0tSZXRhaW5Q
dHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gY29uZmlndXJhdGlvbiA9IGFkb3B0V0soV0tQYWdl
Q29uZmlndXJhdGlvbkNyZWF0ZSgpKTsKKworICAgIEFTU0VSVF9OVUxMKFdLUGFnZUNvbmZpZ3Vy
YXRpb25HZXRDb250ZXh0KGNvbmZpZ3VyYXRpb24uZ2V0KCkpKTsKKyAgICBBU1NFUlRfTlVMTChX
S1BhZ2VDb25maWd1cmF0aW9uR2V0VXNlckNvbnRlbnRDb250cm9sbGVyKGNvbmZpZ3VyYXRpb24u
Z2V0KCkpKTsKKyAgICBBU1NFUlRfTlVMTChXS1BhZ2VDb25maWd1cmF0aW9uR2V0UGFnZUdyb3Vw
KGNvbmZpZ3VyYXRpb24uZ2V0KCkpKTsKKyAgICBBU1NFUlRfTlVMTChXS1BhZ2VDb25maWd1cmF0
aW9uR2V0UHJlZmVyZW5jZXMoY29uZmlndXJhdGlvbi5nZXQoKSkpOworICAgIEFTU0VSVF9OVUxM
KFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRSZWxhdGVkUGFnZShjb25maWd1cmF0aW9uLmdldCgpKSk7
Cit9CisKK3N0YXRpYyBib29sIGRpZEZpbmlzaExvYWQ7CisKK3N0YXRpYyB2b2lkIGRpZEZpbmlz
aExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9p
ZCopCit7CisgICAgZGlkRmluaXNoTG9hZCA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHNldFBh
Z2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCit7CisgICAgV0tQYWdlTG9hZGVyQ2xpZW50
VjAgbG9hZGVyQ2xpZW50OworICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9h
ZGVyQ2xpZW50KSk7CisKKyAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBs
b2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZvckZyYW1l
OworCisgICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50LmJh
c2UpOworfQorCitURVNUKFdlYktpdDIsIFdLUGFnZUNvbmZpZ3VyYXRpb25CYXNpYykKK3sKKyAg
ICBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBjb25maWd1cmF0aW9uID0gYWRv
cHRXSyhXS1BhZ2VDb25maWd1cmF0aW9uQ3JlYXRlKCkpOworICAgIFdLUmV0YWluUHRyPFdLQ29u
dGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlKCkpOworICAgIFdLUGFn
ZUNvbmZpZ3VyYXRpb25TZXRDb250ZXh0KGNvbmZpZ3VyYXRpb24uZ2V0KCksIGNvbnRleHQuZ2V0
KCkpOworICAgIAorICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbmZpZ3VyYXRpb24uZ2V0
KCkpOworICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy5wYWdlKCkpOworCisgICAgV0tS
ZXRhaW5QdHI8V0tVUkxSZWY+IHVybCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3Vy
Y2UoInNpbXBsZSIsICJodG1sIikpOworICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCks
IHVybC5nZXQoKSk7CisKKyAgICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOworfQorCit9IC8v
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQkocmV2aXNpb24gMTc4NTgxKQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw4ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlBsYXRm
b3JtV2ViVmlldy5oIgogCi0jaW1wb3J0IDxXZWJLaXQvV0tWaWV3UHJpdmF0ZS5oPgogI2ltcG9y
dCA8Q2FyYm9uL0NhcmJvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CisjaW1w
b3J0IDxXZWJLaXQvV0tWaWV3UHJpdmF0ZS5oPgogCiBAaW50ZXJmYWNlIEFjdGl2ZU9mZnNjcmVl
bldpbmRvdyA6IE5TV2luZG93CiBAZW5kCkBAIC00NSwxNSArNDYsMTAgQEAgLSAoQk9PTClpc1Zp
c2libGUKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1QbGF0Zm9ybVdlYlZpZXc6OlBs
YXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFn
ZUdyb3VwUmVmKQotICAgIDogUGxhdGZvcm1XZWJWaWV3KGNvbnRleHRSZWYsIHBhZ2VHcm91cFJl
ZiwgW1dLVmlldyBjbGFzc10pCi17Ci19Ci0KLVBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJW
aWV3KFdLUGFnZVJlZiByZWxhdGVkUGFnZSkKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3Ojppbml0aWFs
aXplKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgQ2xhc3Mgd2tWaWV3U3Vi
Y2xhc3MpCiB7CiAgICAgTlNSZWN0IHJlY3QgPSBOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKTsK
LSAgICBtX3ZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpyZWN0IGNvbnRleHRS
ZWY6V0tQYWdlR2V0Q29udGV4dChyZWxhdGVkUGFnZSkgcGFnZUdyb3VwUmVmOldLUGFnZUdldFBh
Z2VHcm91cChyZWxhdGVkUGFnZSkgcmVsYXRlZFRvUGFnZTpyZWxhdGVkUGFnZV07CisgICAgbV92
aWV3ID0gW1t3a1ZpZXdTdWJjbGFzcyBhbGxvY10gaW5pdFdpdGhGcmFtZTpyZWN0IGNvbmZpZ3Vy
YXRpb25SZWY6Y29uZmlndXJhdGlvbl07CiAgICAgW21fdmlldyBzZXRXaW5kb3dPY2NsdXNpb25E
ZXRlY3Rpb25FbmFibGVkOk5PXTsKIAogICAgIE5TUmVjdCB3aW5kb3dSZWN0ID0gTlNPZmZzZXRS
ZWN0KHJlY3QsIC0xMDAwMCwgWyhOU1NjcmVlbiAqKVtbTlNTY3JlZW4gc2NyZWVuc10gb2JqZWN0
QXRJbmRleDowXSBmcmFtZV0uc2l6ZS5oZWlnaHQgLSByZWN0LnNpemUuaGVpZ2h0ICsgMTAwMDAp
OwpAQCAtNjUsMTkgKzYxLDQwIEBAIFBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdL
UGFnZVIKICAgICBbbV93aW5kb3cgc2V0UmVsZWFzZWRXaGVuQ2xvc2VkOk5PXTsKIH0KIAotUGxh
dGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdL
UGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgQ2xhc3Mgd2tWaWV3U3ViY2xhc3MpCitQbGF0Zm9y
bVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3Vy
YXRpb24pCiB7Ci0gICAgTlNSZWN0IHJlY3QgPSBOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKTsK
LSAgICBtX3ZpZXcgPSBbW3drVmlld1N1YmNsYXNzIGFsbG9jXSBpbml0V2l0aEZyYW1lOnJlY3Qg
Y29udGV4dFJlZjpjb250ZXh0UmVmIHBhZ2VHcm91cFJlZjpwYWdlR3JvdXBSZWZdOwotICAgIFtt
X3ZpZXcgc2V0V2luZG93T2NjbHVzaW9uRGV0ZWN0aW9uRW5hYmxlZDpOT107CisgICAgaW5pdGlh
bGl6ZShjb25maWd1cmF0aW9uLCBbV0tWaWV3IGNsYXNzXSk7Cit9CiAKLSAgICBOU1JlY3Qgd2lu
ZG93UmVjdCA9IE5TT2Zmc2V0UmVjdChyZWN0LCAtMTAwMDAsIFsoTlNTY3JlZW4gKilbW05TU2Ny
ZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gZnJhbWVdLnNpemUuaGVpZ2h0IC0gcmVjdC5z
aXplLmhlaWdodCArIDEwMDAwKTsKLSAgICBtX3dpbmRvdyA9IFtbQWN0aXZlT2Zmc2NyZWVuV2lu
ZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0OndpbmRvd1JlY3Qgc3R5bGVNYXNrOk5TQm9y
ZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllF
U107Ci0gICAgW21fd2luZG93IHNldENvbG9yU3BhY2U6W1tOU1NjcmVlbiBtYWluU2NyZWVuXSBj
b2xvclNwYWNlXV07Ci0gICAgW1ttX3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3VidmlldzptX3Zp
ZXddOwotICAgIFttX3dpbmRvdyBvcmRlckJhY2s6bmlsXTsKLSAgICBbbV93aW5kb3cgc2V0QXV0
b2Rpc3BsYXk6Tk9dOwotICAgIFttX3dpbmRvdyBzZXRSZWxlYXNlZFdoZW5DbG9zZWQ6Tk9dOwor
UGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYs
IFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKK3sKKyAgICBXS1JldGFpblB0cjxXS1BhZ2VD
b25maWd1cmF0aW9uUmVmPiBjb25maWd1cmF0aW9uID0gYWRvcHRXSyhXS1BhZ2VDb25maWd1cmF0
aW9uQ3JlYXRlKCkpOworICAgIAorICAgIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRDb250ZXh0KGNv
bmZpZ3VyYXRpb24uZ2V0KCksIGNvbnRleHRSZWYpOworICAgIFdLUGFnZUNvbmZpZ3VyYXRpb25T
ZXRQYWdlR3JvdXAoY29uZmlndXJhdGlvbi5nZXQoKSwgcGFnZUdyb3VwUmVmKTsKKyAgICAKKyAg
ICBpbml0aWFsaXplKGNvbmZpZ3VyYXRpb24uZ2V0KCksIFtXS1ZpZXcgY2xhc3NdKTsKK30KKwor
UGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlUmVmIHJlbGF0ZWRQYWdlKQor
eworICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IGNvbmZpZ3VyYXRpb24g
PSBhZG9wdFdLKFdLUGFnZUNvbmZpZ3VyYXRpb25DcmVhdGUoKSk7CisgICAgCisgICAgV0tQYWdl
Q29uZmlndXJhdGlvblNldENvbnRleHQoY29uZmlndXJhdGlvbi5nZXQoKSwgV0tQYWdlR2V0Q29u
dGV4dChyZWxhdGVkUGFnZSkpOworICAgIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRQYWdlR3JvdXAo
Y29uZmlndXJhdGlvbi5nZXQoKSwgV0tQYWdlR2V0UGFnZUdyb3VwKHJlbGF0ZWRQYWdlKSk7Cisg
ICAgV0tQYWdlQ29uZmlndXJhdGlvblNldFJlbGF0ZWRQYWdlKGNvbmZpZ3VyYXRpb24uZ2V0KCks
IHJlbGF0ZWRQYWdlKTsKKworICAgIGluaXRpYWxpemUoY29uZmlndXJhdGlvbi5nZXQoKSwgW1dL
VmlldyBjbGFzc10pOworfQorCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS0Nv
bnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBDbGFzcyB3
a1ZpZXdTdWJjbGFzcykKK3sKKyAgICBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVm
PiBjb25maWd1cmF0aW9uID0gYWRvcHRXSyhXS1BhZ2VDb25maWd1cmF0aW9uQ3JlYXRlKCkpOwor
ICAgIAorICAgIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRDb250ZXh0KGNvbmZpZ3VyYXRpb24uZ2V0
KCksIGNvbnRleHRSZWYpOworICAgIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRQYWdlR3JvdXAoY29u
ZmlndXJhdGlvbi5nZXQoKSwgcGFnZUdyb3VwUmVmKTsKKyAgICAKKyAgICBpbml0aWFsaXplKGNv
bmZpZ3VyYXRpb24uZ2V0KCksIHdrVmlld1N1YmNsYXNzKTsKIH0KIAogUGxhdGZvcm1XZWJWaWV3
Ojp+UGxhdGZvcm1XZWJWaWV3KCkK
</data>
<flag name="review"
          id="269756"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>