<?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>143444</bug_id>
          
          <creation_ts>2015-04-06 10:50:03 -0700</creation_ts>
          <short_desc>Combine ActionMenuHitTestResult with WebHitTestResult</short_desc>
          <delta_ts>2015-04-06 15:34:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1083106</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-06 10:50:03 -0700</bug_when>
    <thetext>Combine ActionMenuHitTestResult with WebHitTestResult

It really doesn&apos;t need to be separate.

For example, all of the additional info it stores can be (and will soon be) relevant for normal context menu operations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083110</commentid>
    <comment_count>1</comment_count>
      <attachid>250210</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-04-06 11:11:15 -0700</bug_when>
    <thetext>Created attachment 250210
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083113</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-06 11:13:52 -0700</bug_when>
    <thetext>Attachment 250210 did not pass style-queue:


ERROR: Source/WebKit2/Shared/mac/WebHitTestResult.mm:81:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/Shared/mac/WebHitTestResult.mm:81:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 18 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>1083183</commentid>
    <comment_count>3</comment_count>
      <attachid>250210</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-06 15:34:51 -0700</bug_when>
    <thetext>Comment on attachment 250210
Patch v1

Clearing flags on attachment: 250210

Committed r182442: &lt;http://trac.webkit.org/changeset/182442&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083184</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-06 15:34:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250210</attachid>
            <date>2015-04-06 11:11:15 -0700</date>
            <delta_ts>2015-04-06 15:34:51 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>61610</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiZjg2ZGY2Li41M2ZhYjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcg
QEAKKzIwMTUtMDQtMDYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIENvbWJpbmUgQWN0aW9uTWVudUhpdFRlc3RSZXN1bHQgd2l0aCBXZWJIaXRUZXN0UmVzdWx0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM0NDQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJl
ZC9tYWMvQWN0aW9uTWVudUhpdFRlc3RSZXN1bHQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFy
ZWQvbWFjL0FjdGlvbk1lbnVIaXRUZXN0UmVzdWx0Lm1tOiBSZW1vdmVkLgorCisgICAgICAgICog
U2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJIaXRUZXN0
UmVzdWx0OjpEYXRhOjpEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdDo6
RGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdDo6RGF0YTo6
ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdDo6RGF0YTo6cGxhdGZv
cm1FbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0OjpEYXRhOjpwbGF0
Zm9ybURlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuaDoKKyAgICAg
ICAgKiBTaGFyZWQvbWFjL1dlYkhpdFRlc3RSZXN1bHQubW06IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJIaXRUZXN0UmVzdWx0OjpEYXRhOjpwbGF0Zm9ybUVuY29kZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHQ6OkRhdGE6OnBsYXRmb3JtRGVjb2RlKToKKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF9kaWRQ
ZXJmb3JtQWN0aW9uTWVudUhpdFRlc3Q6Zm9ySW1tZWRpYXRlQWN0aW9uOmNvbnRlbnRQcmV2ZW50
c0RlZmF1bHQ6dXNlckRhdGE6XSk6CisgICAgICAgICgtW1dLVmlldyBfZGlkUGVyZm9ybUFjdGlv
bk1lbnVIaXRUZXN0OmZvckltbWVkaWF0ZUFjdGlvbjp1c2VyRGF0YTpdKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUFjdGlvbk1lbnVI
aXRUZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZFBlcmZvcm1BY3Rp
b25NZW51SGl0VGVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0FjdGlvbk1lbnVDb250
cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0FjdGlvbk1lbnVDb250cm9sbGVy
Lm1tOgorICAgICAgICAoLVtXS0FjdGlvbk1lbnVDb250cm9sbGVyIHdpbGxEZXN0cm95Vmlldzpd
KToKKyAgICAgICAgKC1bV0tBY3Rpb25NZW51Q29udHJvbGxlciBfY2xlYXJBY3Rpb25NZW51U3Rh
dGVdKToKKyAgICAgICAgKC1bV0tBY3Rpb25NZW51Q29udHJvbGxlciBkaWRQZXJmb3JtQWN0aW9u
TWVudUhpdFRlc3Q6dXNlckRhdGE6XSk6CisgICAgICAgICgtW1dLQWN0aW9uTWVudUNvbnRyb2xs
ZXIgX2hpdFRlc3RSZXN1bHREYXRhSW1hZ2VdKToKKyAgICAgICAgKC1bV0tBY3Rpb25NZW51Q29u
dHJvbGxlciBfZGVmYXVsdE1lbnVJdGVtc0ZvckltYWdlXSk6CisgICAgICAgICgtW1dLQWN0aW9u
TWVudUNvbnRyb2xsZXIgX2NvcHlJbWFnZTpdKToKKyAgICAgICAgKC1bV0tBY3Rpb25NZW51Q29u
dHJvbGxlciBfYWRkSW1hZ2VUb1Bob3RvczpdKToKKyAgICAgICAgKC1bV0tBY3Rpb25NZW51Q29u
dHJvbGxlciBfZGVmYXVsdE1lbnVJdGVtc0ZvckRhdGFEZXRlY3RlZFRleHRdKToKKyAgICAgICAg
KC1bV0tBY3Rpb25NZW51Q29udHJvbGxlciBfZGVmYXVsdE1lbnVJdGVtc0ZvckVkaXRhYmxlVGV4
dFdpdGhTdWdnZXN0aW9uc10pOgorICAgICAgICAoLVtXS0FjdGlvbk1lbnVDb250cm9sbGVyIF9k
ZWZhdWx0TWVudUl0ZW1zRm9yRGF0YURldGVjdGFibGVMaW5rXSk6CisgICAgICAgICgtW1dLQWN0
aW9uTWVudUNvbnRyb2xsZXIgX3dlYkhpdFRlc3RSZXN1bHRdKToKKyAgICAgICAgKC1bV0tBY3Rp
b25NZW51Q29udHJvbGxlciBfZGVmYXVsdE1lbnVJdGVtc10pOgorICAgICAgICAoLVtXS0FjdGlv
bk1lbnVDb250cm9sbGVyIF9oaXRUZXN0UmVzdWx0SW1hZ2VdKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAo
LVtXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgd2lsbERlc3Ryb3lWaWV3Ol0pOgorICAgICAg
ICAoLVtXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgX2NsZWFySW1tZWRpYXRlQWN0aW9uU3Rh
dGVdKToKKyAgICAgICAgKC1bV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIGRpZFBlcmZvcm1B
Y3Rpb25NZW51SGl0VGVzdDpjb250ZW50UHJldmVudHNEZWZhdWx0OnVzZXJEYXRhOl0pOgorICAg
ICAgICAoLVtXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgaW1tZWRpYXRlQWN0aW9uUmVjb2du
aXplckRpZFVwZGF0ZUFuaW1hdGlvbjpdKToKKyAgICAgICAgKC1bV0tJbW1lZGlhdGVBY3Rpb25D
b250cm9sbGVyIF93ZWJIaXRUZXN0UmVzdWx0XSk6CisgICAgICAgICgtW1dLSW1tZWRpYXRlQWN0
aW9uQ29udHJvbGxlciBfZGVmYXVsdEFuaW1hdGlvbkNvbnRyb2xsZXJdKToKKyAgICAgICAgKC1b
V0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF91cGRhdGVJbW1lZGlhdGVBY3Rpb25JdGVtXSk6
CisgICAgICAgICgtW1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfbWVudUl0ZW1Gb3JEYXRh
RGV0ZWN0ZWRUZXh0XSk6CisgICAgICAgICgtW1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBf
YW5pbWF0aW9uQ29udHJvbGxlckZvclRleHRdKToKKyAgICAgICAgKC1bV0tJbW1lZGlhdGVBY3Rp
b25Db250cm9sbGVyIGRpZFBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdDp1c2VyRGF0YTpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpwZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdExvY2F0aW9uKToKKwogMjAx
NS0wNC0wNiAgxb1hbiBEb2JlcsWhZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbV0syXSBBUEk6OkFycmF5Ojpjb3B5KCkgc2hvdWxkIG1vdmUgdGhlIHJlc3VsdGluZyBWZWN0
b3I8PiBvZiBjb3BpZXMgaW50byB0aGUgQXJyYXk6OmNyZWF0ZSgpIGNhbGwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0LmNwcAppbmRleCA1MGQwNWVkLi41ZmE0ZjZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuY3BwCkBAIC01OCw2ICs1
OCw3IEBAIFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGE6OkRhdGEoY29uc3QgSGl0VGVzdFJlc3VsdCYg
aGl0VGVzdFJlc3VsdCkKICAgICAsIGlzT3ZlclRleHRJbnNpZGVGb3JtQ29udHJvbEVsZW1lbnQo
aGl0VGVzdFJlc3VsdC5pc092ZXJUZXh0SW5zaWRlRm9ybUNvbnRyb2xFbGVtZW50KCkpCiAgICAg
LCBhbGxvd3NDb3B5KGhpdFRlc3RSZXN1bHQuYWxsb3dzQ29weSgpKQogICAgICwgaXNEb3dubG9h
ZGFibGVNZWRpYShoaXRUZXN0UmVzdWx0LmlzRG93bmxvYWRhYmxlTWVkaWEoKSkKKyAgICAsIGlt
YWdlU2l6ZSgwKQogewogfQogCkBAIC04MSw2ICs4MiwyMyBAQCB2b2lkIFdlYkhpdFRlc3RSZXN1
bHQ6OkRhdGE6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAg
ICBlbmNvZGVyIDw8IGlzT3ZlclRleHRJbnNpZGVGb3JtQ29udHJvbEVsZW1lbnQ7CiAgICAgZW5j
b2RlciA8PCBhbGxvd3NDb3B5OwogICAgIGVuY29kZXIgPDwgaXNEb3dubG9hZGFibGVNZWRpYTsK
KyAgICBlbmNvZGVyIDw8IGhpdFRlc3RMb2NhdGlvbkluVmlld0Nvb29yZGluYXRlczsKKyAgICBl
bmNvZGVyIDw8IGxvb2t1cFRleHQ7CisgICAgZW5jb2RlciA8PCBkaWN0aW9uYXJ5UG9wdXBJbmZv
OworCisgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaW1hZ2VIYW5kbGU7CisgICAgaWYgKGltYWdl
U2hhcmVkTWVtb3J5ICYmIGltYWdlU2hhcmVkTWVtb3J5LT5kYXRhKCkpCisgICAgICAgIGltYWdl
U2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaW1hZ2VIYW5kbGUsIFNoYXJlZE1lbW9yeTo6UmVh
ZE9ubHkpOworICAgIGVuY29kZXIgPDwgaW1hZ2VIYW5kbGU7CisgICAgZW5jb2RlciA8PCBpbWFn
ZVNpemU7CisgICAgZW5jb2RlciA8PCBpbWFnZUV4dGVuc2lvbjsKKworICAgIGJvb2wgaGFzTGlu
a1RleHRJbmRpY2F0b3IgPSBsaW5rVGV4dEluZGljYXRvcjsKKyAgICBlbmNvZGVyIDw8IGhhc0xp
bmtUZXh0SW5kaWNhdG9yOworICAgIGlmIChoYXNMaW5rVGV4dEluZGljYXRvcikKKyAgICAgICAg
ZW5jb2RlciA8PCBsaW5rVGV4dEluZGljYXRvci0+ZGF0YSgpOworCisgICAgcGxhdGZvcm1FbmNv
ZGUoZW5jb2Rlcik7CiB9CiAKIGJvb2wgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YTo6ZGVjb2RlKElQ
Qzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiBoaXRU
ZXN0UmVzdWx0RGF0YSkKQEAgLTk4LDExICsxMTYsNTAgQEAgYm9vbCBXZWJIaXRUZXN0UmVzdWx0
OjpEYXRhOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFdlYkhpdFRlc3RS
ZXMKICAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKGhpdFRlc3RSZXN1bHREYXRhLmlzVGV4dE5v
ZGUpCiAgICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZShoaXRUZXN0UmVzdWx0RGF0YS5pc092ZXJU
ZXh0SW5zaWRlRm9ybUNvbnRyb2xFbGVtZW50KQogICAgICAgICB8fCAhZGVjb2Rlci5kZWNvZGUo
aGl0VGVzdFJlc3VsdERhdGEuYWxsb3dzQ29weSkKLSAgICAgICAgfHwgIWRlY29kZXIuZGVjb2Rl
KGhpdFRlc3RSZXN1bHREYXRhLmlzRG93bmxvYWRhYmxlTWVkaWEpKQorICAgICAgICB8fCAhZGVj
b2Rlci5kZWNvZGUoaGl0VGVzdFJlc3VsdERhdGEuaXNEb3dubG9hZGFibGVNZWRpYSkKKyAgICAg
ICAgfHwgIWRlY29kZXIuZGVjb2RlKGhpdFRlc3RSZXN1bHREYXRhLmhpdFRlc3RMb2NhdGlvbklu
Vmlld0Nvb29yZGluYXRlcykKKyAgICAgICAgfHwgIWRlY29kZXIuZGVjb2RlKGhpdFRlc3RSZXN1
bHREYXRhLmxvb2t1cFRleHQpCisgICAgICAgIHx8ICFkZWNvZGVyLmRlY29kZShoaXRUZXN0UmVz
dWx0RGF0YS5kaWN0aW9uYXJ5UG9wdXBJbmZvKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisg
ICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaW1hZ2VIYW5kbGU7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShpbWFnZUhhbmRsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghaW1h
Z2VIYW5kbGUuaXNOdWxsKCkpCisgICAgICAgIGhpdFRlc3RSZXN1bHREYXRhLmltYWdlU2hhcmVk
TWVtb3J5ID0gU2hhcmVkTWVtb3J5OjpjcmVhdGUoaW1hZ2VIYW5kbGUsIFNoYXJlZE1lbW9yeTo6
UmVhZE9ubHkpOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoaXRUZXN0UmVzdWx0RGF0YS5p
bWFnZVNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGhpdFRlc3RSZXN1bHREYXRhLmltYWdlRXh0ZW5zaW9uKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgYm9vbCBoYXNMaW5rVGV4dEluZGljYXRvcjsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGhhc0xpbmtUZXh0SW5kaWNhdG9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKGhhc0xpbmtUZXh0SW5kaWNhdG9yKSB7CisgICAgICAgIFdlYkNvcmU6OlRleHRJbmRp
Y2F0b3JEYXRhIGluZGljYXRvckRhdGE7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5k
aWNhdG9yRGF0YSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaGl0VGVz
dFJlc3VsdERhdGEubGlua1RleHRJbmRpY2F0b3IgPSBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yOjpj
cmVhdGUoaW5kaWNhdG9yRGF0YSk7CisgICAgfQorCisgICAgcmV0dXJuIHBsYXRmb3JtRGVjb2Rl
KGRlY29kZXIsIGhpdFRlc3RSZXN1bHREYXRhKTsKK30KKworI2lmICFQTEFURk9STShNQUMpCit2
b2lkIFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGE6OnBsYXRmb3JtRW5jb2RlKElQQzo6QXJndW1lbnRF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworfQorCitib29sIFdlYkhpdFRlc3RSZXN1bHQ6OkRh
dGE6OnBsYXRmb3JtRGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBXZWJIaXRU
ZXN0UmVzdWx0OjpEYXRhJiBoaXRUZXN0UmVzdWx0RGF0YSkKK3sKICAgICByZXR1cm4gdHJ1ZTsK
IH0KKyNlbmRpZiAvLyAhUExBVEZPUk0oTUFDKQogCiBJbnRSZWN0IFdlYkhpdFRlc3RSZXN1bHQ6
OkRhdGE6OmVsZW1lbnRCb3VuZGluZ0JveEluV2luZG93Q29vcmRpbmF0ZXMoY29uc3QgSGl0VGVz
dFJlc3VsdCYgaGl0VGVzdFJlc3VsdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJIaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVz
dFJlc3VsdC5oCmluZGV4IDg2M2VkOTQuLmQ4NTdlM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkhpdFRlc3RSZXN1bHQuaApAQCAtMjEsMTIgKzIxLDE4IEBACiAjZGVmaW5lIFdlYkhpdFRl
c3RSZXN1bHRfaAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiRGljdGlvbmFy
eVBvcHVwSW5mby5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvRmxvYXRQb2ludC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZU92ZXJsYXkuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCitPQkpDX0NMQVNTIEREQWN0aW9uQ29udGV4dDsKKwog
bmFtZXNwYWNlIElQQyB7CiBjbGFzcyBBcmd1bWVudERlY29kZXI7CiBjbGFzcyBBcmd1bWVudEVu
Y29kZXI7CkBAIC01OCwxMiArNjQsMzIgQEAgcHVibGljOgogICAgICAgICBib29sIGFsbG93c0Nv
cHk7CiAgICAgICAgIGJvb2wgaXNEb3dubG9hZGFibGVNZWRpYTsKIAorICAgICAgICAvLyBGSVhN
RTogQWRkZWQgZnJvbSBBY3Rpb25IaXRUZXN0UmVzdWx0LiBBbGwgbWFrZSBzZW5zZT8KKyAgICAg
ICAgV2ViQ29yZTo6RmxvYXRQb2ludCBoaXRUZXN0TG9jYXRpb25JblZpZXdDb29vcmRpbmF0ZXM7
CisgICAgICAgIFN0cmluZyBsb29rdXBUZXh0OworICAgICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5
PiBpbWFnZVNoYXJlZE1lbW9yeTsKKyAgICAgICAgdWludDY0X3QgaW1hZ2VTaXplOworICAgICAg
ICBTdHJpbmcgaW1hZ2VFeHRlbnNpb247CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIFJl
dGFpblB0cjxEREFjdGlvbkNvbnRleHQ+IGRldGVjdGVkRGF0YUFjdGlvbkNvbnRleHQ7CisjZW5k
aWYKKyAgICAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGRldGVjdGVkRGF0YUJvdW5kaW5nQm94Owor
ICAgICAgICBSZWZQdHI8V2ViQ29yZTo6VGV4dEluZGljYXRvcj4gZGV0ZWN0ZWREYXRhVGV4dElu
ZGljYXRvcjsKKyAgICAgICAgV2ViQ29yZTo6UGFnZU92ZXJsYXk6OlBhZ2VPdmVybGF5SUQgZGV0
ZWN0ZWREYXRhT3JpZ2luYXRpbmdQYWdlT3ZlcmxheTsKKworICAgICAgICBEaWN0aW9uYXJ5UG9w
dXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm87CisKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlRl
eHRJbmRpY2F0b3I+IGxpbmtUZXh0SW5kaWNhdG9yOworCiAgICAgICAgIERhdGEoKTsKICAgICAg
ICAgZXhwbGljaXQgRGF0YShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Jik7CiAgICAgICAg
IH5EYXRhKCk7CiAKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImKSBj
b25zdDsKKyAgICAgICAgdm9pZCBwbGF0Zm9ybUVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYp
IGNvbnN0OwogICAgICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXIm
LCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJik7CisgICAgICAgIHN0YXRpYyBib29sIHBsYXRmb3Jt
RGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiwgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYpOwog
CiAgICAgICAgIFdlYkNvcmU6OkludFJlY3QgZWxlbWVudEJvdW5kaW5nQm94SW5XaW5kb3dDb29y
ZGluYXRlcyhjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Jik7CiAgICAgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQWN0aW9uTWVudUhpdFRlc3RSZXN1bHQuaCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQWN0aW9uTWVudUhpdFRlc3RSZXN1bHQuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNjYWI4Yi4uMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL0FjdGlvbk1lbnVIaXRUZXN0UmVzdWx0LmgKKysrIC9kZXYvbnVs
bApAQCAtMSw3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBBY3Rpb25NZW51SGl0VGVz
dFJlc3VsdF9oCi0jZGVmaW5lIEFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0X2gKLQotI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJEaWN0aW9uYXJ5UG9wdXBJbmZvLmgiCi0jaW5j
bHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCi0jaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCi0jaW5j
bHVkZSAiV2ViSGl0VGVzdFJlc3VsdC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9QYWdlT3ZlcmxheS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVGV4
dEluZGljYXRvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1PQkpDX0NM
QVNTIEREQWN0aW9uQ29udGV4dDsKLQotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBBcmd1bWVudERl
Y29kZXI7Ci1jbGFzcyBBcmd1bWVudEVuY29kZXI7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1zdHJ1Y3QgQWN0aW9uTWVudUhpdFRlc3RSZXN1bHQgewotICAgIHZvaWQgZW5jb2RlKElQQzo6
QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6QXJn
dW1lbnREZWNvZGVyJiwgQWN0aW9uTWVudUhpdFRlc3RSZXN1bHQmKTsKLQotICAgIFdlYkNvcmU6
OkZsb2F0UG9pbnQgaGl0VGVzdExvY2F0aW9uSW5WaWV3Q29vb3JkaW5hdGVzOwotICAgIFdlYkhp
dFRlc3RSZXN1bHQ6OkRhdGEgaGl0VGVzdFJlc3VsdDsKLQotICAgIFN0cmluZyBsb29rdXBUZXh0
OwotICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGltYWdlU2hhcmVkTWVtb3J5OwotICAgIHVpbnQ2
NF90IGltYWdlU2l6ZTsKLSAgICBTdHJpbmcgaW1hZ2VFeHRlbnNpb247Ci0KLSAgICBSZXRhaW5Q
dHI8RERBY3Rpb25Db250ZXh0PiBhY3Rpb25Db250ZXh0OwotICAgIFdlYkNvcmU6OkZsb2F0UmVj
dCBkZXRlY3RlZERhdGFCb3VuZGluZ0JveDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6VGV4dEluZGlj
YXRvcj4gZGV0ZWN0ZWREYXRhVGV4dEluZGljYXRvcjsKLSAgICBXZWJDb3JlOjpQYWdlT3Zlcmxh
eTo6UGFnZU92ZXJsYXlJRCBkZXRlY3RlZERhdGFPcmlnaW5hdGluZ1BhZ2VPdmVybGF5OwotCi0g
ICAgRGljdGlvbmFyeVBvcHVwSW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZvOwotCi0gICAgUmVmUHRy
PFdlYkNvcmU6OlRleHRJbmRpY2F0b3I+IGxpbmtUZXh0SW5kaWNhdG9yOwotCi0gICAgYm9vbCBj
b250ZW50UHJldmVudHNEZWZhdWx0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBBY3Rpb25NZW51SGl0VGVzdFJlc3VsdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL0FjdGlvbk1lbnVIaXRUZXN0UmVzdWx0Lm1tIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL21hYy9BY3Rpb25NZW51SGl0VGVzdFJlc3VsdC5tbQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMTFhNTk1NC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL0FjdGlvbk1lbnVIaXRUZXN0UmVzdWx0Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTY5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkFjdGlv
bk1lbnVIaXRUZXN0UmVzdWx0LmgiCi0KLSNpZiBQTEFURk9STShNQUMpCi0KLSNpbXBvcnQgIkFy
Z3VtZW50Q29kZXJzQ0YuaCIKLSNpbXBvcnQgIkFyZ3VtZW50RGVjb2Rlci5oIgotI2ltcG9ydCAi
QXJndW1lbnRFbmNvZGVyLmgiCi0jaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLSNp
bXBvcnQgPFdlYkNvcmUvRGF0YURldGVjdG9yc1NQSS5oPgotI2ltcG9ydCA8V2ViQ29yZS9UZXh0
SW5kaWNhdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIEFjdGlvbk1lbnVIaXRU
ZXN0UmVzdWx0OjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17
Ci0gICAgZW5jb2RlciA8PCBoaXRUZXN0TG9jYXRpb25JblZpZXdDb29vcmRpbmF0ZXM7Ci0gICAg
ZW5jb2RlciA8PCBoaXRUZXN0UmVzdWx0OwotICAgIGVuY29kZXIgPDwgbG9va3VwVGV4dDsKLSAg
ICBlbmNvZGVyIDw8IGltYWdlRXh0ZW5zaW9uOwotCi0gICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUg
aW1hZ2VIYW5kbGU7Ci0gICAgaWYgKGltYWdlU2hhcmVkTWVtb3J5ICYmIGltYWdlU2hhcmVkTWVt
b3J5LT5kYXRhKCkpCi0gICAgICAgIGltYWdlU2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaW1h
Z2VIYW5kbGUsIFNoYXJlZE1lbW9yeTo6UmVhZE9ubHkpOwotICAgIGVuY29kZXIgPDwgaW1hZ2VI
YW5kbGU7Ci0gICAgZW5jb2RlciA8PCBpbWFnZVNpemU7Ci0KLSAgICBib29sIGhhc0FjdGlvbkNv
bnRleHQgPSBhY3Rpb25Db250ZXh0OwotICAgIGVuY29kZXIgPDwgaGFzQWN0aW9uQ29udGV4dDsK
LSAgICBpZiAoaGFzQWN0aW9uQ29udGV4dCkgewotICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
RGF0YT4gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7Ci0gICAg
ICAgIFJldGFpblB0cjxOU0tleWVkQXJjaGl2ZXI+IGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5
ZWRBcmNoaXZlciBhbGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0YS5nZXQo
KV0pOwotICAgICAgICBbYXJjaGl2ZXIgc2V0UmVxdWlyZXNTZWN1cmVDb2Rpbmc6WUVTXTsKLSAg
ICAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDphY3Rpb25Db250ZXh0LmdldCgpIGZvcktleTpA
ImFjdGlvbkNvbnRleHQiXTsKLSAgICAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKLQot
ICAgICAgICBJUEM6OmVuY29kZShlbmNvZGVyLCByZWludGVycHJldF9jYXN0PENGRGF0YVJlZj4o
ZGF0YS5nZXQoKSkpOwotCi0gICAgICAgIGVuY29kZXIgPDwgZGV0ZWN0ZWREYXRhQm91bmRpbmdC
b3g7Ci0gICAgICAgIGVuY29kZXIgPDwgZGV0ZWN0ZWREYXRhT3JpZ2luYXRpbmdQYWdlT3Zlcmxh
eTsKLQotICAgICAgICBib29sIGhhc0RldGVjdGVkRGF0YVRleHRJbmRpY2F0b3IgPSBkZXRlY3Rl
ZERhdGFUZXh0SW5kaWNhdG9yOwotICAgICAgICBlbmNvZGVyIDw8IGhhc0RldGVjdGVkRGF0YVRl
eHRJbmRpY2F0b3I7Ci0gICAgICAgIGlmIChoYXNEZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yKQot
ICAgICAgICAgICAgZW5jb2RlciA8PCBkZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yLT5kYXRhKCk7
Ci0gICAgfQotCi0gICAgZW5jb2RlciA8PCBkaWN0aW9uYXJ5UG9wdXBJbmZvOwotCi0gICAgYm9v
bCBoYXNMaW5rVGV4dEluZGljYXRvciA9IGxpbmtUZXh0SW5kaWNhdG9yOwotICAgIGVuY29kZXIg
PDwgaGFzTGlua1RleHRJbmRpY2F0b3I7Ci0gICAgaWYgKGhhc0xpbmtUZXh0SW5kaWNhdG9yKQot
ICAgICAgICBlbmNvZGVyIDw8IGxpbmtUZXh0SW5kaWNhdG9yLT5kYXRhKCk7Ci0KLSAgICBlbmNv
ZGVyIDw8IGNvbnRlbnRQcmV2ZW50c0RlZmF1bHQ7Ci19Ci0KLWJvb2wgQWN0aW9uTWVudUhpdFRl
c3RSZXN1bHQ6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgQWN0aW9uTWVu
dUhpdFRlc3RSZXN1bHQmIGFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0KQotewotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoYWN0aW9uTWVudUhpdFRlc3RSZXN1bHQuaGl0VGVzdExvY2F0aW9uSW5WaWV3
Q29vb3JkaW5hdGVzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShhY3Rpb25NZW51SGl0VGVzdFJlc3VsdC5oaXRUZXN0UmVzdWx0KSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3Rpb25NZW51SGl0VGVz
dFJlc3VsdC5sb29rdXBUZXh0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhY3Rpb25NZW51SGl0VGVzdFJlc3VsdC5pbWFnZUV4dGVuc2lvbikpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGltYWdlSGFu
ZGxlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW1hZ2VIYW5kbGUpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWltYWdlSGFuZGxlLmlzTnVsbCgpKQotICAgICAgICBhY3Rp
b25NZW51SGl0VGVzdFJlc3VsdC5pbWFnZVNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6Y3Jl
YXRlKGltYWdlSGFuZGxlLCBTaGFyZWRNZW1vcnk6OlJlYWRPbmx5KTsKLQotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoYWN0aW9uTWVudUhpdFRlc3RSZXN1bHQuaW1hZ2VTaXplKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgYm9vbCBoYXNBY3Rpb25Db250ZXh0OwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaGFzQWN0aW9uQ29udGV4dCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIGlmIChoYXNBY3Rpb25Db250ZXh0KSB7Ci0gICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+
IGRhdGE7Ci0gICAgICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGF0YSkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgUmV0YWluUHRyPE5TS2V5ZWRVbmFyY2hpdmVy
PiB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9y
UmVhZGluZ1dpdGhEYXRhOihOU0RhdGEgKilkYXRhLmdldCgpXSk7Ci0gICAgICAgIFt1bmFyY2hp
dmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107Ci0gICAgICAgIEB0cnkgewotICAgICAg
ICAgICAgYWN0aW9uTWVudUhpdFRlc3RSZXN1bHQuYWN0aW9uQ29udGV4dCA9IFt1bmFyY2hpdmVy
IGRlY29kZU9iamVjdE9mQ2xhc3M6Z2V0RERBY3Rpb25Db250ZXh0Q2xhc3MoKSBmb3JLZXk6QCJh
Y3Rpb25Db250ZXh0Il07Ci0gICAgICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9u
KSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgRERBY3Rpb25Db250
ZXh0OiAlQCIsIGV4Y2VwdGlvbik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKLQotICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0LmRldGVjdGVk
RGF0YUJvdW5kaW5nQm94KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0LmRldGVjdGVkRGF0YU9y
aWdpbmF0aW5nUGFnZU92ZXJsYXkpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
ICAgIGJvb2wgaGFzRGV0ZWN0ZWREYXRhVGV4dEluZGljYXRvcjsKLSAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShoYXNEZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgICAgICBpZiAoaGFzRGV0ZWN0ZWREYXRhVGV4dEluZGljYXRvcikg
ewotICAgICAgICAgICAgV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEgaW5kaWNhdG9yRGF0YTsK
LSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5kaWNhdG9yRGF0YSkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBhY3Rpb25NZW51SGl0VGVzdFJl
c3VsdC5kZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yID0gV2ViQ29yZTo6VGV4dEluZGljYXRvcjo6
Y3JlYXRlKGluZGljYXRvckRhdGEpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShhY3Rpb25NZW51SGl0VGVzdFJlc3VsdC5kaWN0aW9uYXJ5UG9wdXBJbmZvKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYm9vbCBoYXNMaW5rVGV4dEluZGljYXRvcjsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0xpbmtUZXh0SW5kaWNhdG9yKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGhhc0xpbmtUZXh0SW5kaWNhdG9yKSB7Ci0gICAgICAg
IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhIGluZGljYXRvckRhdGE7Ci0gICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaW5kaWNhdG9yRGF0YSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgYWN0aW9uTWVudUhpdFRlc3RSZXN1bHQubGlua1RleHRJbmRpY2F0b3IgPSBX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yOjpjcmVhdGUoaW5kaWNhdG9yRGF0YSk7Ci0gICAgfQotCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3Rpb25NZW51SGl0VGVzdFJlc3VsdC5jb250ZW50UHJl
dmVudHNEZWZhdWx0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFBMQVRGT1JNKE1B
QykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3Vs
dC5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdC5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzE0OWVmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJIaXRUZXN0UmVzdWx0Lm1tCkBAIC0wLDAg
KzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJI
aXRUZXN0UmVzdWx0LmgiCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgIkFyZ3VtZW50
Q29kZXJzQ0YuaCIKKyNpbXBvcnQgIkFyZ3VtZW50RGVjb2Rlci5oIgorI2ltcG9ydCAiQXJndW1l
bnRFbmNvZGVyLmgiCisjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbXBvcnQg
PFdlYkNvcmUvRGF0YURldGVjdG9yc1NQSS5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNh
dG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYkhpdFRlc3RSZXN1bHQ6OkRh
dGE6OnBsYXRmb3JtRW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAor
eworICAgIGJvb2wgaGFzQWN0aW9uQ29udGV4dCA9IGRldGVjdGVkRGF0YUFjdGlvbkNvbnRleHQ7
CisgICAgZW5jb2RlciA8PCBoYXNBY3Rpb25Db250ZXh0OworICAgIGlmICghaGFzQWN0aW9uQ29u
dGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURhdGE+IGRh
dGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0
cjxOU0tleWVkQXJjaGl2ZXI+IGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBh
bGxvY10gaW5pdEZvcldyaXRpbmdXaXRoTXV0YWJsZURhdGE6ZGF0YS5nZXQoKV0pOworICAgIFth
cmNoaXZlciBzZXRSZXF1aXJlc1NlY3VyZUNvZGluZzpZRVNdOworICAgIFthcmNoaXZlciBlbmNv
ZGVPYmplY3Q6ZGV0ZWN0ZWREYXRhQWN0aW9uQ29udGV4dC5nZXQoKSBmb3JLZXk6QCJhY3Rpb25D
b250ZXh0Il07CisgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5nXTsKKworICAgIElQQzo6ZW5j
b2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihkYXRhLmdldCgpKSk7CisK
KyAgICBlbmNvZGVyIDw8IGRldGVjdGVkRGF0YUJvdW5kaW5nQm94OworICAgIGVuY29kZXIgPDwg
ZGV0ZWN0ZWREYXRhT3JpZ2luYXRpbmdQYWdlT3ZlcmxheTsKKworICAgIGJvb2wgaGFzRGV0ZWN0
ZWREYXRhVGV4dEluZGljYXRvciA9IGRldGVjdGVkRGF0YVRleHRJbmRpY2F0b3I7CisgICAgZW5j
b2RlciA8PCBoYXNEZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yOworICAgIGlmIChoYXNEZXRlY3Rl
ZERhdGFUZXh0SW5kaWNhdG9yKQorICAgICAgICBlbmNvZGVyIDw8IGRldGVjdGVkRGF0YVRleHRJ
bmRpY2F0b3ItPmRhdGEoKTsKK30KKworYm9vbCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhOjpwbGF0
Zm9ybURlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2ViSGl0VGVzdFJlc3Vs
dDo6RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEpCit7CisgICAgYm9vbCBoYXNBY3Rpb25Db250ZXh0
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQWN0aW9uQ29udGV4dCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmICghaGFzQWN0aW9uQ29udGV4dCkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOworICAgIGlmICghSVBDOjpk
ZWNvZGUoZGVjb2RlciwgZGF0YSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJldGFp
blB0cjxOU0tleWVkVW5hcmNoaXZlcj4gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5h
cmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdXaXRoRGF0YTooTlNEYXRhICopZGF0YS5nZXQo
KV0pOworICAgIFt1bmFyY2hpdmVyIHNldFJlcXVpcmVzU2VjdXJlQ29kaW5nOllFU107CisgICAg
QHRyeSB7CisgICAgICAgIGhpdFRlc3RSZXN1bHREYXRhLmRldGVjdGVkRGF0YUFjdGlvbkNvbnRl
eHQgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldEREQWN0aW9uQ29udGV4dENs
YXNzKCkgZm9yS2V5OkAiYWN0aW9uQ29udGV4dCJdOworICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlv
biAqZXhjZXB0aW9uKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlY29kZSBEREFj
dGlvbkNvbnRleHQ6ICVAIiwgZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICAKKyAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107CisKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGhpdFRlc3RSZXN1bHREYXRhLmRldGVjdGVkRGF0YUJvdW5kaW5nQm94KSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoaXRUZXN0
UmVzdWx0RGF0YS5kZXRlY3RlZERhdGFPcmlnaW5hdGluZ1BhZ2VPdmVybGF5KSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBoYXNEZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yOwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzRGV0ZWN0ZWREYXRhVGV4dEluZGljYXRvcikpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChoYXNEZXRlY3RlZERhdGFUZXh0SW5kaWNh
dG9yKSB7CisgICAgICAgIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhIGluZGljYXRvckRhdGE7
CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5kaWNhdG9yRGF0YSkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaGl0VGVzdFJlc3VsdERhdGEuZGV0ZWN0ZWREYXRh
VGV4dEluZGljYXRvciA9IFdlYkNvcmU6OlRleHRJbmRpY2F0b3I6OmNyZWF0ZShpbmRpY2F0b3JE
YXRhKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0KaW5kZXggYTU2ZGVlMS4uYTc1NTczNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtMzUsNyArMzUsNiBAQAogCiAjaW1w
b3J0ICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgogI2ltcG9ydCAiQVBJUGFnZUNv
bmZpZ3VyYXRpb24uaCIKLSNpbXBvcnQgIkFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0LmgiCiAjaW1w
b3J0ICJBdHRyaWJ1dGVkU3RyaW5nLmgiCiAjaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2lt
cG9ydCAiRGF0YVJlZmVyZW5jZS5oIgpAQCAtNjgsNiArNjcsNyBAQAogI2ltcG9ydCAiV0tWaWV3
UHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCiAjaW1wb3J0ICJXZWJF
dmVudEZhY3RvcnkuaCIKKyNpbXBvcnQgIldlYkhpdFRlc3RSZXN1bHQuaCIKICNpbXBvcnQgIldl
Ykluc3BlY3RvclByb3h5LmgiCiAjaW1wb3J0ICJXZWJLaXQySW5pdGlhbGl6ZS5oIgogI2ltcG9y
dCAiV2ViUGFnZS5oIgpAQCAtMzkzMSwxMCArMzkzMSwxMCBAQCBzdGF0aWMgTlNTdHJpbmcgKnBh
dGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoKE5TU3RyaW5nICpwYXRoKQogICAgIFtfZGF0YS0+
X2FjdGlvbk1lbnVDb250cm9sbGVyIGRpZENsb3NlTWVudTptZW51IHdpdGhFdmVudDpldmVudF07
CiB9CiAKLS0gKHZvaWQpX2RpZFBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdDooY29uc3QgQWN0aW9u
TWVudUhpdFRlc3RSZXN1bHQmKWhpdFRlc3RSZXN1bHQgZm9ySW1tZWRpYXRlQWN0aW9uOihCT09M
KWZvckltbWVkaWF0ZUFjdGlvbiB1c2VyRGF0YTooQVBJOjpPYmplY3QqKXVzZXJEYXRhCistICh2
b2lkKV9kaWRQZXJmb3JtQWN0aW9uTWVudUhpdFRlc3Q6KGNvbnN0IFdlYkhpdFRlc3RSZXN1bHQ6
OkRhdGEmKWhpdFRlc3RSZXN1bHQgZm9ySW1tZWRpYXRlQWN0aW9uOihCT09MKWZvckltbWVkaWF0
ZUFjdGlvbiBjb250ZW50UHJldmVudHNEZWZhdWx0OihCT09MKWNvbnRlbnRQcmV2ZW50c0RlZmF1
bHQgdXNlckRhdGE6KEFQSTo6T2JqZWN0Kil1c2VyRGF0YQogewogICAgIGlmIChmb3JJbW1lZGlh
dGVBY3Rpb24pCi0gICAgICAgIFtfZGF0YS0+X2ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgZGlk
UGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0OmhpdFRlc3RSZXN1bHQgdXNlckRhdGE6dXNlckRhdGFd
OworICAgICAgICBbX2RhdGEtPl9pbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIGRpZFBlcmZvcm1B
Y3Rpb25NZW51SGl0VGVzdDpoaXRUZXN0UmVzdWx0IGNvbnRlbnRQcmV2ZW50c0RlZmF1bHQ6Y29u
dGVudFByZXZlbnRzRGVmYXVsdCB1c2VyRGF0YTp1c2VyRGF0YV07CiAgICAgZWxzZQogICAgICAg
ICBbX2RhdGEtPl9hY3Rpb25NZW51Q29udHJvbGxlciBkaWRQZXJmb3JtQWN0aW9uTWVudUhpdFRl
c3Q6aGl0VGVzdFJlc3VsdCB1c2VyRGF0YTp1c2VyRGF0YV07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAppbmRleCBjN2ExZWE4Li5l
NTNkOTE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXdJbnRlcm5hbC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJQbHVnaW5Db21wbGV4VGV4
dElucHV0U3RhdGUuaCIKICNpbXBvcnQgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgiCiAj
aW1wb3J0ICJXZWJGaW5kT3B0aW9ucy5oIgorI2ltcG9ydCAiV2ViSGl0VGVzdFJlc3VsdC5oIgog
I2ltcG9ydCA8d3RmL0ZvcndhcmQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBv
cnQgPHd0Zi9WZWN0b3IuaD4KQEAgLTU1LDcgKzU2LDYgQEAgY2xhc3MgRHJhd2luZ0FyZWFQcm94
eTsKIGNsYXNzIExheWVyVHJlZUNvbnRleHQ7CiBjbGFzcyBWaWV3U25hcHNob3Q7CiBjbGFzcyBX
ZWJQcm9jZXNzUG9vbDsKLXN0cnVjdCBBY3Rpb25NZW51SGl0VGVzdFJlc3VsdDsKIHN0cnVjdCBD
b2xvclNwYWNlRGF0YTsKIHN0cnVjdCBFZGl0b3JTdGF0ZTsKIHN0cnVjdCBXZWJQYWdlQ29uZmln
dXJhdGlvbjsKQEAgLTE0MCw3ICsxNDAsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247
CiAtICh2b2lkKV9jbG9zZUZ1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyOwogCiAjaWYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDAKLS0gKHZvaWQpX2RpZFBlcmZvcm1B
Y3Rpb25NZW51SGl0VGVzdDooY29uc3QgV2ViS2l0OjpBY3Rpb25NZW51SGl0VGVzdFJlc3VsdCYp
aGl0VGVzdFJlc3VsdCBmb3JJbW1lZGlhdGVBY3Rpb246KEJPT0wpZm9ySW1tZWRpYXRlQWN0aW9u
IHVzZXJEYXRhOihBUEk6Ok9iamVjdCopdXNlckRhdGE7CistICh2b2lkKV9kaWRQZXJmb3JtQWN0
aW9uTWVudUhpdFRlc3Q6KGNvbnN0IFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYpaGl0
VGVzdFJlc3VsdCBmb3JJbW1lZGlhdGVBY3Rpb246KEJPT0wpZm9ySW1tZWRpYXRlQWN0aW9uIGNv
bnRlbnRQcmV2ZW50c0RlZmF1bHQ6KEJPT0wpY29udGVudFByZXZlbnRzRGVmYXVsdCB1c2VyRGF0
YTooQVBJOjpPYmplY3QqKXVzZXJEYXRhOwogI2VuZGlmCiAKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZXRhaW4sIHNldHRlcj1fc2V0UHJpbWFyeVRyYWNraW5nQXJlYTopIE5TVHJhY2tpbmdBcmVh
ICpfcHJpbWFyeVRyYWNraW5nQXJlYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CmluZGV4IDg2MDY4MTYuLmU3NThmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaApAQCAtNjUsNyArNjUsNiBAQCBjbGFzcyBWaWV3U25hcHNob3Q7CiBjbGFzcyBXZWJDb250
ZXh0TWVudVByb3h5OwogY2xhc3MgV2ViRWRpdENvbW1hbmRQcm94eTsKIGNsYXNzIFdlYlBvcHVw
TWVudVByb3h5Owotc3RydWN0IEFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0OwogCiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKIGNsYXNzIE5hdGl2ZVdlYlRvdWNoRXZlbnQ7CkBAIC0zMjIsNyArMzIx
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VCYWNrZ3JvdW5kQ29sb3Io
KSA9IDA7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1B
Y3Rpb25NZW51SGl0VGVzdChjb25zdCBBY3Rpb25NZW51SGl0VGVzdFJlc3VsdCYsIGJvb2wgZm9y
SW1tZWRpYXRlQWN0aW9uLCBBUEk6Ok9iamVjdCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0KGNvbnN0IFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEmLCBi
b29sIGZvckltbWVkaWF0ZUFjdGlvbiwgYm9vbCBjb250ZW50UHJldmVudHNEZWZhdWx0LCBBUEk6
Ok9iamVjdCopID0gMDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkgJiYgIVBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggMzUyMjA5Yy4uMjc1NTFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTU2NDUsOSArNTY0NSw5IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjppbW1lZGlhdGVBY3Rpb25EaWRDb21wbGV0ZSgpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpJbW1lZGlhdGVBY3Rpb25EaWRDb21wbGV0ZSgpLCBtX3BhZ2VJRCk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtQWN0aW9uTWVudUhpdFRlc3QoY29u
c3QgQWN0aW9uTWVudUhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgYm9vbCBmb3JJbW1lZGlhdGVBY3Rp
b24sIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJm
b3JtQWN0aW9uTWVudUhpdFRlc3QoY29uc3QgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYgcmVzdWx0
LCBib29sIGZvckltbWVkaWF0ZUFjdGlvbiwgYm9vbCBjb250ZW50UHJldmVudHNEZWZhdWx0LCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgbV9wYWdlQ2xpZW50LmRpZFBlcmZvcm1B
Y3Rpb25NZW51SGl0VGVzdChyZXN1bHQsIGZvckltbWVkaWF0ZUFjdGlvbiwgbV9wcm9jZXNzLT50
cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAg
bV9wYWdlQ2xpZW50LmRpZFBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdChyZXN1bHQsIGZvckltbWVk
aWF0ZUFjdGlvbiwgY29udGVudFByZXZlbnRzRGVmYXVsdCwgbV9wcm9jZXNzLT50cmFuc2Zvcm1I
YW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjppbnN0YWxsVmlld1N0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIodm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDk2MzBlMWQuLjdkMTEwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTE5MCw3ICsxOTAsNiBAQCBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiBj
bGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKIGNsYXNzIFdlYldoZWVsRXZlbnQ7
CiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwotc3RydWN0IEFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0
Owogc3RydWN0IEF0dHJpYnV0ZWRTdHJpbmc7CiBzdHJ1Y3QgQ29sb3JTcGFjZURhdGE7CiBzdHJ1
Y3QgRGljdGlvbmFyeVBvcHVwSW5mbzsKQEAgLTE0MTMsNyArMTQxMiw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB2aWV3RGlkRW50ZXJXaW5kb3coKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2
b2lkIGRpZFBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdChjb25zdCBBY3Rpb25NZW51SGl0VGVzdFJl
c3VsdCYsIGJvb2wgZm9ySW1tZWRpYXRlQWN0aW9uLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZv
aWQgZGlkUGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0KGNvbnN0IFdlYkhpdFRlc3RSZXN1bHQ6OkRh
dGEmLCBib29sIGZvckltbWVkaWF0ZUFjdGlvbiwgYm9vbCBjb250ZW50UHJldmVudHNEZWZhdWx0
LCBjb25zdCBVc2VyRGF0YSYpOwogI2VuZGlmCiAKICAgICB2b2lkIGhhbmRsZUF1dG9GaWxsQnV0
dG9uQ2xpY2soY29uc3QgVXNlckRhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDdkMzI3MTMuLjYxMTQzMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpA
QCAtNDI0LDcgKzQyNCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgSXNQbGF5
aW5nQXVkaW9EaWRDaGFuZ2UoYm9vbCBuZXdJc1BsYXlpbmdBdWRpbykKIAogI2lmIFBMQVRGT1JN
KE1BQykKLSAgICBEaWRQZXJmb3JtQWN0aW9uTWVudUhpdFRlc3Qoc3RydWN0IFdlYktpdDo6QWN0
aW9uTWVudUhpdFRlc3RSZXN1bHQgcmVzdWx0LCBib29sIGZvckltbWVkaWF0ZUFjdGlvbiwgV2Vi
S2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBEaWRQZXJmb3JtQWN0aW9uTWVudUhpdFRlc3Qo
c3RydWN0IFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdDo6RGF0YSByZXN1bHQsIGJvb2wgZm9ySW1t
ZWRpYXRlQWN0aW9uLCBib29sIGNvbnRlbnRQcmV2ZW50c0RlZmF1bHQsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpCiAjZW5kaWYKICAgICBIYW5kbGVNZXNzYWdlKFN0cmluZyBtZXNzYWdlTmFt
ZSwgV2ViS2l0OjpVc2VyRGF0YSBtZXNzYWdlQm9keSkgV2FudHNDb25uZWN0aW9uCiAgICAgSGFu
ZGxlU3luY2hyb25vdXNNZXNzYWdlKFN0cmluZyBtZXNzYWdlTmFtZSwgV2ViS2l0OjpVc2VyRGF0
YSBtZXNzYWdlQm9keSkgLT4gKFdlYktpdDo6VXNlckRhdGEgcmV0dXJuRGF0YSkgV2FudHNDb25u
ZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgK
aW5kZXggNjMyYjU2ZC4uOGVlZjkzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGwuaApAQCAtMTk1LDcgKzE5NSw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JNYWluRnJhbWUoU2FtZURvY3Vt
ZW50TmF2aWdhdGlvblR5cGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVOYXZp
Z2F0aW9uR2VzdHVyZVNuYXBzaG90KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0KGNvbnN0IEFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0Jiwg
Ym9vbCBmb3JJbW1lZGlhdGVBY3Rpb24sIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGRpZFBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdChjb25zdCBXZWJIaXRUZXN0UmVz
dWx0OjpEYXRhJiwgYm9vbCBmb3JJbW1lZGlhdGVBY3Rpb24sIGJvb2wgY29udGVudFByZXZlbnRz
RGVmYXVsdCwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1Bs
YXRmb3JtQ29udGV4dE1lbnUoTlNNZW51ICosIFdlYkNvcmU6OkludFBvaW50KSBvdmVycmlkZTsK
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VCYWNrZ3JvdW5kQ29sb3IoKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4
IGUxMWIzYmMuLjY3OTkzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbC5tbQpAQCAtNzkyLDEwICs3OTIsMTAgQEAgQ0dSZWN0IFBhZ2VDbGllbnRJ
bXBsOjpib3VuZHNPZkxheWVySW5MYXllckJhY2tlZFdpbmRvd0Nvb3JkaW5hdGVzKENBTGF5ZXIg
KmxheWUKICAgICByZXR1cm4gW3dpbmRvd0NvbnRlbnRMYXllciBjb252ZXJ0UmVjdDpsYXllci5i
b3VuZHMgZnJvbUxheWVyOmxheWVyXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUGVy
Zm9ybUFjdGlvbk1lbnVIaXRUZXN0KGNvbnN0IEFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0JiByZXN1
bHQsIGJvb2wgZm9ySW1tZWRpYXRlQWN0aW9uLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCit2b2lk
IFBhZ2VDbGllbnRJbXBsOjpkaWRQZXJmb3JtQWN0aW9uTWVudUhpdFRlc3QoY29uc3QgV2ViSGl0
VGVzdFJlc3VsdDo6RGF0YSYgcmVzdWx0LCBib29sIGZvckltbWVkaWF0ZUFjdGlvbiwgYm9vbCBj
b250ZW50UHJldmVudHNEZWZhdWx0LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAjaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDAKLSAgICBbbV93a1ZpZXcgX2Rp
ZFBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdDpyZXN1bHQgZm9ySW1tZWRpYXRlQWN0aW9uOmZvcklt
bWVkaWF0ZUFjdGlvbiB1c2VyRGF0YTp1c2VyRGF0YV07CisgICAgW21fd2tWaWV3IF9kaWRQZXJm
b3JtQWN0aW9uTWVudUhpdFRlc3Q6cmVzdWx0IGZvckltbWVkaWF0ZUFjdGlvbjpmb3JJbW1lZGlh
dGVBY3Rpb24gY29udGVudFByZXZlbnRzRGVmYXVsdDpjb250ZW50UHJldmVudHNEZWZhdWx0IHVz
ZXJEYXRhOnVzZXJEYXRhXTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dLQWN0aW9uTWVudUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV0tBY3Rpb25NZW51Q29udHJvbGxlci5oCmluZGV4IDY3ZGFjN2IuLmE2
OWIyOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tBY3Rpb25N
ZW51Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tBY3Rp
b25NZW51Q29udHJvbGxlci5oCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCiAKLSNpbXBvcnQg
IkFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0LmgiCiAjaW1wb3J0ICJXS0FjdGlvbk1lbnVJdGVtVHlw
ZXMuaCIKICNpbXBvcnQgIldLQWN0aW9uTWVudVR5cGVzLmgiCisjaW1wb3J0ICJXZWJIaXRUZXN0
UmVzdWx0LmgiCiAjaW1wb3J0IDxBcHBLaXQvTlNTaGFyaW5nU2VydmljZS5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogCkBAIC01NCw3ICs1NCw3IEBAIGVudW0gY2xhc3MgQWN0aW9uTWVu
dVN0YXRlIHsKICAgICBXS1ZpZXcgKl93a1ZpZXc7CiAKICAgICBXZWJLaXQ6OkFjdGlvbk1lbnVT
dGF0ZSBfc3RhdGU7Ci0gICAgV2ViS2l0OjpBY3Rpb25NZW51SGl0VGVzdFJlc3VsdCBfaGl0VGVz
dFJlc3VsdDsKKyAgICBXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHQ6OkRhdGEgX2hpdFRlc3RSZXN1
bHREYXRhOwogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gX3VzZXJEYXRhOwogICAgIF9XS0FjdGlv
bk1lbnVUeXBlIF90eXBlOwogICAgIFJldGFpblB0cjxOU1NoYXJpbmdTZXJ2aWNlUGlja2VyPiBf
c2hhcmluZ1NlcnZpY2VQaWNrZXI7CkBAIC03Miw3ICs3Miw3IEBAIGVudW0gY2xhc3MgQWN0aW9u
TWVudVN0YXRlIHsKIC0gKHZvaWQpZGlkQ2xvc2VNZW51OihOU01lbnUgKiltZW51IHdpdGhFdmVu
dDooTlNFdmVudCAqKWV2ZW50OwogLSAodm9pZCl3a1ZpZXc6KFdLVmlldyAqKXdrVmlldyB3aWxs
SGFuZGxlTW91c2VEb3duOihOU0V2ZW50ICopZXZlbnQ7CiAKLS0gKHZvaWQpZGlkUGVyZm9ybUFj
dGlvbk1lbnVIaXRUZXN0Oihjb25zdCBXZWJLaXQ6OkFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0Jilo
aXRUZXN0UmVzdWx0IHVzZXJEYXRhOihBUEk6Ok9iamVjdCopdXNlckRhdGE7CistICh2b2lkKWRp
ZFBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdDooY29uc3QgV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0
OjpEYXRhJiloaXRUZXN0UmVzdWx0IHVzZXJEYXRhOihBUEk6Ok9iamVjdCopdXNlckRhdGE7CiAK
IEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0FjdGlv
bk1lbnVDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0FjdGlv
bk1lbnVDb250cm9sbGVyLm1tCmluZGV4IGZkN2VjNWEuLjNhMGI4NjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tBY3Rpb25NZW51Q29udHJvbGxlci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLQWN0aW9uTWVudUNvbnRyb2xsZXIubW0K
QEAgLTg1LDcgKzg1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHsKICAgICBfcGFnZSA9
IG51bGxwdHI7CiAgICAgX3drVmlldyA9IG5pbDsKLSAgICBfaGl0VGVzdFJlc3VsdCA9IEFjdGlv
bk1lbnVIaXRUZXN0UmVzdWx0KCk7CisgICAgX2hpdFRlc3RSZXN1bHREYXRhID0gV2ViSGl0VGVz
dFJlc3VsdDo6RGF0YSgpOwogICAgIF9jdXJyZW50QWN0aW9uQ29udGV4dCA9IG5pbDsKIH0KIApA
QCAtMTYxLDE4ICsxNjEsMTggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICB9CiAKICAg
ICBfc3RhdGUgPSBBY3Rpb25NZW51U3RhdGU6Ok5vbmU7Ci0gICAgX2hpdFRlc3RSZXN1bHQgPSBB
Y3Rpb25NZW51SGl0VGVzdFJlc3VsdCgpOworICAgIF9oaXRUZXN0UmVzdWx0RGF0YSA9IFdlYkhp
dFRlc3RSZXN1bHQ6OkRhdGEoKTsKICAgICBfdHlwZSA9IGtXS0FjdGlvbk1lbnVOb25lOwogICAg
IF9zaGFyaW5nU2VydmljZVBpY2tlciA9IG5pbDsKICAgICBfY3VycmVudEFjdGlvbkNvbnRleHQg
PSBuaWw7CiAgICAgX3VzZXJEYXRhID0gbmlsOwogfQogCi0tICh2b2lkKWRpZFBlcmZvcm1BY3Rp
b25NZW51SGl0VGVzdDooY29uc3QgQWN0aW9uTWVudUhpdFRlc3RSZXN1bHQmKWhpdFRlc3RSZXN1
bHQgdXNlckRhdGE6KEFQSTo6T2JqZWN0Kil1c2VyRGF0YQorLSAodm9pZClkaWRQZXJmb3JtQWN0
aW9uTWVudUhpdFRlc3Q6KGNvbnN0IFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEmKWhpdFRlc3RSZXN1
bHQgdXNlckRhdGE6KEFQSTo6T2JqZWN0Kil1c2VyRGF0YQogewogICAgIC8vIEZJWE1FOiBUaGlz
IG5lZWRzIHRvIHVzZSB0aGUgV2ViS2l0MiBjYWxsYmFjayBtZWNoYW5pc20gdG8gYXZvaWQgb3V0
LW9mLW9yZGVyIHJlcGxpZXMuCiAgICAgX3N0YXRlID0gQWN0aW9uTWVudVN0YXRlOjpSZWFkeTsK
LSAgICBfaGl0VGVzdFJlc3VsdCA9IGhpdFRlc3RSZXN1bHQ7CisgICAgX2hpdFRlc3RSZXN1bHRE
YXRhID0gaGl0VGVzdFJlc3VsdDsKICAgICBfdXNlckRhdGEgPSB1c2VyRGF0YTsKIAogICAgIFtz
ZWxmIF91cGRhdGVBY3Rpb25NZW51SXRlbXNdOwpAQCAtMjM5LDEzICsyMzksMTMgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKIAogI3ByYWdtYSBtYXJrIEltYWdlIGFjdGlvbnMKIAotLSAoTlNJ
bWFnZSAqKV9oaXRUZXN0UmVzdWx0SW1hZ2UKKy0gKE5TSW1hZ2UgKilfaGl0VGVzdFJlc3VsdERh
dGFJbWFnZQogewotICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGltYWdlU2hhcmVkTWVtb3J5ID0g
X2hpdFRlc3RSZXN1bHQuaW1hZ2VTaGFyZWRNZW1vcnk7CisgICAgUmVmUHRyPFNoYXJlZE1lbW9y
eT4gaW1hZ2VTaGFyZWRNZW1vcnkgPSBfaGl0VGVzdFJlc3VsdERhdGEuaW1hZ2VTaGFyZWRNZW1v
cnk7CiAgICAgaWYgKCFpbWFnZVNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAot
ICAgIFJldGFpblB0cjxOU0ltYWdlPiBuc0ltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6aW1hZ2VTaGFyZWRNZW1vcnktPmRh
dGEoKSBsZW5ndGg6X2hpdFRlc3RSZXN1bHQuaW1hZ2VTaXplXV0pOworICAgIFJldGFpblB0cjxO
U0ltYWdlPiBuc0ltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6aW1hZ2VTaGFyZWRNZW1vcnktPmRhdGEoKSBsZW5ndGg6X2hp
dFRlc3RSZXN1bHREYXRhLmltYWdlU2l6ZV1dKTsKICAgICByZXR1cm4gbnNJbWFnZS5hdXRvcmVs
ZWFzZSgpOwogfQogCkBAIC0yNTgsMTQgKzI1OCwxNCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogICAgIGVsc2UKICAgICAgICAgYWRkVG9QaG90b3NJdGVtID0gW05TTWVudUl0ZW0gc2VwYXJh
dG9ySXRlbV07CiAgICAgUmV0YWluUHRyPE5TTWVudUl0ZW0+IHNhdmVUb0Rvd25sb2Fkc0l0ZW0g
PSBbc2VsZiBfY3JlYXRlQWN0aW9uTWVudUl0ZW1Gb3JUYWc6a1dLQ29udGV4dEFjdGlvbkl0ZW1U
YWdTYXZlSW1hZ2VUb0Rvd25sb2Fkc107Ci0gICAgUmV0YWluUHRyPE5TTWVudUl0ZW0+IHNoYXJl
SXRlbSA9IFtzZWxmIF9jcmVhdGVTaGFyZUFjdGlvbk1lbnVJdGVtRm9yVGFnOmtXS0NvbnRleHRB
Y3Rpb25JdGVtVGFnU2hhcmVJbWFnZSB3aXRoSXRlbXM6QFsgW3NlbGYgX2hpdFRlc3RSZXN1bHRJ
bWFnZV0gXV07CisgICAgUmV0YWluUHRyPE5TTWVudUl0ZW0+IHNoYXJlSXRlbSA9IFtzZWxmIF9j
cmVhdGVTaGFyZUFjdGlvbk1lbnVJdGVtRm9yVGFnOmtXS0NvbnRleHRBY3Rpb25JdGVtVGFnU2hh
cmVJbWFnZSB3aXRoSXRlbXM6QFsgW3NlbGYgX2hpdFRlc3RSZXN1bHREYXRhSW1hZ2VdIF1dOwog
CiAgICAgcmV0dXJuIEBbIGNvcHlJbWFnZUl0ZW0uZ2V0KCksIGFkZFRvUGhvdG9zSXRlbS5nZXQo
KSwgc2F2ZVRvRG93bmxvYWRzSXRlbS5nZXQoKSwgc2hhcmVJdGVtLmdldCgpIF07CiB9CiAKIC0g
KHZvaWQpX2NvcHlJbWFnZTooaWQpc2VuZGVyCiB7Ci0gICAgUmV0YWluUHRyPE5TSW1hZ2U+IGlt
YWdlID0gW3NlbGYgX2hpdFRlc3RSZXN1bHRJbWFnZV07CisgICAgUmV0YWluUHRyPE5TSW1hZ2U+
IGltYWdlID0gW3NlbGYgX2hpdFRlc3RSZXN1bHREYXRhSW1hZ2VdOwogICAgIGlmICghaW1hZ2Up
CiAgICAgICAgIHJldHVybjsKIApAQCAtMzM0LDEyICszMzQsMTIgQEAgc3RhdGljIE5TU3RyaW5n
ICpwYXRoVG9QaG90b09uRGlzayhOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUpCiAgICAgaWYg
KCFbc2VsZiBfY2FuQWRkTWVkaWFUb1Bob3Rvc10pCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IGltYWdlU2hhcmVkTWVtb3J5ID0gX2hpdFRlc3RSZXN1bHQuaW1h
Z2VTaGFyZWRNZW1vcnk7Ci0gICAgaWYgKCFpbWFnZVNoYXJlZE1lbW9yeS0+ZGF0YSgpIHx8IF9o
aXRUZXN0UmVzdWx0LmltYWdlRXh0ZW5zaW9uLmlzRW1wdHkoKSB8fCAhX2hpdFRlc3RSZXN1bHQu
aW1hZ2VTaXplKQorICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGltYWdlU2hhcmVkTWVtb3J5ID0g
X2hpdFRlc3RSZXN1bHREYXRhLmltYWdlU2hhcmVkTWVtb3J5OworICAgIGlmICghaW1hZ2VTaGFy
ZWRNZW1vcnktPmRhdGEoKSB8fCBfaGl0VGVzdFJlc3VsdERhdGEuaW1hZ2VFeHRlbnNpb24uaXNF
bXB0eSgpIHx8ICFfaGl0VGVzdFJlc3VsdERhdGEuaW1hZ2VTaXplKQogICAgICAgICByZXR1cm47
CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFs
bG9jXSBpbml0V2l0aEJ5dGVzOmltYWdlU2hhcmVkTWVtb3J5LT5kYXRhKCkgbGVuZ3RoOl9oaXRU
ZXN0UmVzdWx0LmltYWdlU2l6ZV0pOwotICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3VnZ2VzdGVk
RmlsZW5hbWUgPSBbW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBnbG9iYWxseVVuaXF1ZVN0
cmluZ10gc3RyaW5nQnlBcHBlbmRpbmdQYXRoRXh0ZW5zaW9uOl9oaXRUZXN0UmVzdWx0LmltYWdl
RXh0ZW5zaW9uXTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBhZG9wdE5TKFtb
TlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmltYWdlU2hhcmVkTWVtb3J5LT5kYXRhKCkgbGVu
Z3RoOl9oaXRUZXN0UmVzdWx0RGF0YS5pbWFnZVNpemVdKTsKKyAgICBSZXRhaW5QdHI8TlNTdHJp
bmc+IHN1Z2dlc3RlZEZpbGVuYW1lID0gW1tbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gZ2xv
YmFsbHlVbmlxdWVTdHJpbmddIHN0cmluZ0J5QXBwZW5kaW5nUGF0aEV4dGVuc2lvbjpfaGl0VGVz
dFJlc3VsdERhdGEuaW1hZ2VFeHRlbnNpb25dOwogCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwg
XnsKICAgICAgICAgTlNTdHJpbmcgKmZpbGVQYXRoID0gcGF0aFRvUGhvdG9PbkRpc2soc3VnZ2Vz
dGVkRmlsZW5hbWUuZ2V0KCkpOwpAQCAtMzYwLDcgKzM2MCw3IEBAIHN0YXRpYyBOU1N0cmluZyAq
cGF0aFRvUGhvdG9PbkRpc2soTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lKQogCiAtIChOU0Fy
cmF5ICopX2RlZmF1bHRNZW51SXRlbXNGb3JEYXRhRGV0ZWN0ZWRUZXh0CiB7Ci0gICAgRERBY3Rp
b25Db250ZXh0ICphY3Rpb25Db250ZXh0ID0gX2hpdFRlc3RSZXN1bHQuYWN0aW9uQ29udGV4dC5n
ZXQoKTsKKyAgICBEREFjdGlvbkNvbnRleHQgKmFjdGlvbkNvbnRleHQgPSBfaGl0VGVzdFJlc3Vs
dERhdGEuZGV0ZWN0ZWREYXRhQWN0aW9uQ29udGV4dC5nZXQoKTsKICAgICBpZiAoIWFjdGlvbkNv
bnRleHQpCiAgICAgICAgIHJldHVybiBAWyBdOwogCkBAIC0zNzIsMTkgKzM3MiwxOSBAQCBzdGF0
aWMgTlNTdHJpbmcgKnBhdGhUb1Bob3RvT25EaXNrKE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFt
ZSkKIAogICAgIC8vIFJlZiBvdXIgV2ViUGFnZVByb3h5IGZvciB1c2UgaW4gdGhlIGJsb2NrcyBi
ZWxvdy4KICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBwYWdlID0gX3BhZ2U7Ci0gICAgUGFnZU92
ZXJsYXk6OlBhZ2VPdmVybGF5SUQgb3ZlcmxheUlEID0gX2hpdFRlc3RSZXN1bHQuZGV0ZWN0ZWRE
YXRhT3JpZ2luYXRpbmdQYWdlT3ZlcmxheTsKKyAgICBQYWdlT3ZlcmxheTo6UGFnZU92ZXJsYXlJ
RCBvdmVybGF5SUQgPSBfaGl0VGVzdFJlc3VsdERhdGEuZGV0ZWN0ZWREYXRhT3JpZ2luYXRpbmdQ
YWdlT3ZlcmxheTsKICAgICBfY3VycmVudEFjdGlvbkNvbnRleHQgPSBbYWN0aW9uQ29udGV4dCBj
b250ZXh0Rm9yVmlldzpfd2tWaWV3IGFsdE1vZGU6WUVTIGludGVyYWN0aW9uU3RhcnRlZEhhbmRs
ZXI6XigpIHsKICAgICAgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGF0YURldGVj
dG9yc0RpZFByZXNlbnRVSShvdmVybGF5SUQpKTsKICAgICB9IGludGVyYWN0aW9uQ2hhbmdlZEhh
bmRsZXI6XigpIHsKLSAgICAgICAgaWYgKF9oaXRUZXN0UmVzdWx0LmRldGVjdGVkRGF0YVRleHRJ
bmRpY2F0b3IpCi0gICAgICAgICAgICBwYWdlLT5zZXRUZXh0SW5kaWNhdG9yKF9oaXRUZXN0UmVz
dWx0LmRldGVjdGVkRGF0YVRleHRJbmRpY2F0b3ItPmRhdGEoKSwgZmFsc2UpOworICAgICAgICBp
ZiAoX2hpdFRlc3RSZXN1bHREYXRhLmRldGVjdGVkRGF0YVRleHRJbmRpY2F0b3IpCisgICAgICAg
ICAgICBwYWdlLT5zZXRUZXh0SW5kaWNhdG9yKF9oaXRUZXN0UmVzdWx0RGF0YS5kZXRlY3RlZERh
dGFUZXh0SW5kaWNhdG9yLT5kYXRhKCksIGZhbHNlKTsKICAgICAgICAgcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGF0YURldGVjdG9yc0RpZENoYW5nZVVJKG92ZXJsYXlJRCkpOwogICAg
IH0gaW50ZXJhY3Rpb25TdG9wcGVkSGFuZGxlcjpeKCkgewogICAgICAgICBwYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEYXRhRGV0ZWN0b3JzRGlkSGlkZVVJKG92ZXJsYXlJRCkpOwogICAg
ICAgICBwYWdlLT5jbGVhclRleHRJbmRpY2F0b3IoKTsKICAgICB9XTsKIAotICAgIFtfY3VycmVu
dEFjdGlvbkNvbnRleHQgc2V0SGlnaGxpZ2h0RnJhbWU6W193a1ZpZXcud2luZG93IGNvbnZlcnRS
ZWN0VG9TY3JlZW46W193a1ZpZXcgY29udmVydFJlY3Q6X2hpdFRlc3RSZXN1bHQuZGV0ZWN0ZWRE
YXRhQm91bmRpbmdCb3ggdG9WaWV3Om5pbF1dXTsKKyAgICBbX2N1cnJlbnRBY3Rpb25Db250ZXh0
IHNldEhpZ2hsaWdodEZyYW1lOltfd2tWaWV3LndpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOltf
d2tWaWV3IGNvbnZlcnRSZWN0Ol9oaXRUZXN0UmVzdWx0RGF0YS5kZXRlY3RlZERhdGFCb3VuZGlu
Z0JveCB0b1ZpZXc6bmlsXV1dOwogCiAgICAgTlNBcnJheSAqbWVudUl0ZW1zID0gW1tnZXREREFj
dGlvbnNNYW5hZ2VyQ2xhc3MoKSBzaGFyZWRNYW5hZ2VyXSBtZW51SXRlbXNGb3JSZXN1bHQ6W19j
dXJyZW50QWN0aW9uQ29udGV4dCBtYWluUmVzdWx0XSBhY3Rpb25Db250ZXh0Ol9jdXJyZW50QWN0
aW9uQ29udGV4dC5nZXQoKV07CiAgICAgcmV0dXJuIG1lbnVJdGVtczsKQEAgLTQwOSwxNiArNDA5
LDE2IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFRvUGhvdG9PbkRpc2soTlNTdHJpbmcgKnN1Z2dl
c3RlZEZpbGVuYW1lKQogCiAtIChOU0FycmF5ICopX2RlZmF1bHRNZW51SXRlbXNGb3JFZGl0YWJs
ZVRleHRXaXRoU3VnZ2VzdGlvbnMKIHsKLSAgICBpZiAoX2hpdFRlc3RSZXN1bHQubG9va3VwVGV4
dC5pc0VtcHR5KCkpCisgICAgaWYgKF9oaXRUZXN0UmVzdWx0RGF0YS5sb29rdXBUZXh0LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIEBbIF07CiAKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVz
dWx0PiByZXN1bHRzOwotICAgIF9wYWdlLT5jaGVja1RleHRPZlBhcmFncmFwaChfaGl0VGVzdFJl
c3VsdC5sb29rdXBUZXh0LCBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZywgcmVzdWx0cyk7Cisg
ICAgX3BhZ2UtPmNoZWNrVGV4dE9mUGFyYWdyYXBoKF9oaXRUZXN0UmVzdWx0RGF0YS5sb29rdXBU
ZXh0LCBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZywgcmVzdWx0cyk7CiAgICAgaWYgKHJlc3Vs
dHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gQFsgXTsKIAogICAgIFZlY3RvcjxTdHJpbmc+
IGd1ZXNzZXM7Ci0gICAgX3BhZ2UtPmdldEd1ZXNzZXNGb3JXb3JkKF9oaXRUZXN0UmVzdWx0Lmxv
b2t1cFRleHQsIFN0cmluZygpLCBndWVzc2VzKTsKKyAgICBfcGFnZS0+Z2V0R3Vlc3Nlc0Zvcldv
cmQoX2hpdFRlc3RSZXN1bHREYXRhLmxvb2t1cFRleHQsIFN0cmluZygpLCBndWVzc2VzKTsKICAg
ICBpZiAoZ3Vlc3Nlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBAWyBdOwogCkBAIC00ODQs
NyArNDg0LDcgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoVG9QaG90b09uRGlzayhOU1N0cmluZyAq
c3VnZ2VzdGVkRmlsZW5hbWUpCiAgICAgfSBpbnRlcmFjdGlvblN0b3BwZWRIYW5kbGVyOl4oKSB7
CiAgICAgfV07CiAKLSAgICBbX2N1cnJlbnRBY3Rpb25Db250ZXh0IHNldEhpZ2hsaWdodEZyYW1l
Oltfd2tWaWV3LndpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOltfd2tWaWV3IGNvbnZlcnRSZWN0
Ol9oaXRUZXN0UmVzdWx0LmRldGVjdGVkRGF0YUJvdW5kaW5nQm94IHRvVmlldzpuaWxdXV07Cisg
ICAgW19jdXJyZW50QWN0aW9uQ29udGV4dCBzZXRIaWdobGlnaHRGcmFtZTpbX3drVmlldy53aW5k
b3cgY29udmVydFJlY3RUb1NjcmVlbjpbX3drVmlldyBjb252ZXJ0UmVjdDpfaGl0VGVzdFJlc3Vs
dERhdGEuZGV0ZWN0ZWREYXRhQm91bmRpbmdCb3ggdG9WaWV3Om5pbF1dXTsKIAogICAgIHJldHVy
biBbW2dldEREQWN0aW9uc01hbmFnZXJDbGFzcygpIHNoYXJlZE1hbmFnZXJdIG1lbnVJdGVtc0Zv
clRhcmdldFVSTDpoaXRUZXN0UmVzdWx0LT5hYnNvbHV0ZUxpbmtVUkwoKSBhY3Rpb25Db250ZXh0
Ol9jdXJyZW50QWN0aW9uQ29udGV4dC5nZXQoKV07CiB9CkBAIC02NTAsNyArNjUwLDcgQEAgc3Rh
dGljIE5TU3RyaW5nICpwYXRoVG9QaG90b09uRGlzayhOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5h
bWUpCiB7CiAgICAgUmVmUHRyPFdlYkhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQ7CiAgICAg
aWYgKF9zdGF0ZSA9PSBBY3Rpb25NZW51U3RhdGU6OlJlYWR5KQotICAgICAgICBoaXRUZXN0UmVz
dWx0ID0gV2ViSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKF9oaXRUZXN0UmVzdWx0LmhpdFRlc3RSZXN1
bHQpOworICAgICAgICBoaXRUZXN0UmVzdWx0ID0gV2ViSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKF9o
aXRUZXN0UmVzdWx0RGF0YSk7CiAgICAgZWxzZQogICAgICAgICBoaXRUZXN0UmVzdWx0ID0gX3Bh
Z2UtPmxhc3RNb3VzZU1vdmVIaXRUZXN0UmVzdWx0KCk7CiAKQEAgLTY4OCw3ICs2ODgsNyBAQCBz
dGF0aWMgTlNTdHJpbmcgKnBhdGhUb1Bob3RvT25EaXNrKE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxl
bmFtZSkKICAgICAgICAgcmV0dXJuIFtzZWxmIF9kZWZhdWx0TWVudUl0ZW1zRm9yVmlkZW9dOwog
ICAgIH0KIAotICAgIGlmICghaGl0VGVzdFJlc3VsdC0+YWJzb2x1dGVJbWFnZVVSTCgpLmlzRW1w
dHkoKSAmJiBfaGl0VGVzdFJlc3VsdC5pbWFnZVNoYXJlZE1lbW9yeSAmJiAhX2hpdFRlc3RSZXN1
bHQuaW1hZ2VFeHRlbnNpb24uaXNFbXB0eSgpKSB7CisgICAgaWYgKCFoaXRUZXN0UmVzdWx0LT5h
YnNvbHV0ZUltYWdlVVJMKCkuaXNFbXB0eSgpICYmIF9oaXRUZXN0UmVzdWx0RGF0YS5pbWFnZVNo
YXJlZE1lbW9yeSAmJiAhX2hpdFRlc3RSZXN1bHREYXRhLmltYWdlRXh0ZW5zaW9uLmlzRW1wdHko
KSkgewogICAgICAgICBfdHlwZSA9IGtXS0FjdGlvbk1lbnVJbWFnZTsKICAgICAgICAgcmV0dXJu
IFtzZWxmIF9kZWZhdWx0TWVudUl0ZW1zRm9ySW1hZ2VdOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxl
ci5oCmluZGV4IGNkYTcxZGUuLjI1NWUzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIuaApAQCAtMjgs
OCArMjgsOCBAQAogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTAwMAogCi0jaW1wb3J0ICJBY3Rpb25NZW51SGl0VGVzdFJlc3VsdC5o
IgogI2ltcG9ydCAiV0tJbW1lZGlhdGVBY3Rpb25UeXBlcy5oIgorI2ltcG9ydCAiV2ViSGl0VGVz
dFJlc3VsdC5oIgogI2ltcG9ydCA8V2ViQ29yZS9OU0ltbWVkaWF0ZUFjdGlvbkdlc3R1cmVSZWNv
Z25pemVyU1BJLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTU0LDcgKzU0LDgg
QEAgZW51bSBjbGFzcyBJbW1lZGlhdGVBY3Rpb25TdGF0ZSB7CiAgICAgV0tWaWV3ICpfd2tWaWV3
OwogCiAgICAgV2ViS2l0OjpJbW1lZGlhdGVBY3Rpb25TdGF0ZSBfc3RhdGU7Ci0gICAgV2ViS2l0
OjpBY3Rpb25NZW51SGl0VGVzdFJlc3VsdCBfaGl0VGVzdFJlc3VsdDsKKyAgICBXZWJLaXQ6Oldl
YkhpdFRlc3RSZXN1bHQ6OkRhdGEgX2hpdFRlc3RSZXN1bHREYXRhOworICAgIEJPT0wgX2NvbnRl
bnRQcmV2ZW50c0RlZmF1bHQ7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBfdXNlckRhdGE7CiAg
ICAgX1dLSW1tZWRpYXRlQWN0aW9uVHlwZSBfdHlwZTsKICAgICBSZXRhaW5QdHI8TlNJbW1lZGlh
dGVBY3Rpb25HZXN0dXJlUmVjb2duaXplcj4gX2ltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXI7CkBA
IC02OCw3ICs2OSw3IEBAIGVudW0gY2xhc3MgSW1tZWRpYXRlQWN0aW9uU3RhdGUgewogCiAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhQYWdlOihXZWJLaXQ6OldlYlBhZ2VQcm94eSYpcGFnZSB2aWV3
OihXS1ZpZXcgKil3a1ZpZXcgcmVjb2duaXplcjooTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVj
b2duaXplciAqKWltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXI7CiAtICh2b2lkKXdpbGxEZXN0cm95
VmlldzooV0tWaWV3ICopdmlldzsKLS0gKHZvaWQpZGlkUGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0
Oihjb25zdCBXZWJLaXQ6OkFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0JiloaXRUZXN0UmVzdWx0IHVz
ZXJEYXRhOihBUEk6Ok9iamVjdCopdXNlckRhdGE7CistICh2b2lkKWRpZFBlcmZvcm1BY3Rpb25N
ZW51SGl0VGVzdDooY29uc3QgV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiloaXRUZXN0
UmVzdWx0IGNvbnRlbnRQcmV2ZW50c0RlZmF1bHQ6KEJPT0wpY29udGVudFByZXZlbnRzRGVmYXVs
dCB1c2VyRGF0YTooQVBJOjpPYmplY3QqKXVzZXJEYXRhOwogLSAodm9pZClkaXNtaXNzQ29udGVu
dFJlbGF0aXZlQ2hpbGRXaW5kb3dzOwogLSAoQk9PTCloYXNBY3RpdmVJbW1lZGlhdGVBY3Rpb247
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVB
Y3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0ltbWVk
aWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggNGUwYzRiNi4uYzRjOGJlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xs
ZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlv
bkNvbnRyb2xsZXIubW0KQEAgLTgyLDggKzgyLDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IHsKICAgICBfcGFnZSA9IG51bGxwdHI7CiAgICAgX3drVmlldyA9IG5pbDsKLSAgICBfaGl0VGVz
dFJlc3VsdCA9IEFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0KCk7Ci0KKyAgICBfaGl0VGVzdFJlc3Vs
dERhdGEgPSBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhKCk7CisgICAgX2NvbnRlbnRQcmV2ZW50c0Rl
ZmF1bHQgPSBOTzsKKyAgICAKICAgICBpZCBhbmltYXRpb25Db250cm9sbGVyID0gW19pbW1lZGlh
dGVBY3Rpb25SZWNvZ25pemVyIGFuaW1hdGlvbkNvbnRyb2xsZXJdOwogICAgIGlmIChbYW5pbWF0
aW9uQ29udHJvbGxlciBpc0tpbmRPZkNsYXNzOk5TQ2xhc3NGcm9tU3RyaW5nKEAiUUxQcmV2aWV3
TWVudUl0ZW0iKV0pIHsKICAgICAgICAgUUxQcmV2aWV3TWVudUl0ZW0gKm1lbnVJdGVtID0gKFFM
UHJldmlld01lbnVJdGVtICopYW5pbWF0aW9uQ29udHJvbGxlcjsKQEAgLTEyMSw3ICsxMjIsOCBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICAgIH0KIAogICAgIF9zdGF0ZSA9IEltbWVkaWF0
ZUFjdGlvblN0YXRlOjpOb25lOwotICAgIF9oaXRUZXN0UmVzdWx0ID0gQWN0aW9uTWVudUhpdFRl
c3RSZXN1bHQoKTsKKyAgICBfaGl0VGVzdFJlc3VsdERhdGEgPSBXZWJIaXRUZXN0UmVzdWx0OjpE
YXRhKCk7CisgICAgX2NvbnRlbnRQcmV2ZW50c0RlZmF1bHQgPSBOTzsKICAgICBfdHlwZSA9IGtX
S0ltbWVkaWF0ZUFjdGlvbk5vbmU7CiAgICAgX2N1cnJlbnRBY3Rpb25Db250ZXh0ID0gbmlsOwog
ICAgIF91c2VyRGF0YSA9IG5pbDsKQEAgLTEyOSw3ICsxMzEsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwogICAgIF9oYXNBY3RpdmVJbW1lZGlhdGVBY3Rpb24gPSBOTzsKIH0KIAotLSAodm9p
ZClkaWRQZXJmb3JtQWN0aW9uTWVudUhpdFRlc3Q6KGNvbnN0IEFjdGlvbk1lbnVIaXRUZXN0UmVz
dWx0JiloaXRUZXN0UmVzdWx0IHVzZXJEYXRhOihBUEk6Ok9iamVjdCopdXNlckRhdGEKKy0gKHZv
aWQpZGlkUGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0Oihjb25zdCBXZWJIaXRUZXN0UmVzdWx0OjpE
YXRhJiloaXRUZXN0UmVzdWx0IGNvbnRlbnRQcmV2ZW50c0RlZmF1bHQ6KEJPT0wpY29udGVudFBy
ZXZlbnRzRGVmYXVsdCB1c2VyRGF0YTooQVBJOjpPYmplY3QqKXVzZXJEYXRhCiB7CiAgICAgLy8g
SWYgd2UndmUgYWxyZWFkeSBnaXZlbiB1cCBvbiB0aGlzIGdlc3R1cmUgKGVpdGhlciBiZWNhdXNl
IGl0IHdhcyBjYW5jZWxlZCBvciB0aGUKICAgICAvLyB3aWxsQmVnaW5BbmltYXRpb24gdGltZW91
dCBleHBpcmVkKSwgd2Ugc2hvdWxkbid0IGJ1aWxkIGEgbmV3IGFuaW1hdGlvbkNvbnRyb2xsZXIg
Zm9yIGl0LgpAQCAtMTM4LDcgKzE0MCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKICAg
ICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byB1c2UgdGhlIFdlYktpdDIgY2FsbGJhY2sgbWVjaGFu
aXNtIHRvIGF2b2lkIG91dC1vZi1vcmRlciByZXBsaWVzLgogICAgIF9zdGF0ZSA9IEltbWVkaWF0
ZUFjdGlvblN0YXRlOjpSZWFkeTsKLSAgICBfaGl0VGVzdFJlc3VsdCA9IGhpdFRlc3RSZXN1bHQ7
CisgICAgX2hpdFRlc3RSZXN1bHREYXRhID0gaGl0VGVzdFJlc3VsdDsKKyAgICBfY29udGVudFBy
ZXZlbnRzRGVmYXVsdCA9IGNvbnRlbnRQcmV2ZW50c0RlZmF1bHQ7CiAgICAgX3VzZXJEYXRhID0g
dXNlckRhdGE7CiAKICAgICBbc2VsZiBfdXBkYXRlSW1tZWRpYXRlQWN0aW9uSXRlbV07CkBAIC0y
MTMsNyArMjE2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICAgICAgcmV0dXJuOwog
CiAgICAgX3BhZ2UtPmltbWVkaWF0ZUFjdGlvbkRpZFVwZGF0ZSgpOwotICAgIGlmIChfaGl0VGVz
dFJlc3VsdC5jb250ZW50UHJldmVudHNEZWZhdWx0KQorICAgIGlmIChfY29udGVudFByZXZlbnRz
RGVmYXVsdCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgX3BhZ2UtPnNldFRleHRJbmRpY2F0b3JB
bmltYXRpb25Qcm9ncmVzcyhbaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplciBhbmltYXRpb25Qcm9n
cmVzc10pOwpAQCAtMjQ5LDcgKzI1Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB7CiAg
ICAgUmVmUHRyPFdlYkhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQ7CiAgICAgaWYgKF9zdGF0
ZSA9PSBJbW1lZGlhdGVBY3Rpb25TdGF0ZTo6UmVhZHkpCi0gICAgICAgIGhpdFRlc3RSZXN1bHQg
PSBXZWJIaXRUZXN0UmVzdWx0OjpjcmVhdGUoX2hpdFRlc3RSZXN1bHQuaGl0VGVzdFJlc3VsdCk7
CisgICAgICAgIGhpdFRlc3RSZXN1bHQgPSBXZWJIaXRUZXN0UmVzdWx0OjpjcmVhdGUoX2hpdFRl
c3RSZXN1bHREYXRhKTsKICAgICBlbHNlCiAgICAgICAgIGhpdFRlc3RSZXN1bHQgPSBfcGFnZS0+
bGFzdE1vdXNlTW92ZUhpdFRlc3RSZXN1bHQoKTsKIApAQCAtMjYwLDcgKzI2Myw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CiAKIC0gKGlkIDxOU0ltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNv
bnRyb2xsZXI+KV9kZWZhdWx0QW5pbWF0aW9uQ29udHJvbGxlcgogewotICAgIGlmIChfaGl0VGVz
dFJlc3VsdC5jb250ZW50UHJldmVudHNEZWZhdWx0KSB7CisgICAgaWYgKF9jb250ZW50UHJldmVu
dHNEZWZhdWx0KSB7CiAgICAgICAgIFJldGFpblB0cjxXZWJBbmltYXRpb25Db250cm9sbGVyPiBk
dW1teUNvbnRyb2xsZXIgPSBbW1dlYkFuaW1hdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRdOwog
ICAgICAgICByZXR1cm4gZHVtbXlDb250cm9sbGVyLmdldCgpOwogICAgIH0KQEAgLTI3NCw3ICsy
NzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICAgIGlmICghYWJzb2x1dGVMaW5rVVJM
LmlzRW1wdHkoKSAmJiBXZWJDb3JlOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KGFic29sdXRlTGlu
a1VSTCkpIHsKICAgICAgICAgX3R5cGUgPSBrV0tJbW1lZGlhdGVBY3Rpb25MaW5rUHJldmlldzsK
IAotICAgICAgICBpZiAoVGV4dEluZGljYXRvciAqdGV4dEluZGljYXRvciA9IF9oaXRUZXN0UmVz
dWx0LmxpbmtUZXh0SW5kaWNhdG9yLmdldCgpKQorICAgICAgICBpZiAoVGV4dEluZGljYXRvciAq
dGV4dEluZGljYXRvciA9IF9oaXRUZXN0UmVzdWx0RGF0YS5saW5rVGV4dEluZGljYXRvci5nZXQo
KSkKICAgICAgICAgICAgIF9wYWdlLT5zZXRUZXh0SW5kaWNhdG9yKHRleHRJbmRpY2F0b3ItPmRh
dGEoKSwgZmFsc2UpOwogCiAgICAgICAgIFJldGFpblB0cjxRTFByZXZpZXdNZW51SXRlbT4gcWxQ
cmV2aWV3TGlua0l0ZW0gPSBbTlNNZW51SXRlbSBzdGFuZGFyZFF1aWNrTG9va01lbnVJdGVtXTsK
QEAgLTMwNSw3ICszMDgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiAgICAgaWQgPE5T
SW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4gZGVmYXVsdEFuaW1hdGlvbkNvbnRy
b2xsZXIgPSBbc2VsZiBfZGVmYXVsdEFuaW1hdGlvbkNvbnRyb2xsZXJdOwogCi0gICAgaWYgKF9o
aXRUZXN0UmVzdWx0LmNvbnRlbnRQcmV2ZW50c0RlZmF1bHQpIHsKKyAgICBpZiAoX2NvbnRlbnRQ
cmV2ZW50c0RlZmF1bHQpIHsKICAgICAgICAgW19pbW1lZGlhdGVBY3Rpb25SZWNvZ25pemVyLmdl
dCgpIHNldEFuaW1hdGlvbkNvbnRyb2xsZXI6ZGVmYXVsdEFuaW1hdGlvbkNvbnRyb2xsZXJdOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzczLDcgKzM3Niw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiAKIC0gKE5TTWVudUl0ZW0gKilfbWVudUl0ZW1Gb3JEYXRhRGV0ZWN0ZWRUZXh0
CiB7Ci0gICAgRERBY3Rpb25Db250ZXh0ICphY3Rpb25Db250ZXh0ID0gX2hpdFRlc3RSZXN1bHQu
YWN0aW9uQ29udGV4dC5nZXQoKTsKKyAgICBEREFjdGlvbkNvbnRleHQgKmFjdGlvbkNvbnRleHQg
PSBfaGl0VGVzdFJlc3VsdERhdGEuZGV0ZWN0ZWREYXRhQWN0aW9uQ29udGV4dC5nZXQoKTsKICAg
ICBpZiAoIWFjdGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTM4NSwxOSAr
Mzg4LDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAgfQogCiAgICAgUmVmUHRyPFdl
YlBhZ2VQcm94eT4gcGFnZSA9IF9wYWdlOwotICAgIFBhZ2VPdmVybGF5OjpQYWdlT3ZlcmxheUlE
IG92ZXJsYXlJRCA9IF9oaXRUZXN0UmVzdWx0LmRldGVjdGVkRGF0YU9yaWdpbmF0aW5nUGFnZU92
ZXJsYXk7CisgICAgUGFnZU92ZXJsYXk6OlBhZ2VPdmVybGF5SUQgb3ZlcmxheUlEID0gX2hpdFRl
c3RSZXN1bHREYXRhLmRldGVjdGVkRGF0YU9yaWdpbmF0aW5nUGFnZU92ZXJsYXk7CiAgICAgX2N1
cnJlbnRBY3Rpb25Db250ZXh0ID0gW2FjdGlvbkNvbnRleHQgY29udGV4dEZvclZpZXc6X3drVmll
dyBhbHRNb2RlOllFUyBpbnRlcmFjdGlvblN0YXJ0ZWRIYW5kbGVyOl4oKSB7CiAgICAgICAgIHBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRhdGFEZXRlY3RvcnNEaWRQcmVzZW50VUkob3Zl
cmxheUlEKSk7CiAgICAgfSBpbnRlcmFjdGlvbkNoYW5nZWRIYW5kbGVyOl4oKSB7Ci0gICAgICAg
IGlmIChfaGl0VGVzdFJlc3VsdC5kZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yKQotICAgICAgICAg
ICAgcGFnZS0+c2V0VGV4dEluZGljYXRvcihfaGl0VGVzdFJlc3VsdC5kZXRlY3RlZERhdGFUZXh0
SW5kaWNhdG9yLT5kYXRhKCksIGZhbHNlKTsKKyAgICAgICAgaWYgKF9oaXRUZXN0UmVzdWx0RGF0
YS5kZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yKQorICAgICAgICAgICAgcGFnZS0+c2V0VGV4dElu
ZGljYXRvcihfaGl0VGVzdFJlc3VsdERhdGEuZGV0ZWN0ZWREYXRhVGV4dEluZGljYXRvci0+ZGF0
YSgpLCBmYWxzZSk7CiAgICAgICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRhdGFE
ZXRlY3RvcnNEaWRDaGFuZ2VVSShvdmVybGF5SUQpKTsKICAgICB9IGludGVyYWN0aW9uU3RvcHBl
ZEhhbmRsZXI6XigpIHsKICAgICAgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGF0
YURldGVjdG9yc0RpZEhpZGVVSShvdmVybGF5SUQpKTsKICAgICAgICAgW3NlbGYgX2NsZWFySW1t
ZWRpYXRlQWN0aW9uU3RhdGVdOwogICAgIH1dOwogCi0gICAgW19jdXJyZW50QWN0aW9uQ29udGV4
dCBzZXRIaWdobGlnaHRGcmFtZTpbX3drVmlldy53aW5kb3cgY29udmVydFJlY3RUb1NjcmVlbjpb
X3drVmlldyBjb252ZXJ0UmVjdDpfaGl0VGVzdFJlc3VsdC5kZXRlY3RlZERhdGFCb3VuZGluZ0Jv
eCB0b1ZpZXc6bmlsXV1dOworICAgIFtfY3VycmVudEFjdGlvbkNvbnRleHQgc2V0SGlnaGxpZ2h0
RnJhbWU6W193a1ZpZXcud2luZG93IGNvbnZlcnRSZWN0VG9TY3JlZW46W193a1ZpZXcgY29udmVy
dFJlY3Q6X2hpdFRlc3RSZXN1bHREYXRhLmRldGVjdGVkRGF0YUJvdW5kaW5nQm94IHRvVmlldzpu
aWxdXV07CiAKICAgICBOU0FycmF5ICptZW51SXRlbXMgPSBbW2dldEREQWN0aW9uc01hbmFnZXJD
bGFzcygpIHNoYXJlZE1hbmFnZXJdIG1lbnVJdGVtc0ZvclJlc3VsdDpbX2N1cnJlbnRBY3Rpb25D
b250ZXh0IG1haW5SZXN1bHRdIGFjdGlvbkNvbnRleHQ6X2N1cnJlbnRBY3Rpb25Db250ZXh0Lmdl
dCgpXTsKIApAQCAtNDE3LDcgKzQyMCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAg
aWYgKCFnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpKQogICAgICAgICByZXR1cm4g
bmlsOwogCi0gICAgRGljdGlvbmFyeVBvcHVwSW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZvID0gX2hp
dFRlc3RSZXN1bHQuZGljdGlvbmFyeVBvcHVwSW5mbzsKKyAgICBEaWN0aW9uYXJ5UG9wdXBJbmZv
IGRpY3Rpb25hcnlQb3B1cEluZm8gPSBfaGl0VGVzdFJlc3VsdERhdGEuZGljdGlvbmFyeVBvcHVw
SW5mbzsKICAgICBpZiAoIWRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmluZy5zdHJp
bmcpCiAgICAgICAgIHJldHVybiBuaWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkOTM3NmI2Li4zNDQzNjk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02
MDAsOCArNjAwLDYgQEAKIAkJMkQyQURGMDkxNjM2MkRENTAwMTk3RTQ3IC8qIFBERlBsdWdpblRl
eHRBbm5vdGF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkQyQURGMDYxNjM2MkRDNzAwMTk3RTQ3IC8qIFBERlBsdWdpblRleHRBbm5vdGF0aW9u
Lm1tICovOyB9OwogCQkyRDJBREYwQjE2MzYyRERCMDAxOTdFNDcgLyogUERGUGx1Z2luQW5ub3Rh
dGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
MkFERjAzMTYzNjI0MzUwMDE5N0U0NyAvKiBQREZQbHVnaW5Bbm5vdGF0aW9uLm1tICovOyB9Owog
CQkyRDJBREYxMDE2MzY0RDgyMDAxOTdFNDcgLyogUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMkFERjBF
MTYzNjREODIwMDE5N0U0NyAvKiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tICovOyB9Owot
CQkyRDM1M0IxMjE5RjgzMDVEMDAwRUVBQ0QgLyogQWN0aW9uTWVudUhpdFRlc3RSZXN1bHQubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDM1M0IxMDE5
RjgzMDVEMDAwRUVBQ0QgLyogQWN0aW9uTWVudUhpdFRlc3RSZXN1bHQubW0gKi87IH07Ci0JCTJE
MzUzQjEzMTlGODMwNUQwMDBFRUFDRCAvKiBBY3Rpb25NZW51SGl0VGVzdFJlc3VsdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQzNTNCMTExOUY4MzA1
RDAwMEVFQUNEIC8qIEFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0LmggKi87IH07CiAJCTJEM0E2NURB
MUE3QzNBMUYwMENBQzYzNyAvKiBXS05hdmlnYXRpb25BY3Rpb25SZWYuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQzQTY1RDgxQTdDM0ExRjAwQ0FD
NjM3IC8qIFdLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHAgKi87IH07CiAJCTJEM0E2NURCMUE3QzNB
MUYwMENBQzYzNyAvKiBXS05hdmlnYXRpb25BY3Rpb25SZWYuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEM0E2NUQ5MUE3QzNBMUYwMENBQzYzNyAvKiBX
S05hdmlnYXRpb25BY3Rpb25SZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkyRDNBNjVERTFBN0MzQTdEMDBDQUM2MzcgLyogV0tOYXZpZ2F0aW9u
UmVzcG9uc2VSZWYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkQzQTY1REMxQTdDM0E3RDAwQ0FDNjM3IC8qIFdLTmF2aWdhdGlvblJlc3BvbnNlUmVm
LmNwcCAqLzsgfTsKQEAgLTEwMDgsNiArMTAwNiw3IEBACiAJCTUxQUNCQjgyMTI3QThCQUQwMEQy
MDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFDQkI4MTEyN0E4QkFEMDBEMjAzQjkgLyogV2ViQ29udGV4
dE1lbnVQcm94eS5oICovOyB9OwogCQk1MUFDQkJBMDEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29u
dGV4dE1lbnVQcm94eU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFBQ0JCOUUxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlN
YWMuaCAqLzsgfTsKIAkJNTFBQ0JCQTExMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51
UHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUFDQkI5RjEyN0E4RjJDMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbSAq
LzsgfTsKKwkJNTFBRDM1NzMxQUQyRjM5NDAwNTdCMzhFIC8qIFdlYkhpdFRlc3RSZXN1bHQubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFEMzU3MjFB
RDJGMzc1MDA1N0IzOEUgLyogV2ViSGl0VGVzdFJlc3VsdC5tbSAqLzsgfTsKIAkJNTFCMTVBODQx
Mzg0M0EzOTAwMzIxQUQ4IC8qIEVudmlyb25tZW50VXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjE1QTgyMTM4NDNBMzkwMDMyMUFE
OCAvKiBFbnZpcm9ubWVudFV0aWxpdGllcy5jcHAgKi87IH07CiAJCTUxQjE1QTg1MTM4NDNBMzkw
MDMyMUFEOCAvKiBFbnZpcm9ubWVudFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMTVBODMxMzg0M0EzOTAwMzIxQUQ4IC8qIEVudmly
b25tZW50VXRpbGl0aWVzLmggKi87IH07CiAJCTUxQkEyNDQ0MTg1OEVFMzAwMEVBMjgxMSAvKiBB
c3luY1Rhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQkEyNDQzMTg1OEVFMzAwMEVBMjgxMSAvKiBBc3luY1Rhc2suaCAqLzsgfTsKQEAgLTI3NTcs
OCArMjc1Niw2IEBACiAJCTJEMkFERjBDMTYzNjNERUMwMDE5N0U0NyAvKiBQREZMYXllckNvbnRy
b2xsZXJEZXRhaWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBERkxheWVyQ29udHJvbGxlckRldGFpbHMu
aDsgcGF0aCA9IFBERi9QREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJEMkFERjBEMTYzNjREODIwMDE5N0U0NyAvKiBQREZQbHVnaW5DaG9p
Y2VBbm5vdGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBERlBsdWdp
bkNob2ljZUFubm90YXRpb24uaDsgcGF0aCA9IFBERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMkFERjBFMTYzNjREODIwMDE5N0U0
NyAvKiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbTsgcGF0aCA9IFBE
Ri9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkyRDM1M0IxMDE5RjgzMDVEMDAwRUVBQ0QgLyogQWN0aW9uTWVudUhpdFRlc3RSZXN1bHQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY3Rpb25NZW51SGl0
VGVzdFJlc3VsdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkQzNTNCMTExOUY4
MzA1RDAwMEVFQUNEIC8qIEFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJEM0E2NUQ4MUE3QzNBMUYwMENBQzYzNyAvKiBXS05hdmlnYXRp
b25BY3Rpb25SZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tO
YXZpZ2F0aW9uQWN0aW9uUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQz
QTY1RDkxQTdDM0ExRjAwQ0FDNjM3IC8qIFdLTmF2aWdhdGlvbkFjdGlvblJlZi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS05hdmlnYXRpb25BY3Rpb25SZWYuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQzQTY1REMxQTdDM0E3RDAwQ0FDNjM3IC8qIFdLTmF2
aWdhdGlvblJlc3BvbnNlUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdLTmF2aWdhdGlvblJlc3BvbnNlUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTMyMDMsNiArMzIwMCw3IEBACiAJCTUxQUNCQjlGMTI3QThGMkMwMEQyMDNCOSAvKiBX
ZWJDb250ZXh0TWVudVByb3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTFBQ0M5MzQxNjI4MDY0ODAwMzQyNTUwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTFBQ0M5MzUxNjI4MDY0ODAwMzQyNTUwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUFEMzU3MjFBRDJGMzc1MDA1N0IzOEUg
LyogV2ViSGl0VGVzdFJlc3VsdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkhpdFRlc3RS
ZXN1bHQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjE1QTgyMTM4NDNBMzkw
MDMyMUFEOCAvKiBFbnZpcm9ubWVudFV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBFbnZpcm9ubWVudFV0aWxpdGllcy5jcHA7IHBhdGggPSB1bml4L0Vu
dmlyb25tZW50VXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFC
MTVBODMxMzg0M0EzOTAwMzIxQUQ4IC8qIEVudmlyb25tZW50VXRpbGl0aWVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEVudmlyb25tZW50VXRpbGl0aWVzLmg7IHBhdGggPSB1
bml4L0Vudmlyb25tZW50VXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxQkEyNDQzMTg1OEVFMzAwMEVBMjgxMSAvKiBBc3luY1Rhc2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC02NTIwLDggKzY1MTgsNiBAQAogCQlCQzExMUI1QTExMkY2MjgyMDAzMzdCQUIgLyogbWFj
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkyRDM1M0Ix
MTE5RjgzMDVEMDAwRUVBQ0QgLyogQWN0aW9uTWVudUhpdFRlc3RSZXN1bHQuaCAqLywKLQkJCQky
RDM1M0IxMDE5RjgzMDVEMDAwRUVBQ0QgLyogQWN0aW9uTWVudUhpdFRlc3RSZXN1bHQubW0gKi8s
CiAJCQkJRTE3OUZEOUIxMzREMzgwNjAwMTVCODgzIC8qIEFyZ3VtZW50Q29kZXJzTWFjLmggKi8s
CiAJCQkJRTE3OUZEOUUxMzREMzgyNTAwMTVCODgzIC8qIEFyZ3VtZW50Q29kZXJzTWFjLm1tICov
LAogCQkJCUUxQTMxNzMxMTM0Q0VBNkMwMDdDOUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5nLmggKi8s
CkBAIC02NTY5LDYgKzY1NjUsNyBAQAogCQkJCUJDRTIzMjYyMTIyQzZDRjMwMEQ1QzM1QSAvKiBX
ZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0gKi8sCiAJCQkJQkMxMTFCNUIxMTJGNjI5ODAwMzM3
QkFCIC8qIFdlYkV2ZW50RmFjdG9yeS5oICovLAogCQkJCUJDMTExQjVDMTEyRjYyOTgwMDMzN0JB
QiAvKiBXZWJFdmVudEZhY3RvcnkubW0gKi8sCisJCQkJNTFBRDM1NzIxQUQyRjM3NTAwNTdCMzhF
IC8qIFdlYkhpdFRlc3RSZXN1bHQubW0gKi8sCiAJCQkJOTA1NjIwRTUxMkJDMjQ3NjAwMDc5OUI2
IC8qIFdlYk1lbW9yeVNhbXBsZXIubWFjLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CkBA
IC03NjA0LDcgKzc2MDEsNiBAQAogCQkJCTc1QThEMkM4MTg3Q0NGQUIwMEMzOUM5RSAvKiBfV0tX
ZWJzaXRlRGF0YVN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NUE4RDJENjE4N0QxQzBFMDBD
MzlDOUUgLyogX1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBMTE1REM3MjE5MUQ4MkRBMDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmgg
aW4gSGVhZGVycyAqLywKLQkJCQkyRDM1M0IxMzE5RjgzMDVEMDAwRUVBQ0QgLyogQWN0aW9uTWVu
dUhpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDc5MkQ4MTc2N0NDQTMwMDg4
MUNCRSAvKiBBY3Rpdml0eUFzc2VydGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NDY5NzAx
MURCRTYwMzAwNjQ1NUIwIC8qIEFQSUFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNERDIw
NjEyNUU1QTJGMDA0NTE1RTYgLyogQVBJQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTkzNzQs
NyArOTM3MCw2IEBACiAJCQkJMUE4MUIzODAxOEJENjZBRDAwMDdGREFDIC8qIF9XS1Zpc2l0ZWRM
aW5rUHJvdmlkZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk3NUE4RDJDOTE4N0NDRkFGMDBDMzlD
OUUgLyogX1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExMTVEQzcx
MTkxRDgyRDcwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0gaW4gU291cmNl
cyAqLywKLQkJCQkyRDM1M0IxMjE5RjgzMDVEMDAwRUVBQ0QgLyogQWN0aW9uTWVudUhpdFRlc3RS
ZXN1bHQubW0gaW4gU291cmNlcyAqLywKIAkJCQlBN0Q3OTJENjE3NjdDQjZFMDA4ODFDQkUgLyog
QWN0aXZpdHlBc3NlcnRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODM3MkRCMjgxQTY3NTYy
ODAwQzY5N0M1IC8qIFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzY0Njk2RjExREJFNjAzMDA2NDU1QjAgLyogQVBJQXJyYXkuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC05NzYyLDYgKzk3NTcsNyBAQAogCQkJCTMxQTUwNUY5MTY4MDAyNTUwMEE5
MzBFQiAvKiBXZWJDb250ZXh0Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMDlCOEY4
MTQ3NDYwRjcwMDVGNTYyNSAvKiBXZWJDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQ0RFMDU5QzExQ0RBOEFFMDBFNDFBRjEgLyogV2ViQ29udGV4dEluamVj
dGVkQnVuZGxlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxQUQzNTczMUFEMkYzOTQw
MDU3QjM4RSAvKiBXZWJIaXRUZXN0UmVzdWx0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4NzFC
NUIxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDMTExQTVCMTEyRjRGQkIwMDMzN0JBQiAvKiBXZWJDb250ZXh0TWVudUNsaWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MTAyMUU5QzEyQjE2Nzg4MDA1QzAzM0MgLyogV2ViQ29udGV4
dE1lbnVDbGllbnRNYWMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA1ODkxZDdmLi4wOGJi
NjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAKLSNp
bXBvcnQgIkFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0LmgiCiAjaW1wb3J0ICJBdHRyaWJ1dGVkU3Ry
aW5nLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJEaWN0aW9uYXJ5UG9w
dXBJbmZvLmgiCkBAIC00NSw2ICs0NCw3IEBACiAjaW1wb3J0ICJXZWJFdmVudC5oIgogI2ltcG9y
dCAiV2ViRXZlbnRDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJXZWJGcmFtZS5oIgorI2ltcG9ydCAi
V2ViSGl0VGVzdFJlc3VsdC5oIgogI2ltcG9ydCAiV2ViSW1hZ2UuaCIKICNpbXBvcnQgIldlYklu
c3BlY3Rvci5oIgogI2ltcG9ydCAiV2ViUGFnZU92ZXJsYXkuaCIKQEAgLTEwMTcsNyArMTAxNyw3
IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlvbihXZWJD
b3JlOjpGbG9hdFBvaW50IGxvY2F0aW9uSW5WCiAKICAgICBNYWluRnJhbWUmIG1haW5GcmFtZSA9
IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpOwogICAgIGlmICghbWFpbkZyYW1lLnZpZXcoKSB8fCAh
bWFpbkZyYW1lLnZpZXcoKS0+cmVuZGVyVmlldygpKSB7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0KEFjdGlvbk1lbnVIaXRU
ZXN0UmVzdWx0KCksIGZvckltbWVkaWF0ZUFjdGlvbiwgVXNlckRhdGEoKSkpOworICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdChX
ZWJIaXRUZXN0UmVzdWx0OjpEYXRhKCksIGZvckltbWVkaWF0ZUFjdGlvbiwgZmFsc2UsIFVzZXJE
YXRhKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTAzMywxMCArMTAzMyw4IEBA
IHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlvbihXZWJDb3Jl
OjpGbG9hdFBvaW50IGxvY2F0aW9uSW5WCiAgICAgICAgICAgICBtX2xhc3RBY3Rpb25NZW51SGl0
VGVzdFByZXZlbnRzRGVmYXVsdCA9IGVsZW1lbnQtPmRpc3BhdGNoTW91c2VGb3JjZVdpbGxCZWdp
bigpOwogICAgIH0KIAotICAgIEFjdGlvbk1lbnVIaXRUZXN0UmVzdWx0IGFjdGlvbk1lbnVSZXN1
bHQ7CisgICAgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSBhY3Rpb25NZW51UmVzdWx0KGhpdFRlc3RS
ZXN1bHQpOwogICAgIGFjdGlvbk1lbnVSZXN1bHQuaGl0VGVzdExvY2F0aW9uSW5WaWV3Q29vb3Jk
aW5hdGVzID0gbG9jYXRpb25JblZpZXdDb29vcmRpbmF0ZXM7Ci0gICAgYWN0aW9uTWVudVJlc3Vs
dC5oaXRUZXN0UmVzdWx0ID0gV2ViSGl0VGVzdFJlc3VsdDo6RGF0YShoaXRUZXN0UmVzdWx0KTsK
LSAgICBhY3Rpb25NZW51UmVzdWx0LmNvbnRlbnRQcmV2ZW50c0RlZmF1bHQgPSBtX2xhc3RBY3Rp
b25NZW51SGl0VGVzdFByZXZlbnRzRGVmYXVsdDsKIAogICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0
aW9uUmFuZ2UgPSBjb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJh
bWUoKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5maXJzdFJhbmdlKCk7CiAKQEAgLTEwODYsNyAr
MTA4NCw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlv
bihXZWJDb3JlOjpGbG9hdFBvaW50IGxvY2F0aW9uSW5WCiAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICBwYWdlT3ZlcmxheURpZE92ZXJyaWRlRGF0YURldGVjdG9ycyA9IHRydWU7Ci0g
ICAgICAgIGFjdGlvbk1lbnVSZXN1bHQuYWN0aW9uQ29udGV4dCA9IGFjdGlvbkNvbnRleHQ7Cisg
ICAgICAgIGFjdGlvbk1lbnVSZXN1bHQuZGV0ZWN0ZWREYXRhQWN0aW9uQ29udGV4dCA9IGFjdGlv
bkNvbnRleHQ7CiAKICAgICAgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7CiAgICAgICAgIG1h
aW5SZXN1bHRSYW5nZS0+dGV4dFF1YWRzKHF1YWRzKTsKQEAgLTExMDcsOCArMTEwNSw4IEBAIHZv
aWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpG
bG9hdFBvaW50IGxvY2F0aW9uSW5WCiAgICAgaWYgKCFwYWdlT3ZlcmxheURpZE92ZXJyaWRlRGF0
YURldGVjdG9ycyAmJiBoaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgpICYmIGhpdFRlc3RSZXN1bHQu
aW5uZXJOb2RlKCktPmlzVGV4dE5vZGUoKSkgewogICAgICAgICBGbG9hdFJlY3QgZGV0ZWN0ZWRE
YXRhQm91bmRpbmdCb3g7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gZGV0ZWN0ZWREYXRhUmFuZ2U7
Ci0gICAgICAgIGFjdGlvbk1lbnVSZXN1bHQuYWN0aW9uQ29udGV4dCA9IERhdGFEZXRlY3Rpb246
OmRldGVjdEl0ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KGhpdFRlc3RSZXN1bHQsIGRldGVjdGVkRGF0
YUJvdW5kaW5nQm94LCBkZXRlY3RlZERhdGFSYW5nZSk7Ci0gICAgICAgIGlmIChhY3Rpb25NZW51
UmVzdWx0LmFjdGlvbkNvbnRleHQgJiYgZGV0ZWN0ZWREYXRhUmFuZ2UpIHsKKyAgICAgICAgYWN0
aW9uTWVudVJlc3VsdC5kZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0ID0gRGF0YURldGVjdGlvbjo6
ZGV0ZWN0SXRlbUFyb3VuZEhpdFRlc3RSZXN1bHQoaGl0VGVzdFJlc3VsdCwgZGV0ZWN0ZWREYXRh
Qm91bmRpbmdCb3gsIGRldGVjdGVkRGF0YVJhbmdlKTsKKyAgICAgICAgaWYgKGFjdGlvbk1lbnVS
ZXN1bHQuZGV0ZWN0ZWREYXRhQWN0aW9uQ29udGV4dCAmJiBkZXRlY3RlZERhdGFSYW5nZSkgewog
ICAgICAgICAgICAgYWN0aW9uTWVudVJlc3VsdC5kZXRlY3RlZERhdGFCb3VuZGluZ0JveCA9IGRl
dGVjdGVkRGF0YUJvdW5kaW5nQm94OwogICAgICAgICAgICAgYWN0aW9uTWVudVJlc3VsdC5kZXRl
Y3RlZERhdGFUZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpk
ZXRlY3RlZERhdGFSYW5nZSwgdGV4dEluZGljYXRvclRyYW5zaXRpb25Gb3JBY3Rpb25NZW51KHNl
bGVjdGlvblJhbmdlLmdldCgpLCAqZGV0ZWN0ZWREYXRhUmFuZ2UsIGZvckltbWVkaWF0ZUFjdGlv
biwgdHJ1ZSkpOwogICAgICAgICAgICAgbV9sYXN0QWN0aW9uTWVudVJhbmdlRm9yU2VsZWN0aW9u
ID0gZGV0ZWN0ZWREYXRhUmFuZ2U7CkBAIC0xMTE4LDcgKzExMTYsNyBAQCB2b2lkIFdlYlBhZ2U6
OnBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBs
b2NhdGlvbkluVgogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAgICAgaW5qZWN0
ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudCgpLnByZXBhcmVGb3JBY3Rpb25NZW51KCp0aGlzLCBo
aXRUZXN0UmVzdWx0LCB1c2VyRGF0YSk7CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZFBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdChhY3Rpb25NZW51UmVzdWx0LCBmb3JJbW1l
ZGlhdGVBY3Rpb24sIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9i
amVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0KGFjdGlvbk1lbnVS
ZXN1bHQsIGZvckltbWVkaWF0ZUFjdGlvbiwgbV9sYXN0QWN0aW9uTWVudUhpdFRlc3RQcmV2ZW50
c0RlZmF1bHQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVj
dHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCiBQYXNzUmVmUHRyPFdl
YkNvcmU6OlJhbmdlPiBXZWJQYWdlOjpsb29rdXBUZXh0QXRMb2NhdGlvbihGbG9hdFBvaW50IGxv
Y2F0aW9uSW5WaWV3Q29vb3JkaW5hdGVzLCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>