<?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>168602</bug_id>
          
          <creation_ts>2017-02-20 09:07:01 -0800</creation_ts>
          <short_desc>Refactor data interaction to use new WKDataInteraction SPI</short_desc>
          <delta_ts>2017-02-28 14:05:03 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>168600</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>andersca</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1278946</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-02-20 09:07:01 -0800</bug_when>
    <thetext>Work towards &lt;rdar://problem/30313681&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278953</commentid>
    <comment_count>1</comment_count>
      <attachid>302152</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-02-20 09:17:40 -0800</bug_when>
    <thetext>Created attachment 302152
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279175</commentid>
    <comment_count>2</comment_count>
      <attachid>302215</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-02-20 18:30:21 -0800</bug_when>
    <thetext>Created attachment 302215
EWS trial run</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279423</commentid>
    <comment_count>3</comment_count>
      <attachid>302282</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-02-21 10:52:00 -0800</bug_when>
    <thetext>Created attachment 302282
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279439</commentid>
    <comment_count>4</comment_count>
      <attachid>302288</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-02-21 11:15:36 -0800</bug_when>
    <thetext>Created attachment 302288
Combined patch w/ 168600</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279456</commentid>
    <comment_count>5</comment_count>
      <attachid>302291</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-02-21 11:39:42 -0800</bug_when>
    <thetext>Created attachment 302291
Fix bad rebase conflict</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281944</commentid>
    <comment_count>6</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-02-28 14:05:03 -0800</bug_when>
    <thetext>Fixed in r212974</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302152</attachid>
            <date>2017-02-20 09:17:40 -0800</date>
            <delta_ts>2017-02-21 10:51:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168602-20170220091457.patch</filename>
            <type>text/plain</type>
            <size>27669</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRhMjFjMWY4ZWQ3ZDI0
YjIxYzZiMmUxMDRiNzRhZjdmZGIxY2UzZi4uMWU5MWZiY2VkZDFjZjhjMWNjNzVkNGQ5MjRkNGY2
ZGEwMDJjNmUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTAyLTIwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIGRh
dGEgaW50ZXJhY3Rpb24gdG8gdXNlIG5ldyBXS0RhdGFJbnRlcmFjdGlvbiBTUEkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODYwMgorICAgICAgICBX
b3JrIHRvd2FyZHMgPHJkYXI6Ly9wcm9ibGVtLzMwMzEzNjgxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1pbm9yIHR3ZWFrIHRvIGFkb3B0IG5ldyBV
SUl0ZW1Qcm92aWRlciBBUEkgKGFuZCBtb3ZlIG9mZiBvZiBkZXByZWNhdGVkIFNQSSkuIFRoZXJl
IHNob3VsZCBiZSBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbToKKyAgICAgICAgKC1bV2ViSXRlbVByb3Zp
ZGVyUGFzdGVib2FyZCBzZXRJdGVtczpdKToKKwogMjAxNy0wMi0xOSAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgcGx1bWJpbmcgdG8gdGhlIFVJ
IHByb2Nlc3MgZm9yIFRleHRJbmRpY2F0b3JEYXRhIHdoZW4gY29tcHV0aW5nIHRoZSBkcmFnIGlt
YWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggYjk3NzE4MmZiMDAzZTJkMjI5MTBmNWU0NGY3ZTg2NzNlMGQ0Njdj
Yy4uNDdlYjhjZjRjNWM3ZGVkNzNiN2NkYzM4ZDJjOTYxYTMxODNkNzVhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSw1ICsxLDM2IEBACiAyMDE3LTAyLTIwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCisgICAgICAgIFJlZmFjdG9yIGRhdGEgaW50ZXJhY3Rpb24gdG8gdXNlIG5l
dyBXS0RhdGFJbnRlcmFjdGlvbiBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2ODYwMgorICAgICAgICBXb3JrIHRvd2FyZHMgPHJkYXI6Ly9wcm9i
bGVtLzMwMzEzNjgxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkanVzdCB0ZXN0aW5nIFNQSSB0byBtYXRjaCBuZXcgZGF0YSBpbnRlcmFjdGlvbiBp
bnRlcmZhY2VzLgorCisgICAgICAgICogUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uRW50ZXJlZDpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblVwZGF0ZWQ6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25QZXJmb3JtT3BlcmF0aW9uOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uRW5kZWQ6XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25TZXNzaW9uRGlkRW5kOl0p
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NpbXVsYXRlV2lsbEJlZ2luRGF0YUludGVyYWN0aW9u
V2l0aFNlc3Npb246XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2ltdWxhdGVkSXRlbXNGb3JT
ZXNzaW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NpbXVsYXRlUHJlcGFyZUZvckRhdGFJ
bnRlcmFjdGlvblNlc3Npb246Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
aW11bGF0ZURhdGFJbnRlcmFjdGlvblNlc3Npb25EaWRFbmQ6d2l0aE9wZXJhdGlvbjpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaW11bGF0ZUZhaWxlZERhdGFJbnRlcmFjdGlv
bldpdGhJbmRleDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaW11bGF0ZVdp
bGxCZWdpbkRhdGFJbnRlcmFjdGlvbldpdGhJbmRleDp3aXRoU2Vzc2lvbjpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaW11bGF0ZWRJdGVtc0ZvckRhdGFJbnRlcmFjdGlvbldp
dGhJbmRleDpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlk
Q2hhbmdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcubW06CisKKzIwMTctMDItMjAgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKICAgICAgICAgUmVtb3ZlIHRoZSBk
YXRhIGludGVyYWN0aW9uIGdlc3R1cmUgcmVjb2duaXplcgogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NjAwCiAgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8zMDMxMzY4MT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJ
dGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
Ykl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KaW5kZXggYzJjZGVlY2I1NzMwNWQ3MDA2NGU5ZDQy
M2VhN2Q2NDM3ZTQ1ZmE1NC4uODY5NGFiNWE5MThmNzVjMTAyYzEzZjRmZDkwNjZjMDg5MTIxYjY1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRl
clBhc3RlYm9hcmQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Q
cm92aWRlclBhc3RlYm9hcmQubW0KQEAgLTE0OSw3ICsxNDksNyBAQCBzdGF0aWMgQk9PTCBpc0lt
YWdlVHlwZShOU1N0cmluZyAqdHlwZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICAgICAgW2l0ZW1SZXByZXNlbnRhdGlvbnNDb3B5IHJlbW92ZU9iamVjdEZvcktleTp0eXBl
SWRlbnRpZmllcl07Ci0gICAgICAgICAgICBbb2JqZWN0VG9Xcml0ZSByZWdpc3RlckxvYWRIYW5k
bGVyc1RvSXRlbVByb3ZpZGVyOml0ZW1Qcm92aWRlci5nZXQoKV07CisgICAgICAgICAgICBbaXRl
bVByb3ZpZGVyIHJlZ2lzdGVyT2JqZWN0Om9iamVjdFRvV3JpdGUgb3B0aW9uczpuaWxdOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gU2Vjb25kbHksIFdlYktpdCB1c2VzIHNvbWUgY3VzdG9tIHR5
cGUgcmVwcmVzZW50YXRpb25zIGFuZC9vciB0eXBlIGlkZW50aWZpZXJzLCBzbyB3ZSBuZWVkIHRv
IHdyaXRlIHRoZXNlIGFzIHdlbGwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9zcGkvaW9zL1VJS2l0U1BJLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9zL1VJ
S2l0U1BJLmgKaW5kZXggNjlkNGQ3YjlkMjE4MmYwMWFkMWRkNTU1ZjNiOTM5ZTI1Zjg0MWU3My4u
ZmJkYzg4OTk5ZjdmYWZjZTNjMzlmNjcwNzgyYWJkN2VjNWI0NWRkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaApAQCAtNTQsNiArNTQsNyBAQAogI2ltcG9y
dCA8VUlLaXQvVUlTdHJpbmdEcmF3aW5nX1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJVGFi
bGVWaWV3Q2VsbF9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVRhcEdlc3R1cmVSZWNvZ25p
emVyX1ByaXZhdGUuaD4KKyNpbXBvcnQgPFVJS2l0L1VJVGV4dEVmZmVjdHNXaW5kb3cuaD4KICNp
bXBvcnQgPFVJS2l0L1VJVGV4dElucHV0X1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJVGV4
dEludGVyYWN0aW9uQXNzaXN0YW50X1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJVmlld0Nv
bnRyb2xsZXJUcmFuc2l0aW9uaW5nX1ByaXZhdGUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNDg5NGU3M2Q2NDQ0NmY2ZDgxMmE5
NmFmYjY4NWNkMjEzYWRlZjQwZi4uOTFlMDY4Y2YxMmU4ZDIxZjFlMDJhYmRlYTFjY2ZiZTdkMWFj
MWY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KQEAgLTUxNzMsMzUgKzUxNzMsNjIgQEAgc3RhdGljIFdlYkNvcmU6OlVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24gdG9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFVJU2UKIAog
LSAodm9pZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25FbnRlcmVkOihpZClpbmZvCiB7CisjaWYg
RU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCisgICAgW19jb250ZW50VmlldyBfc2ltdWxhdGVEYXRh
SW50ZXJhY3Rpb25FbnRlcmVkOmluZm9dOworI2VuZGlmCiB9CiAKIC0gKHZvaWQpX3NpbXVsYXRl
RGF0YUludGVyYWN0aW9uVXBkYXRlZDooaWQpaW5mbwogeworI2lmIEVOQUJMRShEQVRBX0lOVEVS
QUNUSU9OKQorICAgIFtfY29udGVudFZpZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uVXBkYXRl
ZDppbmZvXTsKKyNlbmRpZgogfQogCiAtICh2b2lkKV9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblBl
cmZvcm1PcGVyYXRpb246KGlkKWluZm8KIHsKKyNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikK
KyAgICBbX2NvbnRlbnRWaWV3IF9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblBlcmZvcm1PcGVyYXRp
b246aW5mb107CisjZW5kaWYKIH0KIAogLSAodm9pZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25F
bmRlZDooaWQpaW5mbwogeworI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQorICAgIFtfY29u
dGVudFZpZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uRW5kZWQ6aW5mb107CisjZW5kaWYKIH0K
IAotLSAodm9pZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25TZXNzaW9uRGlkRW5kOihpZClzZXNz
aW9uIHdpdGhPcGVyYXRpb246KE5TVUludGVnZXIpb3BlcmF0aW9uCistICh2b2lkKV9zaW11bGF0
ZURhdGFJbnRlcmFjdGlvblNlc3Npb25EaWRFbmQ6KGlkKXNlc3Npb24KIHsKKyNpZiBFTkFCTEUo
REFUQV9JTlRFUkFDVElPTikKKyAgICBbX2NvbnRlbnRWaWV3IF9zaW11bGF0ZURhdGFJbnRlcmFj
dGlvblNlc3Npb25EaWRFbmQ6c2Vzc2lvbl07CisjZW5kaWYKIH0KIAotLSAodm9pZClfc2ltdWxh
dGVGYWlsZWREYXRhSW50ZXJhY3Rpb25XaXRoSW5kZXg6KE5TSW50ZWdlcilzb3VyY2VJbmRleAor
LSAodm9pZClfc2ltdWxhdGVXaWxsQmVnaW5EYXRhSW50ZXJhY3Rpb25XaXRoU2Vzc2lvbjooaWQp
c2Vzc2lvbgogeworI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQorICAgIFtfY29udGVudFZp
ZXcgX3NpbXVsYXRlV2lsbEJlZ2luRGF0YUludGVyYWN0aW9uV2l0aFNlc3Npb246c2Vzc2lvbl07
CisjZW5kaWYKIH0KIAotLSAodm9pZClfc2ltdWxhdGVXaWxsQmVnaW5EYXRhSW50ZXJhY3Rpb25X
aXRoSW5kZXg6KE5TSW50ZWdlcilzb3VyY2VJbmRleCB3aXRoU2Vzc2lvbjooaWQpc2Vzc2lvbgor
LSAoTlNBcnJheSAqKV9zaW11bGF0ZWRJdGVtc0ZvclNlc3Npb246KGlkKXNlc3Npb24KIHsKKyNp
ZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKKyAgICByZXR1cm4gW19jb250ZW50VmlldyBfc2lt
dWxhdGVkSXRlbXNGb3JTZXNzaW9uOnNlc3Npb25dOworI2Vsc2UKKyAgICByZXR1cm4gQFsgXTsK
KyNlbmRpZgogfQogCi0tIChOU0FycmF5ICopX3NpbXVsYXRlZEl0ZW1zRm9yRGF0YUludGVyYWN0
aW9uV2l0aEluZGV4OihOU0ludGVnZXIpc291cmNlSW5kZXgKKy0gKHZvaWQpX3NpbXVsYXRlUHJl
cGFyZUZvckRhdGFJbnRlcmFjdGlvblNlc3Npb246KGlkKXNlc3Npb24gY29tcGxldGlvbjooZGlz
cGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uCiB7CisjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04p
CisgICAgW19jb250ZW50VmlldyBfc2ltdWxhdGVQcmVwYXJlRm9yRGF0YUludGVyYWN0aW9uU2Vz
c2lvbjpzZXNzaW9uIGNvbXBsZXRpb246Y29tcGxldGlvbl07CisjZWxzZQogICAgIHJldHVybiBA
WyBdOworI2VuZGlmCiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggODY0MDIwMDZhNjRlMTE1Nzkx
OGJkMjEzNDdjNDVlYTA2ZWIyODExNS4uMTBkYmE2YWZjZTQ3NDlmZDFhNTZmZGM5ZjY5NmEyMGNi
MzE5Yjc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTMxMCwxMCArMzEwLDEwIEBAIHR5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIF9XS0ltbWVkaWF0ZUFjdGlvblR5cGUpIHsKIC0gKHZvaWQpX3NpbXVsYXRl
RGF0YUludGVyYWN0aW9uVXBkYXRlZDooaWQpaW5mbyBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19J
T1NfVEJBKSk7CiAtICh2b2lkKV9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblBlcmZvcm1PcGVyYXRp
b246KGlkKWluZm8gV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClf
c2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25FbmRlZDooaWQpaW5mbyBXS19BUElfQVZBSUxBQkxFKGlv
cyhXS19JT1NfVEJBKSk7Ci0tICh2b2lkKV9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblNlc3Npb25E
aWRFbmQ6KGlkKXNlc3Npb24gd2l0aE9wZXJhdGlvbjooTlNVSW50ZWdlcilvcGVyYXRpb24gV0tf
QVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwotLSAodm9pZClfc2ltdWxhdGVGYWlsZWRE
YXRhSW50ZXJhY3Rpb25XaXRoSW5kZXg6KE5TSW50ZWdlcilzb3VyY2VJbmRleCBXS19BUElfQVZB
SUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2b2lkKV9zaW11bGF0ZVdpbGxCZWdpbkRhdGFJ
bnRlcmFjdGlvbldpdGhJbmRleDooTlNJbnRlZ2VyKXNvdXJjZUluZGV4IHdpdGhTZXNzaW9uOihp
ZClzZXNzaW9uIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKLS0gKE5TQXJyYXkg
Kilfc2ltdWxhdGVkSXRlbXNGb3JEYXRhSW50ZXJhY3Rpb25XaXRoSW5kZXg6KE5TSW50ZWdlcilz
b3VyY2VJbmRleCBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9z
aW11bGF0ZURhdGFJbnRlcmFjdGlvblNlc3Npb25EaWRFbmQ6KGlkKXNlc3Npb24gV0tfQVBJX0FW
QUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfc2ltdWxhdGVXaWxsQmVnaW5EYXRh
SW50ZXJhY3Rpb25XaXRoU2Vzc2lvbjooaWQpc2Vzc2lvbiBXS19BUElfQVZBSUxBQkxFKGlvcyhX
S19JT1NfVEJBKSk7CistIChOU0FycmF5ICopX3NpbXVsYXRlZEl0ZW1zRm9yU2Vzc2lvbjooaWQp
c2Vzc2lvbiBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9zaW11
bGF0ZVByZXBhcmVGb3JEYXRhSW50ZXJhY3Rpb25TZXNzaW9uOihpZClzZXNzaW9uIGNvbXBsZXRp
b246KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbiBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19J
T1NfVEJBKSk7CiAKICNlbmRpZiAvLyBUQVJHRVRfT1NfSVBIT05FCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmlu
ZGV4IDJiOGMzM2NiMWM1OGIxOGM5NzgwYjQzNjVkNzllM2ZjOTA3MDQxZmMuLmQzNDRjN2I2ZDJj
N2RhMDRkMTEwNjNiZGNjZTQ2MDFkNWZiNTgxOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMTg3LDYg
KzE4Nyw3IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAKICNpZiBFTkFCTEUoREFU
QV9JTlRFUkFDVElPTikKICAgICBXZWJLaXQ6OldLRGF0YUludGVyYWN0aW9uU3RhdGUgX2RhdGFJ
bnRlcmFjdGlvblN0YXRlOworICAgIFJldGFpblB0cjxXS0RhdGFJbnRlcmFjdGlvbj4gX2RhdGFJ
bnRlcmFjdGlvbjsKICNlbmRpZgogfQogCkBAIC0xOTQsNyArMTk1LDcgQEAgc3RydWN0IFdLQXV0
b0NvcnJlY3Rpb25EYXRhIHsKIAogQGludGVyZmFjZSBXS0NvbnRlbnRWaWV3IChXS0ludGVyYWN0
aW9uKSA8VUlHZXN0dXJlUmVjb2duaXplckRlbGVnYXRlLCBVSVdlYlRvdWNoRXZlbnRzR2VzdHVy
ZVJlY29nbml6ZXJEZWxlZ2F0ZSwgVUlUZXh0SW5wdXRQcml2YXRlLCBVSVdlYkZvcm1BY2Nlc3Nv
cnlEZWxlZ2F0ZSwgVUlXS0ludGVyYWN0aW9uVmlld1Byb3RvY29sLCBXS0ZpbGVVcGxvYWRQYW5l
bERlbGVnYXRlLCBXS0FjdGlvblNoZWV0QXNzaXN0YW50RGVsZWdhdGUKICNpZiBFTkFCTEUoREFU
QV9JTlRFUkFDVElPTikKLSAgICAsIFdLVmlld0RhdGFJbnRlcmFjdGlvblNvdXJjZURlbGVnYXRl
LCBXS0RhdGFJbnRlcmFjdGlvblNlc3Npb25EZWxlZ2F0ZSwgV0tWaWV3RGF0YUludGVyYWN0aW9u
RGVzdGluYXRpb25EZWxlZ2F0ZSwgV0tEYXRhSW50ZXJhY3Rpb25JdGVtVmlzdWFsVGFyZ2V0Cisg
ICAgLCBXS0RhdGFJbnRlcmFjdGlvbkRlbGVnYXRlLCBXS1ZpZXdEYXRhSW50ZXJhY3Rpb25EZXN0
aW5hdGlvbkRlbGVnYXRlCiAjZW5kaWYKID4KIApAQCAtMjY4LDE0ICsyNjksMTQgQEAgc3RydWN0
IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKIC0gKHZvaWQpX2RpZFBlcmZvcm1EYXRhSW50ZXJhY3Rp
b25Db250cm9sbGVyT3BlcmF0aW9uOwogLSAodm9pZClfZGlkSGFuZGxlU3RhcnREYXRhSW50ZXJh
Y3Rpb25SZXF1ZXN0OihCT09MKXN0YXJ0ZWQ7CiAtICh2b2lkKV9zdGFydERhdGFJbnRlcmFjdGlv
bldpdGhJbWFnZTooUmV0YWluUHRyPENHSW1hZ2VSZWY+KWltYWdlIHdpdGhJbmRpY2F0b3JEYXRh
OihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPilpbmRpY2F0b3JEYXRh
IGF0Q2xpZW50UG9zaXRpb246KENHUG9pbnQpY2xpZW50UG9zaXRpb24gYW5jaG9yUG9pbnQ6KENH
UG9pbnQpYW5jaG9yUG9pbnQgYWN0aW9uOih1aW50NjRfdClhY3Rpb247Ci0tICh2b2lkKV9zaW11
bGF0ZURhdGFJbnRlcmFjdGlvbkVudGVyZWQ6KGlkKWluZm8gV0tfQVBJX0FWQUlMQUJMRShpb3Mo
V0tfSU9TX1RCQSkpOwotLSAodm9pZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25VcGRhdGVkOihp
ZClpbmZvIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKLS0gKHZvaWQpX3NpbXVs
YXRlRGF0YUludGVyYWN0aW9uUGVyZm9ybU9wZXJhdGlvbjooaWQpaW5mbyBXS19BUElfQVZBSUxB
QkxFKGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2b2lkKV9zaW11bGF0ZURhdGFJbnRlcmFjdGlvbkVu
ZGVkOihpZClpbmZvIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKLS0gKHZvaWQp
X3NpbXVsYXRlRGF0YUludGVyYWN0aW9uU2Vzc2lvbkRpZEVuZDooaWQpc2Vzc2lvbiB3aXRoT3Bl
cmF0aW9uOihOU1VJbnRlZ2VyKW9wZXJhdGlvbiBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1Nf
VEJBKSk7Ci0tICh2b2lkKV9zaW11bGF0ZUZhaWxlZERhdGFJbnRlcmFjdGlvbldpdGhJbmRleDoo
TlNJbnRlZ2VyKXNvdXJjZUluZGV4IFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsK
LS0gKHZvaWQpX3NpbXVsYXRlV2lsbEJlZ2luRGF0YUludGVyYWN0aW9uV2l0aEluZGV4OihOU0lu
dGVnZXIpc291cmNlSW5kZXggd2l0aFNlc3Npb246KGlkKXNlc3Npb24gV0tfQVBJX0FWQUlMQUJM
RShpb3MoV0tfSU9TX1RCQSkpOwotLSAoTlNBcnJheSAqKV9zaW11bGF0ZWRJdGVtc0ZvckRhdGFJ
bnRlcmFjdGlvbldpdGhJbmRleDooTlNJbnRlZ2VyKXNvdXJjZUluZGV4IFdLX0FQSV9BVkFJTEFC
TEUoaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uRW50
ZXJlZDooaWQpaW5mbzsKKy0gKHZvaWQpX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uVXBkYXRlZDoo
aWQpaW5mbzsKKy0gKHZvaWQpX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uUGVyZm9ybU9wZXJhdGlv
bjooaWQpaW5mbzsKKy0gKHZvaWQpX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uRW5kZWQ6KGlkKWlu
Zm87CistICh2b2lkKV9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblNlc3Npb25EaWRFbmQ6KGlkKXNl
c3Npb247CistICh2b2lkKV9zaW11bGF0ZVdpbGxCZWdpbkRhdGFJbnRlcmFjdGlvbldpdGhTZXNz
aW9uOihpZClzZXNzaW9uOworLSAoTlNBcnJheSAqKV9zaW11bGF0ZWRJdGVtc0ZvclNlc3Npb246
KGlkKXNlc3Npb247CistICh2b2lkKV9zaW11bGF0ZVByZXBhcmVGb3JEYXRhSW50ZXJhY3Rpb25T
ZXNzaW9uOihpZClzZXNzaW9uIGNvbXBsZXRpb246KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlv
bjsKICNlbmRpZgogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDM4OTIzYzY2YzU2ODgxZjhi
MDQyZTNkNThjM2Y1NjVkNmI5MzRlNjkuLmUxYTNjMWYyZjg2MGIyMDk4MzEwZWYyMTNiMGYxNTky
N2E0YTc4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0xNzE5LDEwICsxNzE5LDYgQEAgc3RhdGlj
IHZvaWQgY2FuY2VsUG90ZW50aWFsVGFwSWZOZWNlc3NhcnkoV0tDb250ZW50VmlldyogY29udGVu
dFZpZXcpCiAgICAgX2hhc1ZhbGlkUG9zaXRpb25JbmZvcm1hdGlvbiA9IFlFUzsKICAgICBpZiAo
X2FjdGlvblNoZWV0QXNzaXN0YW50KQogICAgICAgICBbX2FjdGlvblNoZWV0QXNzaXN0YW50IHVw
ZGF0ZVNoZWV0UG9zaXRpb25dOwotCi0jaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCi0gICAg
W3NlbGYgX3VwZGF0ZURhdGFJbnRlcmFjdGlvblByZXZpZXdTbmFwc2hvdElmUG9zc2libGVdOwot
I2VuZGlmCiB9CiAKIC0gKHZvaWQpX3dpbGxTdGFydFNjcm9sbGluZ09yWm9vbWluZwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5tbQppbmRleCAwYjQ3YTFmODcz
ZjJiMzVkOTY5MjZlMTJjZjU4YjY4MmZjNzY0YzVmLi44YjUxYzVmZGY2MTlmMTg5OTNmNTk3MDQ3
ZjZiOWQ1MmRiOGM2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dLU2Nyb2xsVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLU2Ny
b2xsVmlldy5tbQpAQCAtMTI5LDYgKzEyOSwxMCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owog
ICAgIHJldHVybiBzZWxmOwogfQogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykgJiYgX19o
YXNfaW5jbHVkZSg8V2ViS2l0QWRkaXRpb25zL1dLU2Nyb2xsVmlld0FkZGl0aW9ucy5tbT4pCisj
aW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV0tTY3JvbGxWaWV3QWRkaXRpb25zLm1tPgorI2VuZGlm
CisKIC0gKHZvaWQpc2V0SW50ZXJuYWxEZWxlZ2F0ZTooV0tXZWJWaWV3IDxVSVNjcm9sbFZpZXdE
ZWxlZ2F0ZT4gKilpbnRlcm5hbERlbGVnYXRlCiB7CiAgICAgaWYgKGludGVybmFsRGVsZWdhdGUg
PT0gX2ludGVybmFsRGVsZWdhdGUpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggOTkyNzNmNTQzNTBmZGM0ZmIyMGU0YWI2MzhiMWIyZjk1MzA3ZDVi
Mi4uN2U4MzgwMTU4NDk1NjAyODdhYTk1YTY2MTVlZWZkMGMxYzI1MjYzOSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI3IEBACiAy
MDE3LTAyLTIwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCisgICAg
ICAgIFJlZmFjdG9yIGRhdGEgaW50ZXJhY3Rpb24gdG8gdXNlIG5ldyBXS0RhdGFJbnRlcmFjdGlv
biBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
ODYwMgorICAgICAgICBXb3JrIHRvd2FyZHMgPHJkYXI6Ly9wcm9ibGVtLzMwMzEzNjgxPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBEYXRh
SW50ZXJhY3Rpb25TaW11bGF0b3IgdG8gc2ltdWxhdGUgZGF0YSBpbnRlcmFjdGlvbiB1c2luZyB1
cGRhdGVkIFNQSS4gU2VlIGNoYW5nZXMgaW4gV2ViS2l0MiBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW06
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW06CisgICAgICAgICgtW0RhdGFJbnRlcmFj
dGlvblNpbXVsYXRvciBfcmVzZXRTaW11bGF0ZWRTdGF0ZV0pOgorICAgICAgICAoLVtEYXRhSW50
ZXJhY3Rpb25TaW11bGF0b3IgcnVuRnJvbTp0bzpdKToKKyAgICAgICAgKC1bRGF0YUludGVyYWN0
aW9uU2ltdWxhdG9yIF9hZHZhbmNlUHJvZ3Jlc3NdKToKKyAgICAgICAgKC1bRGF0YUludGVyYWN0
aW9uU2ltdWxhdG9yIF9jdXJyZW50TG9jYXRpb25dKToKKyAgICAgICAgKC1bRGF0YUludGVyYWN0
aW9uU2ltdWxhdG9yIF9maW5pc2hEYXRhSW50ZXJhY3Rpb25dKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHdlYlZpZXdEaWRTZW5kRGF0YUludGVyYWN0aW9u
U3RhcnRSZXF1ZXN0Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11
bGF0b3Igd2ViVmlldzpkaWRSZWNlaXZlRGF0YUludGVyYWN0aW9uU3RhcnRSZXNwb25zZTpdKTog
RGVsZXRlZC4KKworMjAxNy0wMi0yMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KKwogICAgICAgICBSZW1vdmUgdGhlIGRhdGEgaW50ZXJhY3Rpb24gZ2VzdHVyZSByZWNv
Z25pemVyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Njg2MDAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwMzEzNjgxPgpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQppbmRleCBh
ZWQ0YzhhMjhkNGI1M2I2NDRhOGNmYzMwMjVkMzUxYjNhYzQwZjZiLi41Y2M3YTFlMzUxMDJlM2Mw
N2E2ODg2ZjRiYzk4NDViZWQ3NjczYjZjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQpAQCAtNzUsNyArNzUsNiBAQCBU
RVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBJbWFnZVRvVGV4dGFyZWEpCiAKICAgICBOU1VSTCAq
aW1hZ2VVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOlt3ZWJWaWV3IGVkaXRvclZhbHVlXV07
CiAgICAgRVhQRUNUX1dLX1NUUkVRKCJpY29uLnBuZyIsIGltYWdlVVJMLmxhc3RQYXRoQ29tcG9u
ZW50KTsKLSAgICBFWFBFQ1RfVFJVRShbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGRpZFRyeVRv
QmVnaW5EYXRhSW50ZXJhY3Rpb25dKTsKIAogICAgIE5TQXJyYXkgKm9ic2VydmVkRXZlbnROYW1l
cyA9IFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igb2JzZXJ2ZWRFdmVudE5hbWVzXTsKICAgICBF
WFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFj
dGlvbkVudGVyRXZlbnROYW1lXSk7CkBAIC05Myw3ICs5Miw2IEBAIFRFU1QoRGF0YUludGVyYWN0
aW9uVGVzdHMsIENvbnRlbnRFZGl0YWJsZVRvQ29udGVudEVkaXRhYmxlKQogCiAgICAgRVhQRUNU
X0VRKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzb3VyY2UudGV4dENv
bnRlbnQiXS5sZW5ndGgsIDBVTCk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKCJIZWxsbyB3b3JsZCIs
IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJlZGl0b3IudGV4dENvbnRl
bnQiXS5VVEY4U3RyaW5nKTsKLSAgICBFWFBFQ1RfVFJVRShbZGF0YUludGVyYWN0aW9uU2ltdWxh
dG9yIGRpZFRyeVRvQmVnaW5EYXRhSW50ZXJhY3Rpb25dKTsKIAogICAgIE5TQXJyYXkgKm9ic2Vy
dmVkRXZlbnROYW1lcyA9IFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igb2JzZXJ2ZWRFdmVudE5h
bWVzXTsKICAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0
OkRhdGFJbnRlcmFjdGlvbkVudGVyRXZlbnROYW1lXSk7CkBAIC0xMTEsNyArMTA5LDYgQEAgVEVT
VChEYXRhSW50ZXJhY3Rpb25UZXN0cywgQ29udGVudEVkaXRhYmxlVG9UZXh0YXJlYSkKIAogICAg
IEVYUEVDVF9FUShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAic291cmNl
LnRleHRDb250ZW50Il0ubGVuZ3RoLCAwVUwpOwogICAgIEVYUEVDVF9XS19TVFJFUSgiSGVsbG8g
d29ybGQiLCBbd2ViVmlldyBlZGl0b3JWYWx1ZV0uVVRGOFN0cmluZyk7Ci0gICAgRVhQRUNUX1RS
VUUoW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBkaWRUcnlUb0JlZ2luRGF0YUludGVyYWN0aW9u
XSk7CiAKICAgICBOU0FycmF5ICpvYnNlcnZlZEV2ZW50TmFtZXMgPSBbZGF0YUludGVyYWN0aW9u
U2ltdWxhdG9yIG9ic2VydmVkRXZlbnROYW1lc107CiAgICAgRVhQRUNUX1RSVUUoW29ic2VydmVk
RXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50ZXJhY3Rpb25FbnRlckV2ZW50TmFtZV0p
OwpAQCAtMTI4LDcgKzEyNSw2IEBAIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIExpbmtUb0lu
cHV0KQogICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgx
MDAsIDUwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOwogCiAgICAgRVhQRUNUX1dLX1NUUkVR
KCJodHRwczovL3d3dy5kYXJpbmdmaXJlYmFsbC5uZXQvIiwgW3dlYlZpZXcgZWRpdG9yVmFsdWVd
LlVURjhTdHJpbmcpOwotICAgIEVYUEVDVF9UUlVFKFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Ig
ZGlkVHJ5VG9CZWdpbkRhdGFJbnRlcmFjdGlvbl0pOwogCiAgICAgTlNBcnJheSAqb2JzZXJ2ZWRF
dmVudE5hbWVzID0gW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBvYnNlcnZlZEV2ZW50TmFtZXNd
OwogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0
YUludGVyYWN0aW9uRW50ZXJFdmVudE5hbWVdKTsKQEAgLTE0NSw3ICsxNDEsNiBAQCBURVNUKERh
dGFJbnRlcmFjdGlvblRlc3RzLCBCYWNrZ3JvdW5kSW1hZ2VMaW5rVG9JbnB1dCkKICAgICBbZGF0
YUludGVyYWN0aW9uU2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMTAwLCA1MCkgdG86Q0dQ
b2ludE1ha2UoMTAwLCAzMDApXTsKIAogICAgIEVYUEVDVF9XS19TVFJFUSgiaHR0cHM6Ly93d3cu
ZGFyaW5nZmlyZWJhbGwubmV0LyIsIFt3ZWJWaWV3IGVkaXRvclZhbHVlXS5VVEY4U3RyaW5nKTsK
LSAgICBFWFBFQ1RfVFJVRShbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGRpZFRyeVRvQmVnaW5E
YXRhSW50ZXJhY3Rpb25dKTsKIAogICAgIE5TQXJyYXkgKm9ic2VydmVkRXZlbnROYW1lcyA9IFtk
YXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igb2JzZXJ2ZWRFdmVudE5hbWVzXTsKICAgICBFWFBFQ1Rf
VFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvbkVu
dGVyRXZlbnROYW1lXSk7CkBAIC0xNjIsNyArMTU3LDYgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25U
ZXN0cywgQ2FuUHJldmVudFN0YXJ0KQogICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgcnVu
RnJvbTpDR1BvaW50TWFrZSgxMDAsIDUwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOwogCiAg
ICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGVkaXRvckNvbnRhaW5zSW1hZ2VFbGVtZW50XSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgZGlkVHJ5VG9CZWdpbkRh
dGFJbnRlcmFjdGlvbl0pOwogCiAgICAgTlNBcnJheSAqb2JzZXJ2ZWRFdmVudE5hbWVzID0gW2Rh
dGFJbnRlcmFjdGlvblNpbXVsYXRvciBvYnNlcnZlZEV2ZW50TmFtZXNdOwogICAgIEVYUEVDVF9G
QUxTRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvbkVu
dGVyRXZlbnROYW1lXSk7CkBAIC0xNzgsNyArMTcyLDYgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25U
ZXN0cywgQ2FuUHJldmVudE9wZXJhdGlvbikKICAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9y
IHJ1bkZyb206Q0dQb2ludE1ha2UoMTAwLCA1MCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsK
IAogICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBlZGl0b3JDb250YWluc0ltYWdlRWxlbWVudF0p
OwotICAgIEVYUEVDVF9UUlVFKFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgZGlkVHJ5VG9CZWdp
bkRhdGFJbnRlcmFjdGlvbl0pOwogCiAgICAgTlNBcnJheSAqb2JzZXJ2ZWRFdmVudE5hbWVzID0g
W2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBvYnNlcnZlZEV2ZW50TmFtZXNdOwogICAgIEVYUEVD
VF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9u
RW50ZXJFdmVudE5hbWVdKTsKQEAgLTE5NCw3ICsxODcsNiBAQCBURVNUKERhdGFJbnRlcmFjdGlv
blRlc3RzLCBFbnRlckFuZExlYXZlRXZlbnRzKQogICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0
b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgxMDAsIDUwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDQ1MCld
OwogCiAgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBlZGl0b3JWYWx1ZV0uVVRGOFN0
cmluZyk7Ci0gICAgRVhQRUNUX1RSVUUoW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBkaWRUcnlU
b0JlZ2luRGF0YUludGVyYWN0aW9uXSk7CiAKICAgICBOU0FycmF5ICpvYnNlcnZlZEV2ZW50TmFt
ZXMgPSBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIG9ic2VydmVkRXZlbnROYW1lc107CiAgICAg
RVhQRUNUX1RSVUUoW29ic2VydmVkRXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50ZXJh
Y3Rpb25FbnRlckV2ZW50TmFtZV0pOwpAQCAtMjAzLDIyICsxOTUsNiBAQCBURVNUKERhdGFJbnRl
cmFjdGlvblRlc3RzLCBFbnRlckFuZExlYXZlRXZlbnRzKQogICAgIEVYUEVDVF9GQUxTRShbb2Jz
ZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvblBlcmZvcm1PcGVy
YXRpb25FdmVudE5hbWVdKTsKIH0KIAotVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgSGFuZGxl
c0RhdGFJbnRlcmFjdGlvbkZhaWx1cmVHcmFjZWZ1bGx5KQotewotICAgIFJldGFpblB0cjxUZXN0
V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKLSAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJsaW5rLWFuZC1pbnB1dCJdOwotCi0gICAgUmV0
YWluUHRyPERhdGFJbnRlcmFjdGlvblNpbXVsYXRvcj4gZGF0YUludGVyYWN0aW9uU2ltdWxhdG9y
ID0gYWRvcHROUyhbW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJW
aWV3OndlYlZpZXcuZ2V0KCldKTsKLSAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHNldEZv
cmNlUmVxdWVzdFRvRmFpbDpZRVNdOwotICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgcnVu
RnJvbTpDR1BvaW50TWFrZSgxMDAsIDUwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOwotICAg
IEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgZWRpdG9yVmFsdWVdLlVURjhTdHJpbmcpOwot
Ci0gICAgLy8gQmVmb3JlIHIyMTIyNjYsIHN0YXJ0aW5nIGEgc3Vic2VxdWVudCBnZXN0dXJlIHdv
dWxkIGhhdmUgY2F1c2VkIGEgZGVidWcgYXNzZXJ0aW9uIGluIHRoZSB3ZWIgcHJvY2Vzcy4KLSAg
ICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHNldEZvcmNlUmVxdWVzdFRvRmFpbDpOT107Ci0g
ICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDEwMCwgNTAp
IHRvOkNHUG9pbnRNYWtlKDEwMCwgMzAwKV07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJodHRwczov
L3d3dy5kYXJpbmdmaXJlYmFsbC5uZXQvIiwgW3dlYlZpZXcgZWRpdG9yVmFsdWVdLlVURjhTdHJp
bmcpOwotfQotCiBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBFeHRlcm5hbFNvdXJjZVVURjhQ
bGFpblRleHRPbmx5KQogewogICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCAzMjAsIDUwMCldKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0Rh
dGFJbnRlcmFjdGlvblNpbXVsYXRvci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUlu
dGVyYWN0aW9uU2ltdWxhdG9yLmgKaW5kZXggYWU2YzhjZmZiYzRjZmY1NmJiOTZkMGRiNDA5OTZi
MTcxOTE2OTU0MS4uNTEwYmRmYjVmOGI4MjIyZjM2ZmRhNmMyMWRkMTcxZmU4NGRkOTFiNSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9y
LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9y
LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCiBAY2xhc3Mg
TW9ja0RhdGFJbnRlcmFjdGlvbkluZm87CitAY2xhc3MgTW9ja0RhdGFJbnRlcmFjdGlvblNlc3Np
b247CiAKIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IERhdGFJbnRlcmFjdGlvbkVudGVyRXZlbnRO
YW1lOwogZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgRGF0YUludGVyYWN0aW9uT3ZlckV2ZW50TmFt
ZTsKQEAgLTQwLDcgKzQxLDggQEAgZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgRGF0YUludGVyYWN0
aW9uTGVhdmVFdmVudE5hbWU7CiBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBEYXRhSW50ZXJhY3Rp
b25TdGFydEV2ZW50TmFtZTsKIAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgRGF0YUludGVy
YWN0aW9uUGhhc2UpIHsKLSAgICBEYXRhSW50ZXJhY3Rpb25VbnJlY29nbml6ZWQgPSAxLAorICAg
IERhdGFJbnRlcmFjdGlvbkNhbmNlbGxlZCA9IDAsCisgICAgRGF0YUludGVyYWN0aW9uQmVnaW5u
aW5nID0gMSwKICAgICBEYXRhSW50ZXJhY3Rpb25CZWdhbiA9IDIsCiAgICAgRGF0YUludGVyYWN0
aW9uRW50ZXJlZCA9IDMsCiAgICAgRGF0YUludGVyYWN0aW9uUGVyZm9ybWluZyA9IDQKQEAgLTQ4
LDEzICs1MCwxNCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBEYXRhSW50ZXJhY3Rpb25Q
aGFzZSkgewogCiBAaW50ZXJmYWNlIERhdGFJbnRlcmFjdGlvblNpbXVsYXRvciA6IE5TT2JqZWN0
PF9XS1Rlc3RpbmdEZWxlZ2F0ZT4gewogICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBfd2Vi
VmlldzsKKyAgICBSZXRhaW5QdHI8TW9ja0RhdGFJbnRlcmFjdGlvblNlc3Npb24+IF9kYXRhSW50
ZXJhY3Rpb25TZXNzaW9uOwogICAgIFJldGFpblB0cjxNb2NrRGF0YUludGVyYWN0aW9uSW5mbz4g
X2RhdGFJbnRlcmFjdGlvbkluZm87CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBfb2Jz
ZXJ2ZWRFdmVudE5hbWVzOwogICAgIFJldGFpblB0cjxVSUl0ZW1Qcm92aWRlcj4gX2V4dGVybmFs
SXRlbVByb3ZpZGVyOwogICAgIENHUG9pbnQgX3N0YXJ0TG9jYXRpb247CiAgICAgQ0dQb2ludCBf
ZW5kTG9jYXRpb247CiAKLSAgICBkb3VibGUgX2dlc3R1cmVQcm9ncmVzczsKKyAgICBkb3VibGUg
X2N1cnJlbnRQcm9ncmVzczsKICAgICBib29sIF9pc0RvbmVXaXRoQ3VycmVudFJ1bjsKICAgICBE
YXRhSW50ZXJhY3Rpb25QaGFzZSBfcGhhc2U7CiB9CkBAIC02Miw5ICs2NSw3IEBAIHR5cGVkZWYg
TlNfRU5VTShOU0ludGVnZXIsIERhdGFJbnRlcmFjdGlvblBoYXNlKSB7CiAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhXZWJWaWV3OihUZXN0V0tXZWJWaWV3ICopd2ViVmlldzsKIC0gKHZvaWQpcnVu
RnJvbTooQ0dQb2ludClzdGFydExvY2F0aW9uIHRvOihDR1BvaW50KWVuZExvY2F0aW9uOwogCi1A
cHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBmb3JjZVJlcXVlc3RUb0ZhaWw7CiBAcHJvcGVydHkg
KG5vbmF0b21pYywgc3Ryb25nKSBVSUl0ZW1Qcm92aWRlciAqZXh0ZXJuYWxJdGVtUHJvdmlkZXI7
Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgZGlkVHJ5VG9CZWdpbkRhdGFJ
bnRlcmFjdGlvbjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheSAqb2Jz
ZXJ2ZWRFdmVudE5hbWVzOwogCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lv
cy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW0KaW5kZXggOTM1YzJiN2U3MzVkMTA3YmE4ZjJi
NzZkY2QwMzZlNWJkNjlkMGEwYi4uMjg1OWI1NjM3NTM5Y2MyODA3ZDYwOTI3NWUxZjVlNzIwNzBi
MjZmZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9u
U2ltdWxhdG9yLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlv
blNpbXVsYXRvci5tbQpAQCAtNzMsMTEgKzczLDEyIEBAIHN0YXRpYyBOU0FycmF5ICpkYXRhSW50
ZXJhY3Rpb25FdmVudE5hbWVzKCkKIAogLSAodm9pZClfcmVzZXRTaW11bGF0ZWRTdGF0ZQogewot
ICAgIF9nZXN0dXJlUHJvZ3Jlc3MgPSAwOwotICAgIF9waGFzZSA9IERhdGFJbnRlcmFjdGlvblVu
cmVjb2duaXplZDsKKyAgICBfcGhhc2UgPSBEYXRhSW50ZXJhY3Rpb25CZWdpbm5pbmc7CisgICAg
X2N1cnJlbnRQcm9ncmVzcyA9IDA7CiAgICAgX2lzRG9uZVdpdGhDdXJyZW50UnVuID0gZmFsc2U7
Ci0gICAgX2RpZFRyeVRvQmVnaW5EYXRhSW50ZXJhY3Rpb24gPSBOTzsKICAgICBfb2JzZXJ2ZWRF
dmVudE5hbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAg
X2RhdGFJbnRlcmFjdGlvblNlc3Npb24gPSBuaWw7CisgICAgX2RhdGFJbnRlcmFjdGlvbkluZm8g
PSBuaWw7CiB9CiAKIC0gKE5TQXJyYXkgKilvYnNlcnZlZEV2ZW50TmFtZXMKQEAgLTEwMSw2MSAr
MTAyLDgwIEBAIHN0YXRpYyBOU0FycmF5ICpkYXRhSW50ZXJhY3Rpb25FdmVudE5hbWVzKCkKICAg
ICBfZW5kTG9jYXRpb24gPSBlbmRMb2NhdGlvbjsKIAogICAgIGlmIChzZWxmLmV4dGVybmFsSXRl
bVByb3ZpZGVyKSB7CisgICAgICAgIF9kYXRhSW50ZXJhY3Rpb25JbmZvID0gYWRvcHROUyhbW01v
Y2tEYXRhSW50ZXJhY3Rpb25JbmZvIGFsbG9jXSBpbml0V2l0aFByb3ZpZGVyOnNlbGYuZXh0ZXJu
YWxJdGVtUHJvdmlkZXIgbG9jYXRpb246X3N0YXJ0TG9jYXRpb24gd2luZG93Oltfd2ViVmlldyB3
aW5kb3ddXSk7CiAgICAgICAgIF9waGFzZSA9IERhdGFJbnRlcmFjdGlvbkJlZ2FuOwotICAgICAg
ICBfZGF0YUludGVyYWN0aW9uSW5mbyA9IGFkb3B0TlMoW1tNb2NrRGF0YUludGVyYWN0aW9uSW5m
byBhbGxvY10gaW5pdFdpdGhQcm92aWRlcjpzZWxmLmV4dGVybmFsSXRlbVByb3ZpZGVyIGxvY2F0
aW9uOnN0YXJ0TG9jYXRpb24gd2luZG93Oltfd2ViVmlldyB3aW5kb3ddXSk7CisgICAgICAgIFtz
ZWxmIF9hZHZhbmNlUHJvZ3Jlc3NdOworICAgIH0gZWxzZSB7CisgICAgICAgIF9kYXRhSW50ZXJh
Y3Rpb25TZXNzaW9uID0gYWRvcHROUyhbW01vY2tEYXRhSW50ZXJhY3Rpb25TZXNzaW9uIGFsbG9j
XSBpbml0V2l0aFdpbmRvdzpbX3dlYlZpZXcgd2luZG93XV0pOworICAgICAgICBbX2RhdGFJbnRl
cmFjdGlvblNlc3Npb24gc2V0TW9ja0xvY2F0aW9uSW5XaW5kb3c6X3N0YXJ0TG9jYXRpb25dOwor
ICAgICAgICBbX3dlYlZpZXcgX3NpbXVsYXRlUHJlcGFyZUZvckRhdGFJbnRlcmFjdGlvblNlc3Np
b246X2RhdGFJbnRlcmFjdGlvblNlc3Npb24uZ2V0KCkgY29tcGxldGlvbjpeKCkgeworICAgICAg
ICAgICAgRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yICp3ZWFrU2VsZiA9IHN0cm9uZ1NlbGYuZ2V0
KCk7CisgICAgICAgICAgICB3ZWFrU2VsZi0+X3BoYXNlID0gRGF0YUludGVyYWN0aW9uQmVnaW5u
aW5nOworICAgICAgICAgICAgW3dlYWtTZWxmIF9hZHZhbmNlUHJvZ3Jlc3NdOworICAgICAgICB9
XTsKICAgICB9CiAKLSAgICBbc2VsZiBfc2NoZWR1bGVBZHZhbmNlUHJvZ3Jlc3NdOwotCiAgICAg
VXRpbDo6cnVuKCZfaXNEb25lV2l0aEN1cnJlbnRSdW4pOwogICAgIFtfd2ViVmlldyBjbGVhck1l
c3NhZ2VIYW5kbGVyczpkYXRhSW50ZXJhY3Rpb25FdmVudE5hbWVzKCldOwogfQogCiAtICh2b2lk
KV9hZHZhbmNlUHJvZ3Jlc3MKIHsKLSAgICBfZ2VzdHVyZVByb2dyZXNzID0gc3RkOjptaW4oMS4w
LCBzdGQ6Om1heCgwLjAsIHByb2dyZXNzSW5jcmVtZW50U3RlcCArIF9nZXN0dXJlUHJvZ3Jlc3Mp
KTsKLSAgICBbX2RhdGFJbnRlcmFjdGlvbkluZm8gc2V0TW9ja0xvY2F0aW9uSW5XaW5kb3c6c2Vs
Zi5fY3VycmVudExvY2F0aW9uXTsKLSAgICBpZiAoX2dlc3R1cmVQcm9ncmVzcyA+PSAxKSB7Ci0g
ICAgICAgIFtzZWxmIF9maW5pc2hEYXRhSW50ZXJhY3Rpb25dOworICAgIF9jdXJyZW50UHJvZ3Jl
c3MgKz0gcHJvZ3Jlc3NJbmNyZW1lbnRTdGVwOworICAgIENHUG9pbnQgbG9jYXRpb25JbldpbmRv
dyA9IHNlbGYuX2N1cnJlbnRMb2NhdGlvbjsKKyAgICBbX2RhdGFJbnRlcmFjdGlvblNlc3Npb24g
c2V0TW9ja0xvY2F0aW9uSW5XaW5kb3c6bG9jYXRpb25JbldpbmRvd107CisgICAgW19kYXRhSW50
ZXJhY3Rpb25JbmZvIHNldE1vY2tMb2NhdGlvbkluV2luZG93OmxvY2F0aW9uSW5XaW5kb3ddOwor
CisgICAgaWYgKF9jdXJyZW50UHJvZ3Jlc3MgPj0gMSkgeworICAgICAgICBbX3dlYlZpZXcgX3Np
bXVsYXRlRGF0YUludGVyYWN0aW9uUGVyZm9ybU9wZXJhdGlvbjpfZGF0YUludGVyYWN0aW9uSW5m
by5nZXQoKV07CisgICAgICAgIFtfd2ViVmlldyBfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25FbmRl
ZDpfZGF0YUludGVyYWN0aW9uSW5mby5nZXQoKV07CisgICAgICAgIGlmIChfZGF0YUludGVyYWN0
aW9uU2Vzc2lvbikKKyAgICAgICAgICAgIFtfd2ViVmlldyBfc2ltdWxhdGVEYXRhSW50ZXJhY3Rp
b25TZXNzaW9uRGlkRW5kOl9kYXRhSW50ZXJhY3Rpb25TZXNzaW9uLmdldCgpXTsKKworICAgICAg
ICBfcGhhc2UgPSBEYXRhSW50ZXJhY3Rpb25QZXJmb3JtaW5nOworICAgICAgICBfY3VycmVudFBy
b2dyZXNzID0gMTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHN3aXRjaCAoX3BoYXNl
KSB7Ci0gICAgY2FzZSBEYXRhSW50ZXJhY3Rpb25VbnJlY29nbml6ZWQ6Ci0gICAgICAgIFtzZWxm
IF9zY2hlZHVsZUFkdmFuY2VQcm9ncmVzc107CisgICAgY2FzZSBEYXRhSW50ZXJhY3Rpb25CZWdp
bm5pbmc6IHsKKyAgICAgICAgTlNNdXRhYmxlQXJyYXk8VUlJdGVtUHJvdmlkZXIgKj4gKml0ZW1Q
cm92aWRlcnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgICAgICBOU0FycmF5PFdLRGF0
YUludGVyYWN0aW9uSXRlbSAqPiAqaXRlbXMgPSBbX3dlYlZpZXcgX3NpbXVsYXRlZEl0ZW1zRm9y
U2Vzc2lvbjpfZGF0YUludGVyYWN0aW9uU2Vzc2lvbi5nZXQoKV07CisgICAgICAgIGlmICghaXRl
bXMuY291bnQpIHsKKyAgICAgICAgICAgIF9waGFzZSA9IERhdGFJbnRlcmFjdGlvbkNhbmNlbGxl
ZDsKKyAgICAgICAgICAgIF9jdXJyZW50UHJvZ3Jlc3MgPSAxOworICAgICAgICAgICAgX2lzRG9u
ZVdpdGhDdXJyZW50UnVuID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGZvciAoV0tEYXRhSW50ZXJhY3Rpb25JdGVtICppdGVtIGluIGl0ZW1zKQorICAg
ICAgICAgICAgW2l0ZW1Qcm92aWRlcnMgYWRkT2JqZWN0Oml0ZW0uaXRlbVByb3ZpZGVyXTsKKwor
ICAgICAgICBfZGF0YUludGVyYWN0aW9uSW5mbyA9IGFkb3B0TlMoW1tNb2NrRGF0YUludGVyYWN0
aW9uSW5mbyBhbGxvY10gaW5pdFdpdGhQcm92aWRlcjppdGVtUHJvdmlkZXJzLmZpcnN0T2JqZWN0
IGxvY2F0aW9uOnNlbGYuX2N1cnJlbnRMb2NhdGlvbiB3aW5kb3c6W193ZWJWaWV3IHdpbmRvd11d
KTsKKyAgICAgICAgW19kYXRhSW50ZXJhY3Rpb25TZXNzaW9uIHNldEl0ZW1zOml0ZW1zXTsKKyAg
ICAgICAgW193ZWJWaWV3IF9zaW11bGF0ZVdpbGxCZWdpbkRhdGFJbnRlcmFjdGlvbldpdGhTZXNz
aW9uOl9kYXRhSW50ZXJhY3Rpb25TZXNzaW9uLmdldCgpXTsKKyAgICAgICAgX3BoYXNlID0gRGF0
YUludGVyYWN0aW9uQmVnYW47CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIERhdGFJ
bnRlcmFjdGlvbkJlZ2FuOgogICAgICAgICBbX3dlYlZpZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0
aW9uRW50ZXJlZDpfZGF0YUludGVyYWN0aW9uSW5mby5nZXQoKV07CiAgICAgICAgIF9waGFzZSA9
IERhdGFJbnRlcmFjdGlvbkVudGVyZWQ7Ci0gICAgICAgIFtzZWxmIF9zY2hlZHVsZUFkdmFuY2VQ
cm9ncmVzc107CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGF0YUludGVyYWN0aW9uRW50ZXJl
ZDoKICAgICAgICAgW193ZWJWaWV3IF9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblVwZGF0ZWQ6X2Rh
dGFJbnRlcmFjdGlvbkluZm8uZ2V0KCldOwotICAgICAgICBbc2VsZiBfc2NoZWR1bGVBZHZhbmNl
UHJvZ3Jlc3NdOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsK
ICAgICB9Ci19Ci0KLS0gKHZvaWQpX2ZpbmlzaERhdGFJbnRlcmFjdGlvbgotewotICAgIGlmIChf
cGhhc2UgPT0gRGF0YUludGVyYWN0aW9uVW5yZWNvZ25pemVkKSB7Ci0gICAgICAgIF9pc0RvbmVX
aXRoQ3VycmVudFJ1biA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAgICBfcGhh
c2UgPSBEYXRhSW50ZXJhY3Rpb25QZXJmb3JtaW5nOwotICAgIFtfd2ViVmlldyBfc2ltdWxhdGVE
YXRhSW50ZXJhY3Rpb25QZXJmb3JtT3BlcmF0aW9uOl9kYXRhSW50ZXJhY3Rpb25JbmZvLmdldCgp
XTsKLSAgICBbX3dlYlZpZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uRW5kZWQ6X2RhdGFJbnRl
cmFjdGlvbkluZm8uZ2V0KCldOwotICAgIFtfd2ViVmlldyBfc2ltdWxhdGVEYXRhSW50ZXJhY3Rp
b25TZXNzaW9uRGlkRW5kOm5pbCB3aXRoT3BlcmF0aW9uOjBdOworICAgIFtzZWxmIF9zY2hlZHVs
ZUFkdmFuY2VQcm9ncmVzc107CiB9CiAKIC0gKENHUG9pbnQpX2N1cnJlbnRMb2NhdGlvbgogewog
ICAgIENHRmxvYXQgZGlzdGFuY2VYID0gX2VuZExvY2F0aW9uLnggLSBfc3RhcnRMb2NhdGlvbi54
OwogICAgIENHRmxvYXQgZGlzdGFuY2VZID0gX2VuZExvY2F0aW9uLnkgLSBfc3RhcnRMb2NhdGlv
bi55OwotICAgIHJldHVybiBDR1BvaW50TWFrZShfc3RhcnRMb2NhdGlvbi54ICsgX2dlc3R1cmVQ
cm9ncmVzcyAqIGRpc3RhbmNlWCwgX3N0YXJ0TG9jYXRpb24ueSArIF9nZXN0dXJlUHJvZ3Jlc3Mg
KiBkaXN0YW5jZVkpOworICAgIHJldHVybiBDR1BvaW50TWFrZShfc3RhcnRMb2NhdGlvbi54ICsg
X2N1cnJlbnRQcm9ncmVzcyAqIGRpc3RhbmNlWCwgX3N0YXJ0TG9jYXRpb24ueSArIF9jdXJyZW50
UHJvZ3Jlc3MgKiBkaXN0YW5jZVkpOwogfQogCiAtICh2b2lkKV9zY2hlZHVsZUFkdmFuY2VQcm9n
cmVzcwpAQCAtMTgxLDIwICsyMDEsNiBAQCBzdGF0aWMgTlNBcnJheSAqZGF0YUludGVyYWN0aW9u
RXZlbnROYW1lcygpCiAgICAgX2lzRG9uZVdpdGhDdXJyZW50UnVuID0gdHJ1ZTsKIH0KIAotLSAo
dm9pZCl3ZWJWaWV3RGlkU2VuZERhdGFJbnRlcmFjdGlvblN0YXJ0UmVxdWVzdDooV0tXZWJWaWV3
ICopd2ViVmlldwotewotICAgIC8vIFRoaXMgYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24gaW4g
dGhlIHRlc3RpbmcgaGFybmVzcyB3aGVyZWluIHRoZSB3ZWIgcHJvY2VzcyBtaWdodCB0YWtlIGxv
bmdlciB0aGFuIHVzdWFsIHRvIHByb2Nlc3MgdGhlCi0gICAgLy8gcmVxdWVzdCB0byBzdGFydCBk
YXRhIGludGVyYWN0aW9uLCBhbmQgaW4gdGhlIG1lYW50aW1lLCBEYXRhSW50ZXJhY3Rpb25TaW11
bGF0b3Igd291bGQgZW5kIHVwIGNvbXBsZXRpbmcgdGhlIHJlc3Qgb2YgdGhlIHRlc3QKLSAgICAv
LyBiZWZvcmUgYSByZXNwb25zZSBmcm9tIHRoZSB3ZWIgcHJvY2VzcyBpcyByZWNlaXZlZC4gV2Ug
aW5zdGVhZCBkZWZlciB0ZXN0IHByb2dyZXNzIHVudGlsIGFmdGVyIHRoZSB3ZWIgcHJvY2VzcyBo
YXMgaW5kaWNhdGVkCi0gICAgLy8gd2hldGhlciBvciBub3QgZGF0YSBpbnRlcmFjdGlvbiBzaG91
bGQgY29tbWVuY2UuCi0gICAgW05TT2JqZWN0IGNhbmNlbFByZXZpb3VzUGVyZm9ybVJlcXVlc3Rz
V2l0aFRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfYWR2YW5jZVByb2dyZXNzKSBvYmpl
Y3Q6bmlsXTsKLX0KLQotLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFJl
Y2VpdmVEYXRhSW50ZXJhY3Rpb25TdGFydFJlc3BvbnNlOihCT09MKXN0YXJ0ZWQKLXsKLSAgICBb
c2VsZiBfc2NoZWR1bGVBZHZhbmNlUHJvZ3Jlc3NdOwotfQotCiBAZW5kCiAKICNlbmRpZiAvLyBF
TkFCTEUoREFUQV9JTlRFUkFDVElPTikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302215</attachid>
            <date>2017-02-20 18:30:21 -0800</date>
            <delta_ts>2017-02-20 18:30:48 -0800</delta_ts>
            <desc>EWS trial run</desc>
            <filename>bug-168602-20170220182737.patch</filename>
            <type>text/plain</type>
            <size>16254</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWQzM2EwY2NjNGI2OWNi
M2EyMGNlZTA4Yzg4MzZkMzYxOWZkYTdhMS4uYWMwMGY4OWUwOGY0YzY5MWQ0MWRmOTUxMTVjYWM3
ZjI5NjhjNmY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI4IEBACiAyMDE3LTAyLTIwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCisgICAgICAgIFJlbW92ZSB0aGUg
ZGF0YSBpbnRlcmFjdGlvbiBnZXN0dXJlIHJlY29nbml6ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODYwMAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzAzMTM2ODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgorCisg
ICAgICAgIFRoZSBkYXRhIGludGVyYWN0aW9uIGdlc3R1cmUgcmVjb2duaXplciB3aWxsIG5vIGxv
bmdlciBiZSBuZWVkZWQgbW92aW5nIGZvcndhcmQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaW11bGF0ZURhdGFJ
bnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVkXSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXR1
cEludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2xlYW51cEludGVyYWN0
aW9uXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3JlbW92ZURlZmF1bHRHZXN0dXJlUmVj
b2duaXplcnNdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfYWRkRGVmYXVsdEdlc3R1cmVS
ZWNvZ25pemVyc10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGdlc3R1cmVSZWNvZ25pemVy
OnNob3VsZFJlY29nbml6ZVNpbXVsdGFuZW91c2x5V2l0aEdlc3R1cmVSZWNvZ25pemVyOl0pOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGdlc3R1cmVSZWNvZ25pemVyU2hvdWxkQmVnaW46XSk6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RhdGFJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25p
emVyXSk6IERlbGV0ZWQuCisKKzIwMTctMDItMjAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CisKICAgICAgICAgQWRkIHBsdW1iaW5nIHRvIHRoZSBVSSBwcm9jZXNzIGZv
ciBUZXh0SW5kaWNhdG9yRGF0YSB3aGVuIGNvbXB1dGluZyB0aGUgZHJhZyBpbWFnZQogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NTgzCiAgICAgICAg
IFdvcmsgdG93YXJkcyA8cmRhcjovL3Byb2JsZW0vMzAzMTM2ODE+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDQ0NTM0MWYzYmY2NmI3
NWYzY2QxZTI2NTg5ZGEyNzY0MGMxZmViZjAuLjQ4OTRlNzNkNjQ0NDZmNmQ4MTJhOTZhZmI2ODVj
ZDIxM2FkZWY0MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCkBAIC01MTcxLDExICs1MTcxLDYgQEAgc3RhdGljIFdlYkNvcmU6OlVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gdG9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFVJ
U2UKICAgICBXZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjpzaW5nbGV0b24oKS5zZXREaXNhYmxl
U25hcHNob3RWb2xhdGlsaXR5Rm9yVGVzdGluZyh0cnVlKTsKIH0KIAotCi0tICh2b2lkKV9zaW11
bGF0ZURhdGFJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVkCi17Ci19Ci0KIC0gKHZvaWQpX3Np
bXVsYXRlRGF0YUludGVyYWN0aW9uRW50ZXJlZDooaWQpaW5mbwogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRl
eCBiMGE5OWQ2ZjIyMThiMDY1NGY5ODFkODg2M2I0OGQ2MTQwOTFkNzU5Li44NjQwMjAwNmE2NGUx
MTU3OTE4YmQyMTM0N2M0NWVhMDZlYjI4MTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMzA2LDcgKzMwNiw2
IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0ltbWVkaWF0ZUFjdGlvblR5cGUpIHsK
IAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU051bWJlciAqX3N0YWJsZVN0YXRl
T3ZlcnJpZGUgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwogCi0tICh2b2lkKV9z
aW11bGF0ZURhdGFJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVkIFdLX0FQSV9BVkFJTEFCTEUo
aW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uRW50ZXJl
ZDooaWQpaW5mbyBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV9z
aW11bGF0ZURhdGFJbnRlcmFjdGlvblVwZGF0ZWQ6KGlkKWluZm8gV0tfQVBJX0FWQUlMQUJMRShp
b3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25QZXJmb3Jt
T3BlcmF0aW9uOihpZClpbmZvIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5oCmluZGV4IGI2YmZjNmQ0ZTkxNDBiYmE1NTIxM2Y1NTI3NzJmMjM0ODVlZmUxZGYu
LjJiOGMzM2NiMWM1OGIxOGM5NzgwYjQzNjVkNzllM2ZjOTA3MDQxZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aApAQCAtMTE4LDkgKzExOCw2IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAgICAg
UmV0YWluUHRyPFVJVGFwR2VzdHVyZVJlY29nbml6ZXI+IF90d29GaW5nZXJEb3VibGVUYXBHZXN0
dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8VUlUYXBHZXN0dXJlUmVjb2duaXplcj4gX3R3
b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyOwogICAgIFJldGFpblB0cjxXS0luc3Bl
Y3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplcj4gX2luc3BlY3Rvck5vZGVTZWFyY2hHZXN0
dXJlUmVjb2duaXplcjsKLSNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKLSAgICBSZXRhaW5Q
dHI8VUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcj4gX2RhdGFJbnRlcmFjdGlvbkdlc3R1cmVS
ZWNvZ25pemVyOwotI2VuZGlmCiAKICAgICBSZXRhaW5QdHI8VUlXS1RleHRJbnRlcmFjdGlvbkFz
c2lzdGFudD4gX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQ7CiAgICAgUmV0YWluUHRyPFVJV0tTZWxl
Y3Rpb25Bc3Npc3RhbnQ+IF93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQ7CkBAIC0yNzEsNyArMjY4LDYg
QEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKIC0gKHZvaWQpX2RpZFBlcmZvcm1EYXRh
SW50ZXJhY3Rpb25Db250cm9sbGVyT3BlcmF0aW9uOwogLSAodm9pZClfZGlkSGFuZGxlU3RhcnRE
YXRhSW50ZXJhY3Rpb25SZXF1ZXN0OihCT09MKXN0YXJ0ZWQ7CiAtICh2b2lkKV9zdGFydERhdGFJ
bnRlcmFjdGlvbldpdGhJbWFnZTooUmV0YWluUHRyPENHSW1hZ2VSZWY+KWltYWdlIHdpdGhJbmRp
Y2F0b3JEYXRhOihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPilpbmRp
Y2F0b3JEYXRhIGF0Q2xpZW50UG9zaXRpb246KENHUG9pbnQpY2xpZW50UG9zaXRpb24gYW5jaG9y
UG9pbnQ6KENHUG9pbnQpYW5jaG9yUG9pbnQgYWN0aW9uOih1aW50NjRfdClhY3Rpb247Ci0tICh2
b2lkKV9zaW11bGF0ZURhdGFJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVkOihVSUxvbmdQcmVz
c0dlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIgV0tfQVBJX0FWQUlMQUJMRShp
b3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25FbnRlcmVk
OihpZClpbmZvIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3Np
bXVsYXRlRGF0YUludGVyYWN0aW9uVXBkYXRlZDooaWQpaW5mbyBXS19BUElfQVZBSUxBQkxFKGlv
cyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblBlcmZvcm1P
cGVyYXRpb246KGlkKWluZm8gV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQppbmRleCBmOTU3YzZjNWIyYzU3YjAwZjEwNmNiODIwZTU5NjVmMDgxNjBhODZh
Li4zODkyM2M2NmM1Njg4MWY4YjA0MmUzZDU4YzNmNTY1ZDZiOTM0ZTY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQpAQCAtNTU4LDExICs1NTgsNiBAQCBzdGF0aWMgVUlXZWJTZWxlY3Rpb25Nb2RlIHRvVUlX
ZWJTZWxlY3Rpb25Nb2RlKFdLU2VsZWN0aW9uR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdAogICAgIFtz
ZWxmIF9jcmVhdGVBbmRDb25maWd1cmVMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcl07CiAKICNp
ZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKLSAgICBfZGF0YUludGVyYWN0aW9uR2VzdHVyZVJl
Y29nbml6ZXIgPSBhZG9wdE5TKFtbVUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBhbGxvY10g
aW5pdFdpdGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKF9kYXRhSW50ZXJhY3Rpb25HZXN0
dXJlUmVjb2duaXplZDopXSk7Ci0gICAgW19kYXRhSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXpl
ciBzZXREZWxheTowLjVdOwotICAgIFtfZGF0YUludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIg
c2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgW19kYXRhSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXpl
ciBfc2V0UmVxdWlyZXNRdWlldEltcHVsc2U6WUVTXTsKLSAgICBbc2VsZiBhZGRHZXN0dXJlUmVj
b2duaXplcjpfZGF0YUludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogICAgIFtz
ZWxmIHNldHVwRGF0YUludGVyYWN0aW9uRGVsZWdhdGVzXTsKICNlbmRpZgogCkBAIC02NDIsOCAr
NjM3LDYgQEAgc3RhdGljIFVJV2ViU2VsZWN0aW9uTW9kZSB0b1VJV2ViU2VsZWN0aW9uTW9kZShX
S1NlbGVjdGlvbkdyYW51bGFyaXR5IGdyYW51bGFyaXQKICAgICBbc2VsZiByZW1vdmVHZXN0dXJl
UmVjb2duaXplcjpfdHdvRmluZ2VyU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwog
CiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCi0gICAgW19kYXRhSW50ZXJhY3Rpb25HZXN0
dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpuaWxdOwotICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVS
ZWNvZ25pemVyOl9kYXRhSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAgICAg
W3NlbGYgdGVhcmRvd25EYXRhSW50ZXJhY3Rpb25EZWxlZ2F0ZXNdOwogI2VuZGlmCiAKQEAgLTY3
NCw5ICs2NjcsNiBAQCBzdGF0aWMgVUlXZWJTZWxlY3Rpb25Nb2RlIHRvVUlXZWJTZWxlY3Rpb25N
b2RlKFdLU2VsZWN0aW9uR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdAogICAgIFtzZWxmIHJlbW92ZUdl
c3R1cmVSZWNvZ25pemVyOl9ub25CbG9ja2luZ0RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdl
dCgpXTsKICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfdHdvRmluZ2VyRG91Ymxl
VGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNv
Z25pemVyOl90d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07Ci0jaWYg
RU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCi0gICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6
ZXI6X2RhdGFJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKLSNlbmRpZgogfQog
CiAtICh2b2lkKV9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzCkBAIC02ODgsOSArNjc4LDYg
QEAgc3RhdGljIFVJV2ViU2VsZWN0aW9uTW9kZSB0b1VJV2ViU2VsZWN0aW9uTW9kZShXS1NlbGVj
dGlvbkdyYW51bGFyaXR5IGdyYW51bGFyaXQKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXpl
cjpfbm9uQmxvY2tpbmdEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAgICAgW3Nl
bGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25p
emVyLmdldCgpXTsKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfdHdvRmluZ2VyU2lu
Z2xlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwotI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNU
SU9OKQotICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9kYXRhSW50ZXJhY3Rpb25HZXN0
dXJlUmVjb2duaXplci5nZXQoKV07Ci0jZW5kaWYKIH0KIAogLSAoVUlWaWV3Kil1bnNjYWxlZFZp
ZXcKQEAgLTEyMjYsMTQgKzEyMTMsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihV
SUdlc3R1cmVSZWNvZ25pemVyICphLCBVSUdlc3R1cmVSZWNvZ25pemVyICpiLCBVSQogICAgIGlm
IChpc1NhbWVQYWlyKGdlc3R1cmVSZWNvZ25pemVyLCBvdGhlckdlc3R1cmVSZWNvZ25pemVyLCBf
aGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCksIF9wcmV2aWV3R2VzdHVy
ZVJlY29nbml6ZXIuZ2V0KCkpKQogICAgICAgICByZXR1cm4gWUVTOwogCi0jaWYgRU5BQkxFKERB
VEFfSU5URVJBQ1RJT04pCi0gICAgaWYgKGlzU2FtZVBhaXIoZ2VzdHVyZVJlY29nbml6ZXIsIG90
aGVyR2VzdHVyZVJlY29nbml6ZXIsIF9oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXpl
ci5nZXQoKSwgX2RhdGFJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmdldCgpKSkKLSAgICAg
ICAgcmV0dXJuIFlFUzsKLQotICAgIGlmIChpc1NhbWVQYWlyKGdlc3R1cmVSZWNvZ25pemVyLCBv
dGhlckdlc3R1cmVSZWNvZ25pemVyLCBfbG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCks
IF9kYXRhSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5nZXQoKSkpCi0gICAgICAgIHJldHVy
biBZRVM7Ci0jZW5kaWYKLQogICAgIHJldHVybiBOTzsKIH0KIApAQCAtMTQwNCwxMSArMTM4Myw2
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVQYWlyKFVJR2VzdHVyZVJlY29nbml6ZXIgKmEs
IFVJR2VzdHVyZVJlY29nbml6ZXIgKmIsIFVJCiAgICAgICAgIH0KICAgICB9CiAKLSNpZiBFTkFC
TEUoREFUQV9JTlRFUkFDVElPTikKLSAgICBpZiAoZ2VzdHVyZVJlY29nbml6ZXIgPT0gX2RhdGFJ
bnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyKQotICAgICAgICByZXR1cm4gW3NlbGYgcG9pbnRJ
c0luRGF0YUludGVyYWN0aW9uQ29udGVudDpwb2ludF07Ci0jZW5kaWYKLQogICAgIHJldHVybiBZ
RVM7CiB9CiAKQEAgLTE0NjQsMTEgKzE0MzgsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1l
UGFpcihVSUdlc3R1cmVSZWNvZ25pemVyICphLCBVSUdlc3R1cmVSZWNvZ25pemVyICpiLCBVSQog
ICAgIHJldHVybiBfcG9zaXRpb25JbmZvcm1hdGlvbi5oYXNTZWxlY3Rpb25BdFBvc2l0aW9uOwog
fQogCi0tIChVSUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyICopX2RhdGFJbnRlcmFjdGlvbkdl
c3R1cmVSZWNvZ25pemVyCi17Ci0gICAgcmV0dXJuIF9kYXRhSW50ZXJhY3Rpb25HZXN0dXJlUmVj
b2duaXplci5nZXQoKTsKLX0KLQogI2VuZGlmCiAKIC0gKEJPT0wpcG9pbnRJc05lYXJNYXJrZWRU
ZXh0OihDR1BvaW50KXBvaW50CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggNTk4NmE0NjQ3Zjg0YjJkZjA4MjAzYjgwZDU5NTc4NjIwNjQxMjkwOS4u
OTUyY2JhZmFhMDYyZDQ4Nzc5YTczYzU4NDFmZGYxMzU0MjM1MzFlZCAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE3
LTAyLTIwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAg
IFJlbW92ZSB0aGUgZGF0YSBpbnRlcmFjdGlvbiBnZXN0dXJlIHJlY29nbml6ZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODYwMAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzAzMTM2ODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENh
cmxzc29uLgorCisgICAgICAgIEFkanVzdCBUZXN0V2ViS2l0QVBJIGZvciBjaGFuZ2VzIGluIFdl
YktpdDIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11
bGF0b3IuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11
bGF0b3IubW06CisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBpbml0V2l0aFdl
YlZpZXc6XSk6CisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOnRv
Ol0pOgorICAgICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgX2FkdmFuY2VQcm9ncmVz
c10pOgorICAgICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgX2ZpbmlzaERhdGFJbnRl
cmFjdGlvbl0pOgorICAgICAgICAoLVtNb2NrTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgaW5p
dFdpdGhXaW5kb3c6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW01vY2tMb25nUHJlc3NHZXN0dXJl
UmVjb2duaXplciBsb2NhdGlvbkluVmlldzpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bTW9ja0xv
bmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIHN0YXRlXSk6IERlbGV0ZWQuCisgICAgICAgICgtW01v
Y2tMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBudW1iZXJPZlRvdWNoZXNdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIF9yZWNvZ25pemVHZXN0dXJlQXRM
b2NhdGlvbjp3aXRoU3RhdGU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlv
blNpbXVsYXRvciBkYXRhSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplcl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igd2ViVmlldzpiZWdpbkRhdGFJbnRl
cmFjdGlvbldpdGhTb3VyY2VJbmRleDpnZXN0dXJlUmVjb2duaXplcjpdKTogRGVsZXRlZC4KKwog
MjAxNy0wMi0xNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBhIG5ldyBkcmFnIGNvZGUgcGF0aCBhbmQgdXNlIGl0IGZvciBkcmFnZ2luZyBwbGFp
biB0ZXh0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rp
b25TaW11bGF0b3IuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNp
bXVsYXRvci5oCmluZGV4IDc0OTRlNzZiOTBlODE3ZDE0NTdlMzA2OGQ4NTE0Y2U4Yjc0ZmIwNDUu
LmFlNmM4Y2ZmYmM0Y2ZmNTZiYjk2ZDBkYjQwOTk2YjE3MTkxNjk1NDEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5oCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5oCkBAIC0zMSw3
ICszMSw2IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLVGVzdGluZ0RlbGVnYXRlLmg+CiAjaW1wb3J0
IDx3dGYvQmxvY2tQdHIuaD4KIAotQGNsYXNzIE1vY2tMb25nUHJlc3NHZXN0dXJlUmVjb2duaXpl
cjsKIEBjbGFzcyBNb2NrRGF0YUludGVyYWN0aW9uSW5mbzsKIAogZXh0ZXJuIE5TU3RyaW5nICog
Y29uc3QgRGF0YUludGVyYWN0aW9uRW50ZXJFdmVudE5hbWU7CkBAIC00OSw3ICs0OCw2IEBAIHR5
cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIERhdGFJbnRlcmFjdGlvblBoYXNlKSB7CiAKIEBpbnRl
cmZhY2UgRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIDogTlNPYmplY3Q8X1dLVGVzdGluZ0RlbGVn
YXRlPiB7CiAgICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IF93ZWJWaWV3OwotICAgIFJldGFp
blB0cjxNb2NrTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXI+IF9nZXN0dXJlUmVjb2duaXplcjsK
ICAgICBSZXRhaW5QdHI8TW9ja0RhdGFJbnRlcmFjdGlvbkluZm8+IF9kYXRhSW50ZXJhY3Rpb25J
bmZvOwogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX29ic2VydmVkRXZlbnROYW1lczsK
ICAgICBSZXRhaW5QdHI8VUlJdGVtUHJvdmlkZXI+IF9leHRlcm5hbEl0ZW1Qcm92aWRlcjsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRv
ci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5t
bQppbmRleCBlNmI1ODFkNTA0NjQ5YzljYTNhOWNlMmZmNDIyOGMwN2QwMjBmMzRmLi45MzVjMmI3
ZTczNWQxMDdiYThmMmI3NmRjZDAzNmU1YmQ2OWQwYTBiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLm1tCkBAIC0zOSw0NiArMzks
NiBAQCB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKICNpbmNsdWRlIDxXZWJLaXRBZGRp
dGlvbnMvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yQWRkaXRpb25zLm1tPgogI2VuZGlmCiAKLUBp
bnRlcmZhY2UgTW9ja0xvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIDogVUlMb25nUHJlc3NHZXN0
dXJlUmVjb2duaXplciB7Ci0gICAgUmV0YWluUHRyPFVJV2luZG93PiBfd2luZG93OwotfQotCi1A
cHJvcGVydHkgKG5vbmF0b21pYykgQ0dQb2ludCBtb2NrTG9jYXRpb25JbldpbmRvdzsKLUBwcm9w
ZXJ0eSAobm9uYXRvbWljKSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUgbW9ja1N0YXRlOwotQHBy
b3BlcnR5IChub25hdG9taWMpIE5TSW50ZWdlciBtb2NrTnVtYmVyT2ZUb3VjaGVzOwotCi1AZW5k
Ci0KLUBpbXBsZW1lbnRhdGlvbiBNb2NrTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIKLQotLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoV2luZG93OihVSVdpbmRvdyAqKXdpbmRvdwotewotICAgIGlm
IChzZWxmID0gW3N1cGVyIGluaXRdKSB7Ci0gICAgICAgIF93aW5kb3cgPSB3aW5kb3c7Ci0gICAg
ICAgIF9tb2NrU3RhdGUgPSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVQb3NzaWJsZTsKLSAgICAg
ICAgX21vY2tOdW1iZXJPZlRvdWNoZXMgPSAwOwotICAgICAgICBfbW9ja0xvY2F0aW9uSW5XaW5k
b3cgPSBDR1BvaW50WmVybzsKLSAgICB9Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKENHUG9p
bnQpbG9jYXRpb25JblZpZXc6KFVJVmlldyAqKXZpZXcKLXsKLSAgICByZXR1cm4gW3ZpZXcgY29u
dmVydFBvaW50Ol9tb2NrTG9jYXRpb25JbldpbmRvdyBmcm9tVmlldzpfd2luZG93LmdldCgpXTsK
LX0KLQotLSAoVUlHZXN0dXJlUmVjb2duaXplclN0YXRlKXN0YXRlCi17Ci0gICAgcmV0dXJuIF9t
b2NrU3RhdGU7Ci19Ci0KLS0gKE5TVUludGVnZXIpbnVtYmVyT2ZUb3VjaGVzCi17Ci0gICAgcmV0
dXJuIF9tb2NrTnVtYmVyT2ZUb3VjaGVzOwotfQotCi1AZW5kCi0KIHN0YXRpYyBkb3VibGUgcHJv
Z3Jlc3NJbmNyZW1lbnRTdGVwID0gMC4wMzM7CiBzdGF0aWMgZG91YmxlIHByb2dyZXNzVGltZVN0
ZXAgPSAwLjAxNjsKIApAQCAtOTgsOSArNTgsNiBAQCBzdGF0aWMgTlNBcnJheSAqZGF0YUludGVy
YWN0aW9uRXZlbnROYW1lcygpCiB7CiAgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKICAg
ICAgICAgX3dlYlZpZXcgPSB3ZWJWaWV3OwotICAgICAgICBfZ2VzdHVyZVJlY29nbml6ZXIgPSBh
ZG9wdE5TKFtbTW9ja0xvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aFdp
bmRvdzp3ZWJWaWV3LndpbmRvd10pOwotCi0gICAgICAgIFtfZ2VzdHVyZVJlY29nbml6ZXIgc2V0
TW9ja051bWJlck9mVG91Y2hlczowXTsKICAgICAgICAgW193ZWJWaWV3IF9zZXRUZXN0aW5nRGVs
ZWdhdGU6c2VsZl07CiAgICAgfQogICAgIHJldHVybiBzZWxmOwpAQCAtMTQyLDE4ICs5OSwxNSBA
QCBzdGF0aWMgTlNBcnJheSAqZGF0YUludGVyYWN0aW9uRXZlbnROYW1lcygpCiAKICAgICBfc3Rh
cnRMb2NhdGlvbiA9IHN0YXJ0TG9jYXRpb247CiAgICAgX2VuZExvY2F0aW9uID0gZW5kTG9jYXRp
b247Ci0gICAgW19nZXN0dXJlUmVjb2duaXplciBzZXRNb2NrTnVtYmVyT2ZUb3VjaGVzOjFdOwog
CiAgICAgaWYgKHNlbGYuZXh0ZXJuYWxJdGVtUHJvdmlkZXIpIHsKICAgICAgICAgX3BoYXNlID0g
RGF0YUludGVyYWN0aW9uQmVnYW47CiAgICAgICAgIF9kYXRhSW50ZXJhY3Rpb25JbmZvID0gYWRv
cHROUyhbW01vY2tEYXRhSW50ZXJhY3Rpb25JbmZvIGFsbG9jXSBpbml0V2l0aFByb3ZpZGVyOnNl
bGYuZXh0ZXJuYWxJdGVtUHJvdmlkZXIgbG9jYXRpb246c3RhcnRMb2NhdGlvbiB3aW5kb3c6W193
ZWJWaWV3IHdpbmRvd11dKTsKLSAgICB9IGVsc2UKLSAgICAgICAgW3NlbGYgX3JlY29nbml6ZUdl
c3R1cmVBdExvY2F0aW9uOl9zdGFydExvY2F0aW9uIHdpdGhTdGF0ZTpVSUdlc3R1cmVSZWNvZ25p
emVyU3RhdGVCZWdhbl07CisgICAgfQogCiAgICAgW3NlbGYgX3NjaGVkdWxlQWR2YW5jZVByb2dy
ZXNzXTsKIAogICAgIFV0aWw6OnJ1bigmX2lzRG9uZVdpdGhDdXJyZW50UnVuKTsKLSAgICBbX2dl
c3R1cmVSZWNvZ25pemVyIHNldE1vY2tOdW1iZXJPZlRvdWNoZXM6MF07CiAgICAgW193ZWJWaWV3
IGNsZWFyTWVzc2FnZUhhbmRsZXJzOmRhdGFJbnRlcmFjdGlvbkV2ZW50TmFtZXMoKV07CiB9CiAK
QEAgLTE2OCw3ICsxMjIsNiBAQCBzdGF0aWMgTlNBcnJheSAqZGF0YUludGVyYWN0aW9uRXZlbnRO
YW1lcygpCiAKICAgICBzd2l0Y2ggKF9waGFzZSkgewogICAgIGNhc2UgRGF0YUludGVyYWN0aW9u
VW5yZWNvZ25pemVkOgotICAgICAgICBbc2VsZiBfcmVjb2duaXplR2VzdHVyZUF0TG9jYXRpb246
c2VsZi5fY3VycmVudExvY2F0aW9uIHdpdGhTdGF0ZTpVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVD
aGFuZ2VkXTsKICAgICAgICAgW3NlbGYgX3NjaGVkdWxlQWR2YW5jZVByb2dyZXNzXTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBEYXRhSW50ZXJhY3Rpb25CZWdhbjoKQEAgLTE4OCw3ICsxNDEs
NiBAQCBzdGF0aWMgTlNBcnJheSAqZGF0YUludGVyYWN0aW9uRXZlbnROYW1lcygpCiAtICh2b2lk
KV9maW5pc2hEYXRhSW50ZXJhY3Rpb24KIHsKICAgICBpZiAoX3BoYXNlID09IERhdGFJbnRlcmFj
dGlvblVucmVjb2duaXplZCkgewotICAgICAgICBbc2VsZiBfcmVjb2duaXplR2VzdHVyZUF0TG9j
YXRpb246c2VsZi5fY3VycmVudExvY2F0aW9uIHdpdGhTdGF0ZTpVSUdlc3R1cmVSZWNvZ25pemVy
U3RhdGVFbmRlZF07CiAgICAgICAgIF9pc0RvbmVXaXRoQ3VycmVudFJ1biA9IHRydWU7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0yMTIsMTMgKzE2NCw2IEBAIHN0YXRpYyBOU0FycmF5ICpk
YXRhSW50ZXJhY3Rpb25FdmVudE5hbWVzKCkKICAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6QHNl
bGVjdG9yKF9hZHZhbmNlUHJvZ3Jlc3MpIHdpdGhPYmplY3Q6bmlsIGFmdGVyRGVsYXk6cHJvZ3Jl
c3NUaW1lU3RlcF07CiB9CiAKLS0gKHZvaWQpX3JlY29nbml6ZUdlc3R1cmVBdExvY2F0aW9uOihD
R1BvaW50KWxvY2F0aW9uSW5XaW5kb3cgd2l0aFN0YXRlOihVSUdlc3R1cmVSZWNvZ25pemVyU3Rh
dGUpc3RhdGUKLXsKLSAgICBbX2dlc3R1cmVSZWNvZ25pemVyIHNldE1vY2tTdGF0ZTpzdGF0ZV07
Ci0gICAgW19nZXN0dXJlUmVjb2duaXplciBzZXRNb2NrTG9jYXRpb25JbldpbmRvdzpsb2NhdGlv
bkluV2luZG93XTsKLSAgICBbX3dlYlZpZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uR2VzdHVy
ZVJlY29nbml6ZWRdOwotfQotCiAtIChVSUl0ZW1Qcm92aWRlciAqKWV4dGVybmFsSXRlbVByb3Zp
ZGVyCiB7CiAgICAgcmV0dXJuIF9leHRlcm5hbEl0ZW1Qcm92aWRlci5nZXQoKTsKQEAgLTIzMSwz
NyArMTc2LDExIEBAIHN0YXRpYyBOU0FycmF5ICpkYXRhSW50ZXJhY3Rpb25FdmVudE5hbWVzKCkK
IAogI3ByYWdtYSBtYXJrIC0gX1dLVGVzdGluZ0RlbGVnYXRlCiAKLS0gKFVJTG9uZ1ByZXNzR2Vz
dHVyZVJlY29nbml6ZXIgKilkYXRhSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplcgotewotICAg
IHJldHVybiBfZ2VzdHVyZVJlY29nbml6ZXIuZ2V0KCk7Ci19Ci0KIC0gKHZvaWQpd2ViVmlld0Rp
ZFBlcmZvcm1EYXRhSW50ZXJhY3Rpb25Db250cm9sbGVyT3BlcmF0aW9uOihXS1dlYlZpZXcgKil3
ZWJWaWV3CiB7CiAgICAgX2lzRG9uZVdpdGhDdXJyZW50UnVuID0gdHJ1ZTsKIH0KIAotLSAodm9p
ZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGJlZ2luRGF0YUludGVyYWN0aW9uV2l0aFNv
dXJjZUluZGV4OihOU0ludGVnZXIpc291cmNlSW5kZXggZ2VzdHVyZVJlY29nbml6ZXI6KFVJR2Vz
dHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgotewotICAgIF9kaWRUcnlUb0JlZ2lu
RGF0YUludGVyYWN0aW9uID0gWUVTOwotCi0gICAgaWYgKHNlbGYuZm9yY2VSZXF1ZXN0VG9GYWls
KSB7Ci0gICAgICAgIFtfd2ViVmlldyBfc2ltdWxhdGVGYWlsZWREYXRhSW50ZXJhY3Rpb25XaXRo
SW5kZXg6c291cmNlSW5kZXhdOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgX3BoYXNl
ID0gRGF0YUludGVyYWN0aW9uQmVnYW47Ci0KLSAgICAvLyBFbmQgdGhlIGRhdGEgaW50ZXJhY3Rp
b24gZ2VzdHVyZSByZWNvZ25pemVyLgotICAgIGF1dG8gbG9jYXRpb24gPSBzZWxmLl9jdXJyZW50
TG9jYXRpb247Ci0gICAgW3NlbGYgX3JlY29nbml6ZUdlc3R1cmVBdExvY2F0aW9uOmxvY2F0aW9u
IHdpdGhTdGF0ZTpVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVFbmRlZF07Ci0KLSAgICAvLyBPZmZp
Y2lhbGx5IGJlZ2luIGRhdGEgaW50ZXJhY3Rpb24gYnkgaW5pdGlhbGl6aW5nIHRoZSBpbmZvLgot
ICAgIE5TQXJyYXkgKml0ZW1zID0gW193ZWJWaWV3IF9zaW11bGF0ZWRJdGVtc0ZvckRhdGFJbnRl
cmFjdGlvbldpdGhJbmRleDpzb3VyY2VJbmRleF07Ci0gICAgX2RhdGFJbnRlcmFjdGlvbkluZm8g
PSBhZG9wdE5TKFtbTW9ja0RhdGFJbnRlcmFjdGlvbkluZm8gYWxsb2NdIGluaXRXaXRoSXRlbXM6
aXRlbXMgbG9jYXRpb246bG9jYXRpb24gd2luZG93Oltfd2ViVmlldyB3aW5kb3ddXSk7Ci0gICAg
W193ZWJWaWV3IF9zaW11bGF0ZVdpbGxCZWdpbkRhdGFJbnRlcmFjdGlvbldpdGhJbmRleDpzb3Vy
Y2VJbmRleCB3aXRoU2Vzc2lvbjpuaWxdOwotfQotCiAtICh2b2lkKXdlYlZpZXdEaWRTZW5kRGF0
YUludGVyYWN0aW9uU3RhcnRSZXF1ZXN0OihXS1dlYlZpZXcgKil3ZWJWaWV3CiB7CiAgICAgLy8g
VGhpcyBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgdGVzdGluZyBoYXJuZXNzIHdo
ZXJlaW4gdGhlIHdlYiBwcm9jZXNzIG1pZ2h0IHRha2UgbG9uZ2VyIHRoYW4gdXN1YWwgdG8gcHJv
Y2VzcyB0aGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302282</attachid>
            <date>2017-02-21 10:52:00 -0800</date>
            <delta_ts>2017-02-21 11:15:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168602-20170221104900.patch</filename>
            <type>text/plain</type>
            <size>27689</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDE1NjMyOTYzOGE2Yjkx
MTUwYjMzZTAzNmY4MGMyNDY2NWRiNWNiNC4uYzRjM2E1N2JhN2U2YzI4OGJjMzdjNGRkMmNiZTQy
ZjRjMzA2MzIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTAyLTIwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIGRh
dGEgaW50ZXJhY3Rpb24gdG8gdXNlIG5ldyBXS0RhdGFJbnRlcmFjdGlvbiBTUEkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODYwMgorICAgICAgICBX
b3JrIHRvd2FyZHMgPHJkYXI6Ly9wcm9ibGVtLzMwMzEzNjgxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1pbm9yIHR3ZWFrIHRvIGFkb3B0IG5ldyBV
SUl0ZW1Qcm92aWRlciBBUEkgKGFuZCBtb3ZlIG9mZiBvZiBkZXByZWNhdGVkIFNQSSkuIFRoZXJl
IHNob3VsZCBiZSBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbToKKyAgICAgICAgKC1bV2ViSXRlbVByb3Zp
ZGVyUGFzdGVib2FyZCBzZXRJdGVtczpdKToKKwogMjAxNy0wMi0yMCAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBMb2NhbCBhdWRpby1vbmx5IHN0cmVhbSB3aWxs
IG5vdCB0cmlnZ2VyIHBsYXliYWNrIHRvIGJlZ2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjc3OTRhZTcwNjY1
YzA3MDgzOTU2MzA5ZTgxNzg3ODY4NWY3MWU2NS4uNDJiZjViYTA1M2E1NjA3MTZjM2Y5ODkzYmI2
Y2YxZmM2ODc4Nzg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM2IEBACiAyMDE3LTAyLTIwICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCisgICAgICAgIFJlZmFjdG9y
IGRhdGEgaW50ZXJhY3Rpb24gdG8gdXNlIG5ldyBXS0RhdGFJbnRlcmFjdGlvbiBTUEkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODYwMgorICAgICAg
ICBXb3JrIHRvd2FyZHMgPHJkYXI6Ly9wcm9ibGVtLzMwMzEzNjgxPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkanVzdCB0ZXN0aW5nIFNQSSB0byBt
YXRjaCBuZXcgZGF0YSBpbnRlcmFjdGlvbiBpbnRlcmZhY2VzLgorCisgICAgICAgICogUGxhdGZv
cm0vc3BpL2lvcy9VSUtpdFNQSS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0aW9u
RW50ZXJlZDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaW11bGF0ZURhdGFJbnRlcmFjdGlv
blVwZGF0ZWQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2ltdWxhdGVEYXRhSW50ZXJhY3Rp
b25QZXJmb3JtT3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NpbXVsYXRlRGF0
YUludGVyYWN0aW9uRW5kZWQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2ltdWxhdGVEYXRh
SW50ZXJhY3Rpb25TZXNzaW9uRGlkRW5kOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NpbXVs
YXRlV2lsbEJlZ2luRGF0YUludGVyYWN0aW9uV2l0aFNlc3Npb246XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfc2ltdWxhdGVkSXRlbXNGb3JTZXNzaW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NpbXVsYXRlUHJlcGFyZUZvckRhdGFJbnRlcmFjdGlvblNlc3Npb246Y29tcGxldGlvbjpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblNlc3Npb25E
aWRFbmQ6d2l0aE9wZXJhdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
aW11bGF0ZUZhaWxlZERhdGFJbnRlcmFjdGlvbldpdGhJbmRleDpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9zaW11bGF0ZVdpbGxCZWdpbkRhdGFJbnRlcmFjdGlvbldpdGhJbmRl
eDp3aXRoU2Vzc2lvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaW11bGF0
ZWRJdGVtc0ZvckRhdGFJbnRlcmFjdGlvbldpdGhJbmRleDpdKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tTY3JvbGxWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZp
ZXcubW06CisKKzIwMTctMDItMjAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKICAgICAgICAgUmVtb3ZlIHRoZSBkYXRhIGludGVyYWN0aW9uIGdlc3R1cmUgcmVjb2du
aXplcgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4
NjAwCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDMxMzY4MT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KaW5k
ZXggYzJjZGVlY2I1NzMwNWQ3MDA2NGU5ZDQyM2VhN2Q2NDM3ZTQ1ZmE1NC4uODY5NGFiNWE5MThm
NzVjMTAyYzEzZjRmZDkwNjZjMDg5MTIxYjY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KQEAgLTE0OSw3
ICsxNDksNyBAQCBzdGF0aWMgQk9PTCBpc0ltYWdlVHlwZShOU1N0cmluZyAqdHlwZSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgW2l0ZW1SZXByZXNlbnRhdGlvbnND
b3B5IHJlbW92ZU9iamVjdEZvcktleTp0eXBlSWRlbnRpZmllcl07Ci0gICAgICAgICAgICBbb2Jq
ZWN0VG9Xcml0ZSByZWdpc3RlckxvYWRIYW5kbGVyc1RvSXRlbVByb3ZpZGVyOml0ZW1Qcm92aWRl
ci5nZXQoKV07CisgICAgICAgICAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyT2JqZWN0Om9iamVj
dFRvV3JpdGUgb3B0aW9uczpuaWxdOwogICAgICAgICB9CiAKICAgICAgICAgLy8gU2Vjb25kbHks
IFdlYktpdCB1c2VzIHNvbWUgY3VzdG9tIHR5cGUgcmVwcmVzZW50YXRpb25zIGFuZC9vciB0eXBl
IGlkZW50aWZpZXJzLCBzbyB3ZSBuZWVkIHRvIHdyaXRlIHRoZXNlIGFzIHdlbGwuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKaW5kZXggNjlkNGQ3YjlkMjE4MmYw
MWFkMWRkNTU1ZjNiOTM5ZTI1Zjg0MWU3My4uZmJkYzg4OTk5ZjdmYWZjZTNjMzlmNjcwNzgyYWJk
N2VjNWI0NWRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9V
SUtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEku
aApAQCAtNTQsNiArNTQsNyBAQAogI2ltcG9ydCA8VUlLaXQvVUlTdHJpbmdEcmF3aW5nX1ByaXZh
dGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJVGFibGVWaWV3Q2VsbF9Qcml2YXRlLmg+CiAjaW1wb3J0
IDxVSUtpdC9VSVRhcEdlc3R1cmVSZWNvZ25pemVyX1ByaXZhdGUuaD4KKyNpbXBvcnQgPFVJS2l0
L1VJVGV4dEVmZmVjdHNXaW5kb3cuaD4KICNpbXBvcnQgPFVJS2l0L1VJVGV4dElucHV0X1ByaXZh
dGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJVGV4dEludGVyYWN0aW9uQXNzaXN0YW50X1ByaXZhdGUu
aD4KICNpbXBvcnQgPFVJS2l0L1VJVmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uaW5nX1ByaXZhdGUu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
aW5kZXggNDg5NGU3M2Q2NDQ0NmY2ZDgxMmE5NmFmYjY4NWNkMjEzYWRlZjQwZi4uOTFlMDY4Y2Yx
MmU4ZDIxZjFlMDJhYmRlYTFjY2ZiZTdkMWFjMWY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTUxNzMsMzUgKzUxNzMsNjIgQEAg
c3RhdGljIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gdG9Vc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uKFVJU2UKIAogLSAodm9pZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rp
b25FbnRlcmVkOihpZClpbmZvCiB7CisjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCisgICAg
W19jb250ZW50VmlldyBfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25FbnRlcmVkOmluZm9dOworI2Vu
ZGlmCiB9CiAKIC0gKHZvaWQpX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uVXBkYXRlZDooaWQpaW5m
bwogeworI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQorICAgIFtfY29udGVudFZpZXcgX3Np
bXVsYXRlRGF0YUludGVyYWN0aW9uVXBkYXRlZDppbmZvXTsKKyNlbmRpZgogfQogCiAtICh2b2lk
KV9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblBlcmZvcm1PcGVyYXRpb246KGlkKWluZm8KIHsKKyNp
ZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKKyAgICBbX2NvbnRlbnRWaWV3IF9zaW11bGF0ZURh
dGFJbnRlcmFjdGlvblBlcmZvcm1PcGVyYXRpb246aW5mb107CisjZW5kaWYKIH0KIAogLSAodm9p
ZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25FbmRlZDooaWQpaW5mbwogeworI2lmIEVOQUJMRShE
QVRBX0lOVEVSQUNUSU9OKQorICAgIFtfY29udGVudFZpZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0
aW9uRW5kZWQ6aW5mb107CisjZW5kaWYKIH0KIAotLSAodm9pZClfc2ltdWxhdGVEYXRhSW50ZXJh
Y3Rpb25TZXNzaW9uRGlkRW5kOihpZClzZXNzaW9uIHdpdGhPcGVyYXRpb246KE5TVUludGVnZXIp
b3BlcmF0aW9uCistICh2b2lkKV9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblNlc3Npb25EaWRFbmQ6
KGlkKXNlc3Npb24KIHsKKyNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKKyAgICBbX2NvbnRl
bnRWaWV3IF9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblNlc3Npb25EaWRFbmQ6c2Vzc2lvbl07Cisj
ZW5kaWYKIH0KIAotLSAodm9pZClfc2ltdWxhdGVGYWlsZWREYXRhSW50ZXJhY3Rpb25XaXRoSW5k
ZXg6KE5TSW50ZWdlcilzb3VyY2VJbmRleAorLSAodm9pZClfc2ltdWxhdGVXaWxsQmVnaW5EYXRh
SW50ZXJhY3Rpb25XaXRoU2Vzc2lvbjooaWQpc2Vzc2lvbgogeworI2lmIEVOQUJMRShEQVRBX0lO
VEVSQUNUSU9OKQorICAgIFtfY29udGVudFZpZXcgX3NpbXVsYXRlV2lsbEJlZ2luRGF0YUludGVy
YWN0aW9uV2l0aFNlc3Npb246c2Vzc2lvbl07CisjZW5kaWYKIH0KIAotLSAodm9pZClfc2ltdWxh
dGVXaWxsQmVnaW5EYXRhSW50ZXJhY3Rpb25XaXRoSW5kZXg6KE5TSW50ZWdlcilzb3VyY2VJbmRl
eCB3aXRoU2Vzc2lvbjooaWQpc2Vzc2lvbgorLSAoTlNBcnJheSAqKV9zaW11bGF0ZWRJdGVtc0Zv
clNlc3Npb246KGlkKXNlc3Npb24KIHsKKyNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKKyAg
ICByZXR1cm4gW19jb250ZW50VmlldyBfc2ltdWxhdGVkSXRlbXNGb3JTZXNzaW9uOnNlc3Npb25d
OworI2Vsc2UKKyAgICByZXR1cm4gQFsgXTsKKyNlbmRpZgogfQogCi0tIChOU0FycmF5ICopX3Np
bXVsYXRlZEl0ZW1zRm9yRGF0YUludGVyYWN0aW9uV2l0aEluZGV4OihOU0ludGVnZXIpc291cmNl
SW5kZXgKKy0gKHZvaWQpX3NpbXVsYXRlUHJlcGFyZUZvckRhdGFJbnRlcmFjdGlvblNlc3Npb246
KGlkKXNlc3Npb24gY29tcGxldGlvbjooZGlzcGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uCiB7Cisj
aWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCisgICAgW19jb250ZW50VmlldyBfc2ltdWxhdGVQ
cmVwYXJlRm9yRGF0YUludGVyYWN0aW9uU2Vzc2lvbjpzZXNzaW9uIGNvbXBsZXRpb246Y29tcGxl
dGlvbl07CisjZWxzZQogICAgIHJldHVybiBAWyBdOworI2VuZGlmCiB9CiAKIEBlbmQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
LmgKaW5kZXggODY0MDIwMDZhNjRlMTE1NzkxOGJkMjEzNDdjNDVlYTA2ZWIyODExNS4uMTBkYmE2
YWZjZTQ3NDlmZDFhNTZmZGM5ZjY5NmEyMGNiMzE5Yjc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTMxMCwx
MCArMzEwLDEwIEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0ltbWVkaWF0ZUFjdGlv
blR5cGUpIHsKIC0gKHZvaWQpX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uVXBkYXRlZDooaWQpaW5m
byBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV9zaW11bGF0ZURh
dGFJbnRlcmFjdGlvblBlcmZvcm1PcGVyYXRpb246KGlkKWluZm8gV0tfQVBJX0FWQUlMQUJMRShp
b3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25FbmRlZDoo
aWQpaW5mbyBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2b2lkKV9zaW11
bGF0ZURhdGFJbnRlcmFjdGlvblNlc3Npb25EaWRFbmQ6KGlkKXNlc3Npb24gd2l0aE9wZXJhdGlv
bjooTlNVSW50ZWdlcilvcGVyYXRpb24gV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkp
OwotLSAodm9pZClfc2ltdWxhdGVGYWlsZWREYXRhSW50ZXJhY3Rpb25XaXRoSW5kZXg6KE5TSW50
ZWdlcilzb3VyY2VJbmRleCBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2
b2lkKV9zaW11bGF0ZVdpbGxCZWdpbkRhdGFJbnRlcmFjdGlvbldpdGhJbmRleDooTlNJbnRlZ2Vy
KXNvdXJjZUluZGV4IHdpdGhTZXNzaW9uOihpZClzZXNzaW9uIFdLX0FQSV9BVkFJTEFCTEUoaW9z
KFdLX0lPU19UQkEpKTsKLS0gKE5TQXJyYXkgKilfc2ltdWxhdGVkSXRlbXNGb3JEYXRhSW50ZXJh
Y3Rpb25XaXRoSW5kZXg6KE5TSW50ZWdlcilzb3VyY2VJbmRleCBXS19BUElfQVZBSUxBQkxFKGlv
cyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblNlc3Npb25E
aWRFbmQ6KGlkKXNlc3Npb24gV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOworLSAo
dm9pZClfc2ltdWxhdGVXaWxsQmVnaW5EYXRhSW50ZXJhY3Rpb25XaXRoU2Vzc2lvbjooaWQpc2Vz
c2lvbiBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CistIChOU0FycmF5ICopX3Np
bXVsYXRlZEl0ZW1zRm9yU2Vzc2lvbjooaWQpc2Vzc2lvbiBXS19BUElfQVZBSUxBQkxFKGlvcyhX
S19JT1NfVEJBKSk7CistICh2b2lkKV9zaW11bGF0ZVByZXBhcmVGb3JEYXRhSW50ZXJhY3Rpb25T
ZXNzaW9uOihpZClzZXNzaW9uIGNvbXBsZXRpb246KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlv
biBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CiAKICNlbmRpZiAvLyBUQVJHRVRf
T1NfSVBIT05FCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDJiOGMzM2NiMWM1OGIxOGM5NzgwYjQzNjVk
NzllM2ZjOTA3MDQxZmMuLjg4Y2JiYjc1NGY3YTQxZDEzMzQxNmE4NmU0ODJlZDc4NTVmMmJjMjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaApAQCAtMTg3LDYgKzE4Nyw4IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0
aW9uRGF0YSB7CiAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKICAgICBXZWJLaXQ6OldL
RGF0YUludGVyYWN0aW9uU3RhdGUgX2RhdGFJbnRlcmFjdGlvblN0YXRlOworICAgIFJldGFpblB0
cjxXS0RhdGFJbnRlcmFjdGlvbj4gX2RhdGFJbnRlcmFjdGlvbjsKKyAgICBDR1BvaW50IF9kZWZl
cnJlZEFjdGlvblNoZWV0UmVxdWVzdExvY2F0aW9uOwogI2VuZGlmCiB9CiAKQEAgLTE5NCw3ICsx
OTYsNyBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogCiBAaW50ZXJmYWNlIFdLQ29u
dGVudFZpZXcgKFdLSW50ZXJhY3Rpb24pIDxVSUdlc3R1cmVSZWNvZ25pemVyRGVsZWdhdGUsIFVJ
V2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplckRlbGVnYXRlLCBVSVRleHRJbnB1dFByaXZh
dGUsIFVJV2ViRm9ybUFjY2Vzc29yeURlbGVnYXRlLCBVSVdLSW50ZXJhY3Rpb25WaWV3UHJvdG9j
b2wsIFdLRmlsZVVwbG9hZFBhbmVsRGVsZWdhdGUsIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnREZWxl
Z2F0ZQogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQotICAgICwgV0tWaWV3RGF0YUludGVy
YWN0aW9uU291cmNlRGVsZWdhdGUsIFdLRGF0YUludGVyYWN0aW9uU2Vzc2lvbkRlbGVnYXRlLCBX
S1ZpZXdEYXRhSW50ZXJhY3Rpb25EZXN0aW5hdGlvbkRlbGVnYXRlLCBXS0RhdGFJbnRlcmFjdGlv
bkl0ZW1WaXN1YWxUYXJnZXQKKyAgICAsIFdLRGF0YUludGVyYWN0aW9uRGVsZWdhdGUsIFdLVmll
d0RhdGFJbnRlcmFjdGlvbkRlc3RpbmF0aW9uRGVsZWdhdGUKICNlbmRpZgogPgogCkBAIC0yNjgs
MTQgKzI3MCwxNCBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogLSAodm9pZClfZGlk
UGVyZm9ybURhdGFJbnRlcmFjdGlvbkNvbnRyb2xsZXJPcGVyYXRpb247CiAtICh2b2lkKV9kaWRI
YW5kbGVTdGFydERhdGFJbnRlcmFjdGlvblJlcXVlc3Q6KEJPT0wpc3RhcnRlZDsKIC0gKHZvaWQp
X3N0YXJ0RGF0YUludGVyYWN0aW9uV2l0aEltYWdlOihSZXRhaW5QdHI8Q0dJbWFnZVJlZj4paW1h
Z2Ugd2l0aEluZGljYXRvckRhdGE6KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRv
ckRhdGE+KWluZGljYXRvckRhdGEgYXRDbGllbnRQb3NpdGlvbjooQ0dQb2ludCljbGllbnRQb3Np
dGlvbiBhbmNob3JQb2ludDooQ0dQb2ludClhbmNob3JQb2ludCBhY3Rpb246KHVpbnQ2NF90KWFj
dGlvbjsKLS0gKHZvaWQpX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uRW50ZXJlZDooaWQpaW5mbyBX
S19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2b2lkKV9zaW11bGF0ZURhdGFJ
bnRlcmFjdGlvblVwZGF0ZWQ6KGlkKWluZm8gV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RC
QSkpOwotLSAodm9pZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25QZXJmb3JtT3BlcmF0aW9uOihp
ZClpbmZvIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKLS0gKHZvaWQpX3NpbXVs
YXRlRGF0YUludGVyYWN0aW9uRW5kZWQ6KGlkKWluZm8gV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tf
SU9TX1RCQSkpOwotLSAodm9pZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25TZXNzaW9uRGlkRW5k
OihpZClzZXNzaW9uIHdpdGhPcGVyYXRpb246KE5TVUludGVnZXIpb3BlcmF0aW9uIFdLX0FQSV9B
VkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKLS0gKHZvaWQpX3NpbXVsYXRlRmFpbGVkRGF0YUlu
dGVyYWN0aW9uV2l0aEluZGV4OihOU0ludGVnZXIpc291cmNlSW5kZXggV0tfQVBJX0FWQUlMQUJM
RShpb3MoV0tfSU9TX1RCQSkpOwotLSAodm9pZClfc2ltdWxhdGVXaWxsQmVnaW5EYXRhSW50ZXJh
Y3Rpb25XaXRoSW5kZXg6KE5TSW50ZWdlcilzb3VyY2VJbmRleCB3aXRoU2Vzc2lvbjooaWQpc2Vz
c2lvbiBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7Ci0tIChOU0FycmF5ICopX3Np
bXVsYXRlZEl0ZW1zRm9yRGF0YUludGVyYWN0aW9uV2l0aEluZGV4OihOU0ludGVnZXIpc291cmNl
SW5kZXggV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfc2ltdWxh
dGVEYXRhSW50ZXJhY3Rpb25FbnRlcmVkOihpZClpbmZvOworLSAodm9pZClfc2ltdWxhdGVEYXRh
SW50ZXJhY3Rpb25VcGRhdGVkOihpZClpbmZvOworLSAodm9pZClfc2ltdWxhdGVEYXRhSW50ZXJh
Y3Rpb25QZXJmb3JtT3BlcmF0aW9uOihpZClpbmZvOworLSAodm9pZClfc2ltdWxhdGVEYXRhSW50
ZXJhY3Rpb25FbmRlZDooaWQpaW5mbzsKKy0gKHZvaWQpX3NpbXVsYXRlRGF0YUludGVyYWN0aW9u
U2Vzc2lvbkRpZEVuZDooaWQpc2Vzc2lvbjsKKy0gKHZvaWQpX3NpbXVsYXRlV2lsbEJlZ2luRGF0
YUludGVyYWN0aW9uV2l0aFNlc3Npb246KGlkKXNlc3Npb247CistIChOU0FycmF5ICopX3NpbXVs
YXRlZEl0ZW1zRm9yU2Vzc2lvbjooaWQpc2Vzc2lvbjsKKy0gKHZvaWQpX3NpbXVsYXRlUHJlcGFy
ZUZvckRhdGFJbnRlcmFjdGlvblNlc3Npb246KGlkKXNlc3Npb24gY29tcGxldGlvbjooZGlzcGF0
Y2hfYmxvY2tfdCljb21wbGV0aW9uOwogI2VuZGlmCiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5k
ZXggMzg5MjNjNjZjNTY4ODFmOGIwNDJlM2Q1OGMzZjU2NWQ2YjkzNGU2OS4uZTFhM2MxZjJmODYw
YjIwOTgzMTBlZjIxM2IwZjE1OTI3YTRhNzg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTE3MTks
MTAgKzE3MTksNiBAQCBzdGF0aWMgdm9pZCBjYW5jZWxQb3RlbnRpYWxUYXBJZk5lY2Vzc2FyeShX
S0NvbnRlbnRWaWV3KiBjb250ZW50VmlldykKICAgICBfaGFzVmFsaWRQb3NpdGlvbkluZm9ybWF0
aW9uID0gWUVTOwogICAgIGlmIChfYWN0aW9uU2hlZXRBc3Npc3RhbnQpCiAgICAgICAgIFtfYWN0
aW9uU2hlZXRBc3Npc3RhbnQgdXBkYXRlU2hlZXRQb3NpdGlvbl07Ci0KLSNpZiBFTkFCTEUoREFU
QV9JTlRFUkFDVElPTikKLSAgICBbc2VsZiBfdXBkYXRlRGF0YUludGVyYWN0aW9uUHJldmlld1Nu
YXBzaG90SWZQb3NzaWJsZV07Ci0jZW5kaWYKIH0KIAogLSAodm9pZClfd2lsbFN0YXJ0U2Nyb2xs
aW5nT3Jab29taW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
U2Nyb2xsVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3
Lm1tCmluZGV4IDBiNDdhMWY4NzNmMmIzNWQ5NjkyNmUxMmNmNThiNjgyZmM3NjRjNWYuLjhiNTFj
NWZkZjYxOWYxODk5M2Y1OTcwNDdmNmI5ZDUyZGI4YzZiNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3Lm1tCkBAIC0xMjksNiArMTI5LDEwIEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKKyNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKSAmJiBfX2hhc19pbmNsdWRlKDxXZWJLaXRBZGRpdGlvbnMvV0tTY3JvbGxW
aWV3QWRkaXRpb25zLm1tPikKKyNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XS1Njcm9sbFZpZXdB
ZGRpdGlvbnMubW0+CisjZW5kaWYKKwogLSAodm9pZClzZXRJbnRlcm5hbERlbGVnYXRlOihXS1dl
YlZpZXcgPFVJU2Nyb2xsVmlld0RlbGVnYXRlPiAqKWludGVybmFsRGVsZWdhdGUKIHsKICAgICBp
ZiAoaW50ZXJuYWxEZWxlZ2F0ZSA9PSBfaW50ZXJuYWxEZWxlZ2F0ZSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxMzJmOTk2ZDcwOGE4NDQ5OGU0
NGIxZmU2YzhkMDY4NTNjNTcwNTUyLi45ODY0ZGE3MWU1OTIyNTdkMmVkMmU3YmQ2MjY1MDYxYWUx
NzM3NzI2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDUgKzEsMjcgQEAKIDIwMTctMDItMjAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVmYWN0b3IgZGF0YSBpbnRlcmFjdGlvbiB0byB1c2Ug
bmV3IFdLRGF0YUludGVyYWN0aW9uIFNQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NjAyCisgICAgICAgIFdvcmsgdG93YXJkcyA8cmRhcjovL3By
b2JsZW0vMzAzMTM2ODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlIERhdGFJbnRlcmFjdGlvblNpbXVsYXRvciB0byBzaW11bGF0ZSBkYXRh
IGludGVyYWN0aW9uIHVzaW5nIHVwZGF0ZWQgU1BJLiBTZWUgY2hhbmdlcyBpbiBXZWJLaXQyIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRh
SW50ZXJhY3Rpb25UZXN0cy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5oOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbToKKyAg
ICAgICAgKC1bRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIF9yZXNldFNpbXVsYXRlZFN0YXRlXSk6
CisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOnRvOl0pOgorICAg
ICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgX2FkdmFuY2VQcm9ncmVzc10pOgorICAg
ICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgX2N1cnJlbnRMb2NhdGlvbl0pOgorICAg
ICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgX2ZpbmlzaERhdGFJbnRlcmFjdGlvbl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igd2ViVmlld0Rp
ZFNlbmREYXRhSW50ZXJhY3Rpb25TdGFydFJlcXVlc3Q6XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciB3ZWJWaWV3OmRpZFJlY2VpdmVEYXRhSW50ZXJhY3Rp
b25TdGFydFJlc3BvbnNlOl0pOiBEZWxldGVkLgorCisyMDE3LTAyLTIwICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCiAgICAgICAgIFJlbW92ZSB0aGUgZGF0YSBpbnRl
cmFjdGlvbiBnZXN0dXJlIHJlY29nbml6ZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2ODYwMAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAzMTM2
ODE+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJh
Y3Rpb25UZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFj
dGlvblRlc3RzLm1tCmluZGV4IGFlZDRjOGEyOGQ0YjUzYjY0NGE4Y2ZjMzAyNWQzNTFiM2FjNDBm
NmIuLjVjYzdhMWUzNTEwMmUzYzA3YTY4ODZmNGJjOTg0NWJlZDc2NzNiNmMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1t
CkBAIC03NSw3ICs3NSw2IEBAIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEltYWdlVG9UZXh0
YXJlYSkKIAogICAgIE5TVVJMICppbWFnZVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W3dl
YlZpZXcgZWRpdG9yVmFsdWVdXTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoImljb24ucG5nIiwgaW1h
Z2VVUkwubGFzdFBhdGhDb21wb25lbnQpOwotICAgIEVYUEVDVF9UUlVFKFtkYXRhSW50ZXJhY3Rp
b25TaW11bGF0b3IgZGlkVHJ5VG9CZWdpbkRhdGFJbnRlcmFjdGlvbl0pOwogCiAgICAgTlNBcnJh
eSAqb2JzZXJ2ZWRFdmVudE5hbWVzID0gW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBvYnNlcnZl
ZEV2ZW50TmFtZXNdOwogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFp
bnNPYmplY3Q6RGF0YUludGVyYWN0aW9uRW50ZXJFdmVudE5hbWVdKTsKQEAgLTkzLDcgKzkyLDYg
QEAgVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgQ29udGVudEVkaXRhYmxlVG9Db250ZW50RWRp
dGFibGUpCiAKICAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAInNvdXJjZS50ZXh0Q29udGVudCJdLmxlbmd0aCwgMFVMKTsKICAgICBFWFBFQ1RfV0tf
U1RSRVEoIkhlbGxvIHdvcmxkIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImVkaXRvci50ZXh0Q29udGVudCJdLlVURjhTdHJpbmcpOwotICAgIEVYUEVDVF9UUlVFKFtk
YXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgZGlkVHJ5VG9CZWdpbkRhdGFJbnRlcmFjdGlvbl0pOwog
CiAgICAgTlNBcnJheSAqb2JzZXJ2ZWRFdmVudE5hbWVzID0gW2RhdGFJbnRlcmFjdGlvblNpbXVs
YXRvciBvYnNlcnZlZEV2ZW50TmFtZXNdOwogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50
TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9uRW50ZXJFdmVudE5hbWVdKTsKQEAg
LTExMSw3ICsxMDksNiBAQCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBDb250ZW50RWRpdGFi
bGVUb1RleHRhcmVhKQogCiAgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJzb3VyY2UudGV4dENvbnRlbnQiXS5sZW5ndGgsIDBVTCk7CiAgICAgRVhQ
RUNUX1dLX1NUUkVRKCJIZWxsbyB3b3JsZCIsIFt3ZWJWaWV3IGVkaXRvclZhbHVlXS5VVEY4U3Ry
aW5nKTsKLSAgICBFWFBFQ1RfVFJVRShbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGRpZFRyeVRv
QmVnaW5EYXRhSW50ZXJhY3Rpb25dKTsKIAogICAgIE5TQXJyYXkgKm9ic2VydmVkRXZlbnROYW1l
cyA9IFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igb2JzZXJ2ZWRFdmVudE5hbWVzXTsKICAgICBF
WFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFj
dGlvbkVudGVyRXZlbnROYW1lXSk7CkBAIC0xMjgsNyArMTI1LDYgQEAgVEVTVChEYXRhSW50ZXJh
Y3Rpb25UZXN0cywgTGlua1RvSW5wdXQpCiAgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBy
dW5Gcm9tOkNHUG9pbnRNYWtlKDEwMCwgNTApIHRvOkNHUG9pbnRNYWtlKDEwMCwgMzAwKV07CiAK
ICAgICBFWFBFQ1RfV0tfU1RSRVEoImh0dHBzOi8vd3d3LmRhcmluZ2ZpcmViYWxsLm5ldC8iLCBb
d2ViVmlldyBlZGl0b3JWYWx1ZV0uVVRGOFN0cmluZyk7Ci0gICAgRVhQRUNUX1RSVUUoW2RhdGFJ
bnRlcmFjdGlvblNpbXVsYXRvciBkaWRUcnlUb0JlZ2luRGF0YUludGVyYWN0aW9uXSk7CiAKICAg
ICBOU0FycmF5ICpvYnNlcnZlZEV2ZW50TmFtZXMgPSBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9y
IG9ic2VydmVkRXZlbnROYW1lc107CiAgICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRXZlbnROYW1l
cyBjb250YWluc09iamVjdDpEYXRhSW50ZXJhY3Rpb25FbnRlckV2ZW50TmFtZV0pOwpAQCAtMTQ1
LDcgKzE0MSw2IEBAIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEJhY2tncm91bmRJbWFnZUxp
bmtUb0lucHV0KQogICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50
TWFrZSgxMDAsIDUwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOwogCiAgICAgRVhQRUNUX1dL
X1NUUkVRKCJodHRwczovL3d3dy5kYXJpbmdmaXJlYmFsbC5uZXQvIiwgW3dlYlZpZXcgZWRpdG9y
VmFsdWVdLlVURjhTdHJpbmcpOwotICAgIEVYUEVDVF9UUlVFKFtkYXRhSW50ZXJhY3Rpb25TaW11
bGF0b3IgZGlkVHJ5VG9CZWdpbkRhdGFJbnRlcmFjdGlvbl0pOwogCiAgICAgTlNBcnJheSAqb2Jz
ZXJ2ZWRFdmVudE5hbWVzID0gW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBvYnNlcnZlZEV2ZW50
TmFtZXNdOwogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmpl
Y3Q6RGF0YUludGVyYWN0aW9uRW50ZXJFdmVudE5hbWVdKTsKQEAgLTE2Miw3ICsxNTcsNiBAQCBU
RVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBDYW5QcmV2ZW50U3RhcnQpCiAgICAgW2RhdGFJbnRl
cmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDEwMCwgNTApIHRvOkNHUG9pbnRN
YWtlKDEwMCwgMzAwKV07CiAKICAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgZWRpdG9yQ29udGFp
bnNJbWFnZUVsZW1lbnRdKTsKLSAgICBFWFBFQ1RfRkFMU0UoW2RhdGFJbnRlcmFjdGlvblNpbXVs
YXRvciBkaWRUcnlUb0JlZ2luRGF0YUludGVyYWN0aW9uXSk7CiAKICAgICBOU0FycmF5ICpvYnNl
cnZlZEV2ZW50TmFtZXMgPSBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIG9ic2VydmVkRXZlbnRO
YW1lc107CiAgICAgRVhQRUNUX0ZBTFNFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmpl
Y3Q6RGF0YUludGVyYWN0aW9uRW50ZXJFdmVudE5hbWVdKTsKQEAgLTE3OCw3ICsxNzIsNiBAQCBU
RVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBDYW5QcmV2ZW50T3BlcmF0aW9uKQogICAgIFtkYXRh
SW50ZXJhY3Rpb25TaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgxMDAsIDUwKSB0bzpDR1Bv
aW50TWFrZSgxMDAsIDMwMCldOwogCiAgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGVkaXRvckNv
bnRhaW5zSW1hZ2VFbGVtZW50XSk7Ci0gICAgRVhQRUNUX1RSVUUoW2RhdGFJbnRlcmFjdGlvblNp
bXVsYXRvciBkaWRUcnlUb0JlZ2luRGF0YUludGVyYWN0aW9uXSk7CiAKICAgICBOU0FycmF5ICpv
YnNlcnZlZEV2ZW50TmFtZXMgPSBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIG9ic2VydmVkRXZl
bnROYW1lc107CiAgICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRXZlbnROYW1lcyBjb250YWluc09i
amVjdDpEYXRhSW50ZXJhY3Rpb25FbnRlckV2ZW50TmFtZV0pOwpAQCAtMTk0LDcgKzE4Nyw2IEBA
IFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEVudGVyQW5kTGVhdmVFdmVudHMpCiAgICAgW2Rh
dGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDEwMCwgNTApIHRvOkNH
UG9pbnRNYWtlKDEwMCwgNDUwKV07CiAKICAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIFt3ZWJWaWV3
IGVkaXRvclZhbHVlXS5VVEY4U3RyaW5nKTsKLSAgICBFWFBFQ1RfVFJVRShbZGF0YUludGVyYWN0
aW9uU2ltdWxhdG9yIGRpZFRyeVRvQmVnaW5EYXRhSW50ZXJhY3Rpb25dKTsKIAogICAgIE5TQXJy
YXkgKm9ic2VydmVkRXZlbnROYW1lcyA9IFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igb2JzZXJ2
ZWRFdmVudE5hbWVzXTsKICAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRh
aW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvbkVudGVyRXZlbnROYW1lXSk7CkBAIC0yMDMsMjIgKzE5
NSw2IEBAIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEVudGVyQW5kTGVhdmVFdmVudHMpCiAg
ICAgRVhQRUNUX0ZBTFNFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUlu
dGVyYWN0aW9uUGVyZm9ybU9wZXJhdGlvbkV2ZW50TmFtZV0pOwogfQogCi1URVNUKERhdGFJbnRl
cmFjdGlvblRlc3RzLCBIYW5kbGVzRGF0YUludGVyYWN0aW9uRmFpbHVyZUdyYWNlZnVsbHkpCi17
Ci0gICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0p
OwotICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImxpbmstYW5k
LWlucHV0Il07Ci0KLSAgICBSZXRhaW5QdHI8RGF0YUludGVyYWN0aW9uU2ltdWxhdG9yPiBkYXRh
SW50ZXJhY3Rpb25TaW11bGF0b3IgPSBhZG9wdE5TKFtbRGF0YUludGVyYWN0aW9uU2ltdWxhdG9y
IGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwotICAgIFtkYXRhSW50ZXJh
Y3Rpb25TaW11bGF0b3Igc2V0Rm9yY2VSZXF1ZXN0VG9GYWlsOllFU107Ci0gICAgW2RhdGFJbnRl
cmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDEwMCwgNTApIHRvOkNHUG9pbnRN
YWtlKDEwMCwgMzAwKV07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBlZGl0b3JW
YWx1ZV0uVVRGOFN0cmluZyk7Ci0KLSAgICAvLyBCZWZvcmUgcjIxMjI2Niwgc3RhcnRpbmcgYSBz
dWJzZXF1ZW50IGdlc3R1cmUgd291bGQgaGF2ZSBjYXVzZWQgYSBkZWJ1ZyBhc3NlcnRpb24gaW4g
dGhlIHdlYiBwcm9jZXNzLgotICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igc2V0Rm9yY2VS
ZXF1ZXN0VG9GYWlsOk5PXTsKLSAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHJ1bkZyb206
Q0dQb2ludE1ha2UoMTAwLCA1MCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKLSAgICBFWFBF
Q1RfV0tfU1RSRVEoImh0dHBzOi8vd3d3LmRhcmluZ2ZpcmViYWxsLm5ldC8iLCBbd2ViVmlldyBl
ZGl0b3JWYWx1ZV0uVVRGOFN0cmluZyk7Ci19Ci0KIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMs
IEV4dGVybmFsU291cmNlVVRGOFBsYWluVGV4dE9ubHkpCiB7CiAgICAgUmV0YWluUHRyPFRlc3RX
S1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmggYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaAppbmRleCBhZTZjOGNmZmJj
NGNmZjU2YmI5NmQwZGI0MDk5NmIxNzE5MTY5NTQxLi41MTBiZGZiNWY4YjgyMjJmMzZmZGE2YzIx
ZGQxNzFmZTg0ZGQ5MWI1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRh
SW50ZXJhY3Rpb25TaW11bGF0b3IuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRh
SW50ZXJhY3Rpb25TaW11bGF0b3IuaApAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCA8d3RmL0Js
b2NrUHRyLmg+CiAKIEBjbGFzcyBNb2NrRGF0YUludGVyYWN0aW9uSW5mbzsKK0BjbGFzcyBNb2Nr
RGF0YUludGVyYWN0aW9uU2Vzc2lvbjsKIAogZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgRGF0YUlu
dGVyYWN0aW9uRW50ZXJFdmVudE5hbWU7CiBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBEYXRhSW50
ZXJhY3Rpb25PdmVyRXZlbnROYW1lOwpAQCAtNDAsNyArNDEsOCBAQCBleHRlcm4gTlNTdHJpbmcg
KiBjb25zdCBEYXRhSW50ZXJhY3Rpb25MZWF2ZUV2ZW50TmFtZTsKIGV4dGVybiBOU1N0cmluZyAq
IGNvbnN0IERhdGFJbnRlcmFjdGlvblN0YXJ0RXZlbnROYW1lOwogCiB0eXBlZGVmIE5TX0VOVU0o
TlNJbnRlZ2VyLCBEYXRhSW50ZXJhY3Rpb25QaGFzZSkgewotICAgIERhdGFJbnRlcmFjdGlvblVu
cmVjb2duaXplZCA9IDEsCisgICAgRGF0YUludGVyYWN0aW9uQ2FuY2VsbGVkID0gMCwKKyAgICBE
YXRhSW50ZXJhY3Rpb25CZWdpbm5pbmcgPSAxLAogICAgIERhdGFJbnRlcmFjdGlvbkJlZ2FuID0g
MiwKICAgICBEYXRhSW50ZXJhY3Rpb25FbnRlcmVkID0gMywKICAgICBEYXRhSW50ZXJhY3Rpb25Q
ZXJmb3JtaW5nID0gNApAQCAtNDgsMTMgKzUwLDE0IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVn
ZXIsIERhdGFJbnRlcmFjdGlvblBoYXNlKSB7CiAKIEBpbnRlcmZhY2UgRGF0YUludGVyYWN0aW9u
U2ltdWxhdG9yIDogTlNPYmplY3Q8X1dLVGVzdGluZ0RlbGVnYXRlPiB7CiAgICAgUmV0YWluUHRy
PFRlc3RXS1dlYlZpZXc+IF93ZWJWaWV3OworICAgIFJldGFpblB0cjxNb2NrRGF0YUludGVyYWN0
aW9uU2Vzc2lvbj4gX2RhdGFJbnRlcmFjdGlvblNlc3Npb247CiAgICAgUmV0YWluUHRyPE1vY2tE
YXRhSW50ZXJhY3Rpb25JbmZvPiBfZGF0YUludGVyYWN0aW9uSW5mbzsKICAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IF9vYnNlcnZlZEV2ZW50TmFtZXM7CiAgICAgUmV0YWluUHRyPFVJSXRl
bVByb3ZpZGVyPiBfZXh0ZXJuYWxJdGVtUHJvdmlkZXI7CiAgICAgQ0dQb2ludCBfc3RhcnRMb2Nh
dGlvbjsKICAgICBDR1BvaW50IF9lbmRMb2NhdGlvbjsKIAotICAgIGRvdWJsZSBfZ2VzdHVyZVBy
b2dyZXNzOworICAgIGRvdWJsZSBfY3VycmVudFByb2dyZXNzOwogICAgIGJvb2wgX2lzRG9uZVdp
dGhDdXJyZW50UnVuOwogICAgIERhdGFJbnRlcmFjdGlvblBoYXNlIF9waGFzZTsKIH0KQEAgLTYy
LDkgKzY1LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgRGF0YUludGVyYWN0aW9uUGhh
c2UpIHsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFRlc3RXS1dlYlZpZXcgKil3
ZWJWaWV3OwogLSAodm9pZClydW5Gcm9tOihDR1BvaW50KXN0YXJ0TG9jYXRpb24gdG86KENHUG9p
bnQpZW5kTG9jYXRpb247CiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGZvcmNlUmVxdWVz
dFRvRmFpbDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIFVJSXRlbVByb3ZpZGVyICpl
eHRlcm5hbEl0ZW1Qcm92aWRlcjsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9P
TCBkaWRUcnlUb0JlZ2luRGF0YUludGVyYWN0aW9uOwogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBOU0FycmF5ICpvYnNlcnZlZEV2ZW50TmFtZXM7CiAKIEBlbmQKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbQppbmRleCA5
MzVjMmI3ZTczNWQxMDdiYThmMmI3NmRjZDAzNmU1YmQ2OWQwYTBiLi4yODU5YjU2Mzc1MzljYzI4
MDdkNjA5Mjc1ZTFmNWU3MjA3MGIyNmZmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLm1tCkBAIC03MywxMSArNzMsMTIgQEAgc3Rh
dGljIE5TQXJyYXkgKmRhdGFJbnRlcmFjdGlvbkV2ZW50TmFtZXMoKQogCiAtICh2b2lkKV9yZXNl
dFNpbXVsYXRlZFN0YXRlCiB7Ci0gICAgX2dlc3R1cmVQcm9ncmVzcyA9IDA7Ci0gICAgX3BoYXNl
ID0gRGF0YUludGVyYWN0aW9uVW5yZWNvZ25pemVkOworICAgIF9waGFzZSA9IERhdGFJbnRlcmFj
dGlvbkJlZ2lubmluZzsKKyAgICBfY3VycmVudFByb2dyZXNzID0gMDsKICAgICBfaXNEb25lV2l0
aEN1cnJlbnRSdW4gPSBmYWxzZTsKLSAgICBfZGlkVHJ5VG9CZWdpbkRhdGFJbnRlcmFjdGlvbiA9
IE5POwogICAgIF9vYnNlcnZlZEV2ZW50TmFtZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRdKTsKKyAgICBfZGF0YUludGVyYWN0aW9uU2Vzc2lvbiA9IG5pbDsKKyAgICBf
ZGF0YUludGVyYWN0aW9uSW5mbyA9IG5pbDsKIH0KIAogLSAoTlNBcnJheSAqKW9ic2VydmVkRXZl
bnROYW1lcwpAQCAtMTAxLDYxICsxMDIsODAgQEAgc3RhdGljIE5TQXJyYXkgKmRhdGFJbnRlcmFj
dGlvbkV2ZW50TmFtZXMoKQogICAgIF9lbmRMb2NhdGlvbiA9IGVuZExvY2F0aW9uOwogCiAgICAg
aWYgKHNlbGYuZXh0ZXJuYWxJdGVtUHJvdmlkZXIpIHsKKyAgICAgICAgX2RhdGFJbnRlcmFjdGlv
bkluZm8gPSBhZG9wdE5TKFtbTW9ja0RhdGFJbnRlcmFjdGlvbkluZm8gYWxsb2NdIGluaXRXaXRo
UHJvdmlkZXI6c2VsZi5leHRlcm5hbEl0ZW1Qcm92aWRlciBsb2NhdGlvbjpfc3RhcnRMb2NhdGlv
biB3aW5kb3c6W193ZWJWaWV3IHdpbmRvd11dKTsKICAgICAgICAgX3BoYXNlID0gRGF0YUludGVy
YWN0aW9uQmVnYW47Ci0gICAgICAgIF9kYXRhSW50ZXJhY3Rpb25JbmZvID0gYWRvcHROUyhbW01v
Y2tEYXRhSW50ZXJhY3Rpb25JbmZvIGFsbG9jXSBpbml0V2l0aFByb3ZpZGVyOnNlbGYuZXh0ZXJu
YWxJdGVtUHJvdmlkZXIgbG9jYXRpb246c3RhcnRMb2NhdGlvbiB3aW5kb3c6W193ZWJWaWV3IHdp
bmRvd11dKTsKKyAgICAgICAgW3NlbGYgX2FkdmFuY2VQcm9ncmVzc107CisgICAgfSBlbHNlIHsK
KyAgICAgICAgX2RhdGFJbnRlcmFjdGlvblNlc3Npb24gPSBhZG9wdE5TKFtbTW9ja0RhdGFJbnRl
cmFjdGlvblNlc3Npb24gYWxsb2NdIGluaXRXaXRoV2luZG93Oltfd2ViVmlldyB3aW5kb3ddXSk7
CisgICAgICAgIFtfZGF0YUludGVyYWN0aW9uU2Vzc2lvbiBzZXRNb2NrTG9jYXRpb25JbldpbmRv
dzpfc3RhcnRMb2NhdGlvbl07CisgICAgICAgIFtfd2ViVmlldyBfc2ltdWxhdGVQcmVwYXJlRm9y
RGF0YUludGVyYWN0aW9uU2Vzc2lvbjpfZGF0YUludGVyYWN0aW9uU2Vzc2lvbi5nZXQoKSBjb21w
bGV0aW9uOl4oKSB7CisgICAgICAgICAgICBEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgKndlYWtT
ZWxmID0gc3Ryb25nU2VsZi5nZXQoKTsKKyAgICAgICAgICAgIHdlYWtTZWxmLT5fcGhhc2UgPSBE
YXRhSW50ZXJhY3Rpb25CZWdpbm5pbmc7CisgICAgICAgICAgICBbd2Vha1NlbGYgX2FkdmFuY2VQ
cm9ncmVzc107CisgICAgICAgIH1dOwogICAgIH0KIAotICAgIFtzZWxmIF9zY2hlZHVsZUFkdmFu
Y2VQcm9ncmVzc107Ci0KICAgICBVdGlsOjpydW4oJl9pc0RvbmVXaXRoQ3VycmVudFJ1bik7CiAg
ICAgW193ZWJWaWV3IGNsZWFyTWVzc2FnZUhhbmRsZXJzOmRhdGFJbnRlcmFjdGlvbkV2ZW50TmFt
ZXMoKV07CiB9CiAKIC0gKHZvaWQpX2FkdmFuY2VQcm9ncmVzcwogewotICAgIF9nZXN0dXJlUHJv
Z3Jlc3MgPSBzdGQ6Om1pbigxLjAsIHN0ZDo6bWF4KDAuMCwgcHJvZ3Jlc3NJbmNyZW1lbnRTdGVw
ICsgX2dlc3R1cmVQcm9ncmVzcykpOwotICAgIFtfZGF0YUludGVyYWN0aW9uSW5mbyBzZXRNb2Nr
TG9jYXRpb25JbldpbmRvdzpzZWxmLl9jdXJyZW50TG9jYXRpb25dOwotICAgIGlmIChfZ2VzdHVy
ZVByb2dyZXNzID49IDEpIHsKLSAgICAgICAgW3NlbGYgX2ZpbmlzaERhdGFJbnRlcmFjdGlvbl07
CisgICAgX2N1cnJlbnRQcm9ncmVzcyArPSBwcm9ncmVzc0luY3JlbWVudFN0ZXA7CisgICAgQ0dQ
b2ludCBsb2NhdGlvbkluV2luZG93ID0gc2VsZi5fY3VycmVudExvY2F0aW9uOworICAgIFtfZGF0
YUludGVyYWN0aW9uU2Vzc2lvbiBzZXRNb2NrTG9jYXRpb25JbldpbmRvdzpsb2NhdGlvbkluV2lu
ZG93XTsKKyAgICBbX2RhdGFJbnRlcmFjdGlvbkluZm8gc2V0TW9ja0xvY2F0aW9uSW5XaW5kb3c6
bG9jYXRpb25JbldpbmRvd107CisKKyAgICBpZiAoX2N1cnJlbnRQcm9ncmVzcyA+PSAxKSB7Cisg
ICAgICAgIFtfd2ViVmlldyBfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25QZXJmb3JtT3BlcmF0aW9u
Ol9kYXRhSW50ZXJhY3Rpb25JbmZvLmdldCgpXTsKKyAgICAgICAgW193ZWJWaWV3IF9zaW11bGF0
ZURhdGFJbnRlcmFjdGlvbkVuZGVkOl9kYXRhSW50ZXJhY3Rpb25JbmZvLmdldCgpXTsKKyAgICAg
ICAgaWYgKF9kYXRhSW50ZXJhY3Rpb25TZXNzaW9uKQorICAgICAgICAgICAgW193ZWJWaWV3IF9z
aW11bGF0ZURhdGFJbnRlcmFjdGlvblNlc3Npb25EaWRFbmQ6X2RhdGFJbnRlcmFjdGlvblNlc3Np
b24uZ2V0KCldOworCisgICAgICAgIF9waGFzZSA9IERhdGFJbnRlcmFjdGlvblBlcmZvcm1pbmc7
CisgICAgICAgIF9jdXJyZW50UHJvZ3Jlc3MgPSAxOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgc3dpdGNoIChfcGhhc2UpIHsKLSAgICBjYXNlIERhdGFJbnRlcmFjdGlvblVucmVjb2du
aXplZDoKLSAgICAgICAgW3NlbGYgX3NjaGVkdWxlQWR2YW5jZVByb2dyZXNzXTsKKyAgICBjYXNl
IERhdGFJbnRlcmFjdGlvbkJlZ2lubmluZzogeworICAgICAgICBOU011dGFibGVBcnJheTxVSUl0
ZW1Qcm92aWRlciAqPiAqaXRlbVByb3ZpZGVycyA9IFtOU011dGFibGVBcnJheSBhcnJheV07Cisg
ICAgICAgIE5TQXJyYXk8V0tEYXRhSW50ZXJhY3Rpb25JdGVtICo+ICppdGVtcyA9IFtfd2ViVmll
dyBfc2ltdWxhdGVkSXRlbXNGb3JTZXNzaW9uOl9kYXRhSW50ZXJhY3Rpb25TZXNzaW9uLmdldCgp
XTsKKyAgICAgICAgaWYgKCFpdGVtcy5jb3VudCkgeworICAgICAgICAgICAgX3BoYXNlID0gRGF0
YUludGVyYWN0aW9uQ2FuY2VsbGVkOworICAgICAgICAgICAgX2N1cnJlbnRQcm9ncmVzcyA9IDE7
CisgICAgICAgICAgICBfaXNEb25lV2l0aEN1cnJlbnRSdW4gPSB0cnVlOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChXS0RhdGFJbnRlcmFjdGlvbkl0ZW0g
Kml0ZW0gaW4gaXRlbXMpCisgICAgICAgICAgICBbaXRlbVByb3ZpZGVycyBhZGRPYmplY3Q6aXRl
bS5pdGVtUHJvdmlkZXJdOworCisgICAgICAgIF9kYXRhSW50ZXJhY3Rpb25JbmZvID0gYWRvcHRO
UyhbW01vY2tEYXRhSW50ZXJhY3Rpb25JbmZvIGFsbG9jXSBpbml0V2l0aFByb3ZpZGVyOml0ZW1Q
cm92aWRlcnMuZmlyc3RPYmplY3QgbG9jYXRpb246c2VsZi5fY3VycmVudExvY2F0aW9uIHdpbmRv
dzpbX3dlYlZpZXcgd2luZG93XV0pOworICAgICAgICBbX2RhdGFJbnRlcmFjdGlvblNlc3Npb24g
c2V0SXRlbXM6aXRlbXNdOworICAgICAgICBbX3dlYlZpZXcgX3NpbXVsYXRlV2lsbEJlZ2luRGF0
YUludGVyYWN0aW9uV2l0aFNlc3Npb246X2RhdGFJbnRlcmFjdGlvblNlc3Npb24uZ2V0KCldOwor
ICAgICAgICBfcGhhc2UgPSBEYXRhSW50ZXJhY3Rpb25CZWdhbjsKICAgICAgICAgYnJlYWs7Cisg
ICAgfQogICAgIGNhc2UgRGF0YUludGVyYWN0aW9uQmVnYW46CiAgICAgICAgIFtfd2ViVmlldyBf
c2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25FbnRlcmVkOl9kYXRhSW50ZXJhY3Rpb25JbmZvLmdldCgp
XTsKICAgICAgICAgX3BoYXNlID0gRGF0YUludGVyYWN0aW9uRW50ZXJlZDsKLSAgICAgICAgW3Nl
bGYgX3NjaGVkdWxlQWR2YW5jZVByb2dyZXNzXTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBE
YXRhSW50ZXJhY3Rpb25FbnRlcmVkOgogICAgICAgICBbX3dlYlZpZXcgX3NpbXVsYXRlRGF0YUlu
dGVyYWN0aW9uVXBkYXRlZDpfZGF0YUludGVyYWN0aW9uSW5mby5nZXQoKV07Ci0gICAgICAgIFtz
ZWxmIF9zY2hlZHVsZUFkdmFuY2VQcm9ncmVzc107CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KLX0KLQotLSAodm9pZClfZmluaXNoRGF0YUludGVy
YWN0aW9uCi17Ci0gICAgaWYgKF9waGFzZSA9PSBEYXRhSW50ZXJhY3Rpb25VbnJlY29nbml6ZWQp
IHsKLSAgICAgICAgX2lzRG9uZVdpdGhDdXJyZW50UnVuID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KIAotICAgIF9waGFzZSA9IERhdGFJbnRlcmFjdGlvblBlcmZvcm1pbmc7Ci0gICAg
W193ZWJWaWV3IF9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblBlcmZvcm1PcGVyYXRpb246X2RhdGFJ
bnRlcmFjdGlvbkluZm8uZ2V0KCldOwotICAgIFtfd2ViVmlldyBfc2ltdWxhdGVEYXRhSW50ZXJh
Y3Rpb25FbmRlZDpfZGF0YUludGVyYWN0aW9uSW5mby5nZXQoKV07Ci0gICAgW193ZWJWaWV3IF9z
aW11bGF0ZURhdGFJbnRlcmFjdGlvblNlc3Npb25EaWRFbmQ6bmlsIHdpdGhPcGVyYXRpb246MF07
CisgICAgW3NlbGYgX3NjaGVkdWxlQWR2YW5jZVByb2dyZXNzXTsKIH0KIAogLSAoQ0dQb2ludClf
Y3VycmVudExvY2F0aW9uCiB7CiAgICAgQ0dGbG9hdCBkaXN0YW5jZVggPSBfZW5kTG9jYXRpb24u
eCAtIF9zdGFydExvY2F0aW9uLng7CiAgICAgQ0dGbG9hdCBkaXN0YW5jZVkgPSBfZW5kTG9jYXRp
b24ueSAtIF9zdGFydExvY2F0aW9uLnk7Ci0gICAgcmV0dXJuIENHUG9pbnRNYWtlKF9zdGFydExv
Y2F0aW9uLnggKyBfZ2VzdHVyZVByb2dyZXNzICogZGlzdGFuY2VYLCBfc3RhcnRMb2NhdGlvbi55
ICsgX2dlc3R1cmVQcm9ncmVzcyAqIGRpc3RhbmNlWSk7CisgICAgcmV0dXJuIENHUG9pbnRNYWtl
KF9zdGFydExvY2F0aW9uLnggKyBfY3VycmVudFByb2dyZXNzICogZGlzdGFuY2VYLCBfc3RhcnRM
b2NhdGlvbi55ICsgX2N1cnJlbnRQcm9ncmVzcyAqIGRpc3RhbmNlWSk7CiB9CiAKIC0gKHZvaWQp
X3NjaGVkdWxlQWR2YW5jZVByb2dyZXNzCkBAIC0xODEsMjAgKzIwMSw2IEBAIHN0YXRpYyBOU0Fy
cmF5ICpkYXRhSW50ZXJhY3Rpb25FdmVudE5hbWVzKCkKICAgICBfaXNEb25lV2l0aEN1cnJlbnRS
dW4gPSB0cnVlOwogfQogCi0tICh2b2lkKXdlYlZpZXdEaWRTZW5kRGF0YUludGVyYWN0aW9uU3Rh
cnRSZXF1ZXN0OihXS1dlYlZpZXcgKil3ZWJWaWV3Ci17Ci0gICAgLy8gVGhpcyBhZGRyZXNzZXMg
YSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgdGVzdGluZyBoYXJuZXNzIHdoZXJlaW4gdGhlIHdlYiBw
cm9jZXNzIG1pZ2h0IHRha2UgbG9uZ2VyIHRoYW4gdXN1YWwgdG8gcHJvY2VzcyB0aGUKLSAgICAv
LyByZXF1ZXN0IHRvIHN0YXJ0IGRhdGEgaW50ZXJhY3Rpb24sIGFuZCBpbiB0aGUgbWVhbnRpbWUs
IERhdGFJbnRlcmFjdGlvblNpbXVsYXRvciB3b3VsZCBlbmQgdXAgY29tcGxldGluZyB0aGUgcmVz
dCBvZiB0aGUgdGVzdAotICAgIC8vIGJlZm9yZSBhIHJlc3BvbnNlIGZyb20gdGhlIHdlYiBwcm9j
ZXNzIGlzIHJlY2VpdmVkLiBXZSBpbnN0ZWFkIGRlZmVyIHRlc3QgcHJvZ3Jlc3MgdW50aWwgYWZ0
ZXIgdGhlIHdlYiBwcm9jZXNzIGhhcyBpbmRpY2F0ZWQKLSAgICAvLyB3aGV0aGVyIG9yIG5vdCBk
YXRhIGludGVyYWN0aW9uIHNob3VsZCBjb21tZW5jZS4KLSAgICBbTlNPYmplY3QgY2FuY2VsUHJl
dmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9h
ZHZhbmNlUHJvZ3Jlc3MpIG9iamVjdDpuaWxdOwotfQotCi0tICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGlkUmVjZWl2ZURhdGFJbnRlcmFjdGlvblN0YXJ0UmVzcG9uc2U6KEJP
T0wpc3RhcnRlZAotewotICAgIFtzZWxmIF9zY2hlZHVsZUFkdmFuY2VQcm9ncmVzc107Ci19Ci0K
IEBlbmQKIAogI2VuZGlmIC8vIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302288</attachid>
            <date>2017-02-21 11:15:36 -0800</date>
            <delta_ts>2017-02-21 11:39:39 -0800</delta_ts>
            <desc>Combined patch w/ 168600</desc>
            <filename>bug-168602-20170221111237.patch</filename>
            <type>text/plain</type>
            <size>38053</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDE1NjMyOTYzOGE2Yjkx
MTUwYjMzZTAzNmY4MGMyNDY2NWRiNWNiNC4uYzRjM2E1N2JhN2U2YzI4OGJjMzdjNGRkMmNiZTQy
ZjRjMzA2MzIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTAyLTIwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIGRh
dGEgaW50ZXJhY3Rpb24gdG8gdXNlIG5ldyBXS0RhdGFJbnRlcmFjdGlvbiBTUEkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODYwMgorICAgICAgICBX
b3JrIHRvd2FyZHMgPHJkYXI6Ly9wcm9ibGVtLzMwMzEzNjgxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1pbm9yIHR3ZWFrIHRvIGFkb3B0IG5ldyBV
SUl0ZW1Qcm92aWRlciBBUEkgKGFuZCBtb3ZlIG9mZiBvZiBkZXByZWNhdGVkIFNQSSkuIFRoZXJl
IHNob3VsZCBiZSBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbToKKyAgICAgICAgKC1bV2ViSXRlbVByb3Zp
ZGVyUGFzdGVib2FyZCBzZXRJdGVtczpdKToKKwogMjAxNy0wMi0yMCAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBMb2NhbCBhdWRpby1vbmx5IHN0cmVhbSB3aWxs
IG5vdCB0cmlnZ2VyIHBsYXliYWNrIHRvIGJlZ2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjk2NDZlYjJjOGJk
YmFhNjkwOGY5MWRhNzMxZDU3MmI0ZTllMTgwMC4uNDJiZjViYTA1M2E1NjA3MTZjM2Y5ODkzYmI2
Y2YxZmM2ODc4Nzg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE3LTAyLTIwICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9y
IGRhdGEgaW50ZXJhY3Rpb24gdG8gdXNlIG5ldyBXS0RhdGFJbnRlcmFjdGlvbiBTUEkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODYwMgorICAgICAg
ICBXb3JrIHRvd2FyZHMgPHJkYXI6Ly9wcm9ibGVtLzMwMzEzNjgxPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkanVzdCB0ZXN0aW5nIFNQSSB0byBt
YXRjaCBuZXcgZGF0YSBpbnRlcmFjdGlvbiBpbnRlcmZhY2VzLgorCisgICAgICAgICogUGxhdGZv
cm0vc3BpL2lvcy9VSUtpdFNQSS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0aW9u
RW50ZXJlZDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaW11bGF0ZURhdGFJbnRlcmFjdGlv
blVwZGF0ZWQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2ltdWxhdGVEYXRhSW50ZXJhY3Rp
b25QZXJmb3JtT3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NpbXVsYXRlRGF0
YUludGVyYWN0aW9uRW5kZWQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2ltdWxhdGVEYXRh
SW50ZXJhY3Rpb25TZXNzaW9uRGlkRW5kOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NpbXVs
YXRlV2lsbEJlZ2luRGF0YUludGVyYWN0aW9uV2l0aFNlc3Npb246XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfc2ltdWxhdGVkSXRlbXNGb3JTZXNzaW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NpbXVsYXRlUHJlcGFyZUZvckRhdGFJbnRlcmFjdGlvblNlc3Npb246Y29tcGxldGlvbjpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblNlc3Npb25E
aWRFbmQ6d2l0aE9wZXJhdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
aW11bGF0ZUZhaWxlZERhdGFJbnRlcmFjdGlvbldpdGhJbmRleDpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9zaW11bGF0ZVdpbGxCZWdpbkRhdGFJbnRlcmFjdGlvbldpdGhJbmRl
eDp3aXRoU2Vzc2lvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaW11bGF0
ZWRJdGVtc0ZvckRhdGFJbnRlcmFjdGlvbldpdGhJbmRleDpdKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tTY3JvbGxWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZp
ZXcubW06CisKKzIwMTctMDItMjAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBkYXRhIGludGVyYWN0aW9uIGdlc3R1cmUgcmVjb2du
aXplcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4
NjAwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDMxMzY4MT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBBbmRlcnMgQ2FybHNzb24uCisKKyAgICAgICAgVGhlIGRhdGEgaW50ZXJhY3Rpb24gZ2Vz
dHVyZSByZWNvZ25pemVyIHdpbGwgbm8gbG9uZ2VyIGJlIG5lZWRlZCBtb3ZpbmcgZm9yd2FyZC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZWRdKTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVwSW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBjbGVhbnVwSW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBfcmVtb3ZlRGVmYXVsdEdlc3R1cmVSZWNvZ25pemVyc10pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzXSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgZ2VzdHVyZVJlY29nbml6ZXI6c2hvdWxkUmVjb2duaXplU2ltdWx0YW5lb3VzbHlX
aXRoR2VzdHVyZVJlY29nbml6ZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZ2VzdHVy
ZVJlY29nbml6ZXJTaG91bGRCZWdpbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGF0
YUludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXJdKTogRGVsZXRlZC4KKwogMjAxNy0wMi0yMCAg
UnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjEyNjg1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQppbmRleCBjMmNkZWVjYjU3MzA1
ZDcwMDY0ZTlkNDIzZWE3ZDY0MzdlNDVmYTU0Li44Njk0YWI1YTkxOGY3NWMxMDJjMTNmNGZkOTA2
NmMwODkxMjFiNjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
SXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHN0YXRp
YyBCT09MIGlzSW1hZ2VUeXBlKE5TU3RyaW5nICp0eXBlKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgICAgICBbaXRlbVJlcHJlc2VudGF0aW9uc0NvcHkgcmVtb3ZlT2JqZWN0
Rm9yS2V5OnR5cGVJZGVudGlmaWVyXTsKLSAgICAgICAgICAgIFtvYmplY3RUb1dyaXRlIHJlZ2lz
dGVyTG9hZEhhbmRsZXJzVG9JdGVtUHJvdmlkZXI6aXRlbVByb3ZpZGVyLmdldCgpXTsKKyAgICAg
ICAgICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6b2JqZWN0VG9Xcml0ZSBvcHRpb25z
Om5pbF07CiAgICAgICAgIH0KIAogICAgICAgICAvLyBTZWNvbmRseSwgV2ViS2l0IHVzZXMgc29t
ZSBjdXN0b20gdHlwZSByZXByZXNlbnRhdGlvbnMgYW5kL29yIHR5cGUgaWRlbnRpZmllcnMsIHNv
IHdlIG5lZWQgdG8gd3JpdGUgdGhlc2UgYXMgd2VsbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L3NwaS9pb3MvVUlLaXRTUEkuaAppbmRleCA2OWQ0ZDdiOWQyMTgyZjAxYWQxZGQ1NTVmM2I5Mzll
MjVmODQxZTczLi5mYmRjODg5OTlmN2ZhZmNlM2MzOWY2NzA3ODJhYmQ3ZWM1YjQ1ZGRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCkBAIC01NCw2ICs1NCw3
IEBACiAjaW1wb3J0IDxVSUtpdC9VSVN0cmluZ0RyYXdpbmdfUHJpdmF0ZS5oPgogI2ltcG9ydCA8
VUlLaXQvVUlUYWJsZVZpZXdDZWxsX1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJVGFwR2Vz
dHVyZVJlY29nbml6ZXJfUHJpdmF0ZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlUZXh0RWZmZWN0c1dp
bmRvdy5oPgogI2ltcG9ydCA8VUlLaXQvVUlUZXh0SW5wdXRfUHJpdmF0ZS5oPgogI2ltcG9ydCA8
VUlLaXQvVUlUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnRfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlL
aXQvVUlWaWV3Q29udHJvbGxlclRyYW5zaXRpb25pbmdfUHJpdmF0ZS5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA0NDUzNDFmM2Jm
NjZiNzVmM2NkMWUyNjU4OWRhMjc2NDBjMWZlYmYwLi45MWUwNjhjZjEyZThkMjFmMWUwMmFiZGVh
MWNjZmJlN2QxYWMxZjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQpAQCAtNTE3MSw0MiArNTE3MSw2NCBAQCBzdGF0aWMgV2ViQ29yZTo6
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB0b1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24oVUlTZQogICAgIFdlYktpdDo6Vmlld1NuYXBzaG90U3RvcmU6OnNpbmdsZXRvbigpLnNldERp
c2FibGVTbmFwc2hvdFZvbGF0aWxpdHlGb3JUZXN0aW5nKHRydWUpOwogfQogCi0KLS0gKHZvaWQp
X3NpbXVsYXRlRGF0YUludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZWQKLXsKLX0KLQogLSAodm9p
ZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25FbnRlcmVkOihpZClpbmZvCiB7CisjaWYgRU5BQkxF
KERBVEFfSU5URVJBQ1RJT04pCisgICAgW19jb250ZW50VmlldyBfc2ltdWxhdGVEYXRhSW50ZXJh
Y3Rpb25FbnRlcmVkOmluZm9dOworI2VuZGlmCiB9CiAKIC0gKHZvaWQpX3NpbXVsYXRlRGF0YUlu
dGVyYWN0aW9uVXBkYXRlZDooaWQpaW5mbwogeworI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9O
KQorICAgIFtfY29udGVudFZpZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uVXBkYXRlZDppbmZv
XTsKKyNlbmRpZgogfQogCiAtICh2b2lkKV9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblBlcmZvcm1P
cGVyYXRpb246KGlkKWluZm8KIHsKKyNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKKyAgICBb
X2NvbnRlbnRWaWV3IF9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblBlcmZvcm1PcGVyYXRpb246aW5m
b107CisjZW5kaWYKIH0KIAogLSAodm9pZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25FbmRlZDoo
aWQpaW5mbwogeworI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQorICAgIFtfY29udGVudFZp
ZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uRW5kZWQ6aW5mb107CisjZW5kaWYKIH0KIAotLSAo
dm9pZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25TZXNzaW9uRGlkRW5kOihpZClzZXNzaW9uIHdp
dGhPcGVyYXRpb246KE5TVUludGVnZXIpb3BlcmF0aW9uCistICh2b2lkKV9zaW11bGF0ZURhdGFJ
bnRlcmFjdGlvblNlc3Npb25EaWRFbmQ6KGlkKXNlc3Npb24KIHsKKyNpZiBFTkFCTEUoREFUQV9J
TlRFUkFDVElPTikKKyAgICBbX2NvbnRlbnRWaWV3IF9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblNl
c3Npb25EaWRFbmQ6c2Vzc2lvbl07CisjZW5kaWYKIH0KIAotLSAodm9pZClfc2ltdWxhdGVGYWls
ZWREYXRhSW50ZXJhY3Rpb25XaXRoSW5kZXg6KE5TSW50ZWdlcilzb3VyY2VJbmRleAorLSAodm9p
ZClfc2ltdWxhdGVXaWxsQmVnaW5EYXRhSW50ZXJhY3Rpb25XaXRoU2Vzc2lvbjooaWQpc2Vzc2lv
bgogeworI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQorICAgIFtfY29udGVudFZpZXcgX3Np
bXVsYXRlV2lsbEJlZ2luRGF0YUludGVyYWN0aW9uV2l0aFNlc3Npb246c2Vzc2lvbl07CisjZW5k
aWYKIH0KIAotLSAodm9pZClfc2ltdWxhdGVXaWxsQmVnaW5EYXRhSW50ZXJhY3Rpb25XaXRoSW5k
ZXg6KE5TSW50ZWdlcilzb3VyY2VJbmRleCB3aXRoU2Vzc2lvbjooaWQpc2Vzc2lvbgorLSAoTlNB
cnJheSAqKV9zaW11bGF0ZWRJdGVtc0ZvclNlc3Npb246KGlkKXNlc3Npb24KIHsKKyNpZiBFTkFC
TEUoREFUQV9JTlRFUkFDVElPTikKKyAgICByZXR1cm4gW19jb250ZW50VmlldyBfc2ltdWxhdGVk
SXRlbXNGb3JTZXNzaW9uOnNlc3Npb25dOworI2Vsc2UKKyAgICByZXR1cm4gQFsgXTsKKyNlbmRp
ZgogfQogCi0tIChOU0FycmF5ICopX3NpbXVsYXRlZEl0ZW1zRm9yRGF0YUludGVyYWN0aW9uV2l0
aEluZGV4OihOU0ludGVnZXIpc291cmNlSW5kZXgKKy0gKHZvaWQpX3NpbXVsYXRlUHJlcGFyZUZv
ckRhdGFJbnRlcmFjdGlvblNlc3Npb246KGlkKXNlc3Npb24gY29tcGxldGlvbjooZGlzcGF0Y2hf
YmxvY2tfdCljb21wbGV0aW9uCiB7CisjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCisgICAg
W19jb250ZW50VmlldyBfc2ltdWxhdGVQcmVwYXJlRm9yRGF0YUludGVyYWN0aW9uU2Vzc2lvbjpz
ZXNzaW9uIGNvbXBsZXRpb246Y29tcGxldGlvbl07CisjZWxzZQogICAgIHJldHVybiBAWyBdOwor
I2VuZGlmCiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggYjBhOTlkNmYyMjE4YjA2NTRmOTgxZDg4
NjNiNDhkNjE0MDkxZDc1OS4uMTBkYmE2YWZjZTQ3NDlmZDFhNTZmZGM5ZjY5NmEyMGNiMzE5Yjc2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKQEAgLTMwNiwxNSArMzA2LDE0IEBAIHR5cGVkZWYgTlNfRU5VTShOU0lu
dGVnZXIsIF9XS0ltbWVkaWF0ZUFjdGlvblR5cGUpIHsKIAogQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBOU051bWJlciAqX3N0YWJsZVN0YXRlT3ZlcnJpZGUgV0tfQVBJX0FWQUlMQUJM
RShpb3MoV0tfSU9TX1RCQSkpOwogCi0tICh2b2lkKV9zaW11bGF0ZURhdGFJbnRlcmFjdGlvbkdl
c3R1cmVSZWNvZ25pemVkIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZv
aWQpX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uRW50ZXJlZDooaWQpaW5mbyBXS19BUElfQVZBSUxB
QkxFKGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblVw
ZGF0ZWQ6KGlkKWluZm8gV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9p
ZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25QZXJmb3JtT3BlcmF0aW9uOihpZClpbmZvIFdLX0FQ
SV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3NpbXVsYXRlRGF0YUludGVy
YWN0aW9uRW5kZWQ6KGlkKWluZm8gV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwot
LSAodm9pZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25TZXNzaW9uRGlkRW5kOihpZClzZXNzaW9u
IHdpdGhPcGVyYXRpb246KE5TVUludGVnZXIpb3BlcmF0aW9uIFdLX0FQSV9BVkFJTEFCTEUoaW9z
KFdLX0lPU19UQkEpKTsKLS0gKHZvaWQpX3NpbXVsYXRlRmFpbGVkRGF0YUludGVyYWN0aW9uV2l0
aEluZGV4OihOU0ludGVnZXIpc291cmNlSW5kZXggV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9T
X1RCQSkpOwotLSAodm9pZClfc2ltdWxhdGVXaWxsQmVnaW5EYXRhSW50ZXJhY3Rpb25XaXRoSW5k
ZXg6KE5TSW50ZWdlcilzb3VyY2VJbmRleCB3aXRoU2Vzc2lvbjooaWQpc2Vzc2lvbiBXS19BUElf
QVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7Ci0tIChOU0FycmF5ICopX3NpbXVsYXRlZEl0ZW1z
Rm9yRGF0YUludGVyYWN0aW9uV2l0aEluZGV4OihOU0ludGVnZXIpc291cmNlSW5kZXggV0tfQVBJ
X0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfc2ltdWxhdGVEYXRhSW50ZXJh
Y3Rpb25TZXNzaW9uRGlkRW5kOihpZClzZXNzaW9uIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lP
U19UQkEpKTsKKy0gKHZvaWQpX3NpbXVsYXRlV2lsbEJlZ2luRGF0YUludGVyYWN0aW9uV2l0aFNl
c3Npb246KGlkKXNlc3Npb24gV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOworLSAo
TlNBcnJheSAqKV9zaW11bGF0ZWRJdGVtc0ZvclNlc3Npb246KGlkKXNlc3Npb24gV0tfQVBJX0FW
QUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfc2ltdWxhdGVQcmVwYXJlRm9yRGF0
YUludGVyYWN0aW9uU2Vzc2lvbjooaWQpc2Vzc2lvbiBjb21wbGV0aW9uOihkaXNwYXRjaF9ibG9j
a190KWNvbXBsZXRpb24gV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwogCiAjZW5k
aWYgLy8gVEFSR0VUX09TX0lQSE9ORQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCBiNmJmYzZkNGU5MTQw
YmJhNTUyMTNmNTUyNzcyZjIzNDg1ZWZlMWRmLi44OGNiYmI3NTRmN2E0MWQxMzM0MTZhODZlNDgy
ZWQ3ODU1ZjJiYzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTExOCw5ICsxMTgsNiBAQCBzdHJ1Y3Qg
V0tBdXRvQ29ycmVjdGlvbkRhdGEgewogICAgIFJldGFpblB0cjxVSVRhcEdlc3R1cmVSZWNvZ25p
emVyPiBfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXI7CiAgICAgUmV0YWluUHRy
PFVJVGFwR2VzdHVyZVJlY29nbml6ZXI+IF90d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2du
aXplcjsKICAgICBSZXRhaW5QdHI8V0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6
ZXI+IF9pbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXI7Ci0jaWYgRU5BQkxFKERB
VEFfSU5URVJBQ1RJT04pCi0gICAgUmV0YWluUHRyPFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6
ZXI+IF9kYXRhSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplcjsKLSNlbmRpZgogCiAgICAgUmV0
YWluUHRyPFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQ+IF90ZXh0U2VsZWN0aW9uQXNzaXN0
YW50OwogICAgIFJldGFpblB0cjxVSVdLU2VsZWN0aW9uQXNzaXN0YW50PiBfd2ViU2VsZWN0aW9u
QXNzaXN0YW50OwpAQCAtMTkwLDYgKzE4Nyw4IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0
YSB7CiAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKICAgICBXZWJLaXQ6OldLRGF0YUlu
dGVyYWN0aW9uU3RhdGUgX2RhdGFJbnRlcmFjdGlvblN0YXRlOworICAgIFJldGFpblB0cjxXS0Rh
dGFJbnRlcmFjdGlvbj4gX2RhdGFJbnRlcmFjdGlvbjsKKyAgICBDR1BvaW50IF9kZWZlcnJlZEFj
dGlvblNoZWV0UmVxdWVzdExvY2F0aW9uOwogI2VuZGlmCiB9CiAKQEAgLTE5Nyw3ICsxOTYsNyBA
QCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogCiBAaW50ZXJmYWNlIFdLQ29udGVudFZp
ZXcgKFdLSW50ZXJhY3Rpb24pIDxVSUdlc3R1cmVSZWNvZ25pemVyRGVsZWdhdGUsIFVJV2ViVG91
Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplckRlbGVnYXRlLCBVSVRleHRJbnB1dFByaXZhdGUsIFVJ
V2ViRm9ybUFjY2Vzc29yeURlbGVnYXRlLCBVSVdLSW50ZXJhY3Rpb25WaWV3UHJvdG9jb2wsIFdL
RmlsZVVwbG9hZFBhbmVsRGVsZWdhdGUsIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnREZWxlZ2F0ZQog
I2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQotICAgICwgV0tWaWV3RGF0YUludGVyYWN0aW9u
U291cmNlRGVsZWdhdGUsIFdLRGF0YUludGVyYWN0aW9uU2Vzc2lvbkRlbGVnYXRlLCBXS1ZpZXdE
YXRhSW50ZXJhY3Rpb25EZXN0aW5hdGlvbkRlbGVnYXRlLCBXS0RhdGFJbnRlcmFjdGlvbkl0ZW1W
aXN1YWxUYXJnZXQKKyAgICAsIFdLRGF0YUludGVyYWN0aW9uRGVsZWdhdGUsIFdLVmlld0RhdGFJ
bnRlcmFjdGlvbkRlc3RpbmF0aW9uRGVsZWdhdGUKICNlbmRpZgogPgogCkBAIC0yNzEsMTUgKzI3
MCwxNCBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogLSAodm9pZClfZGlkUGVyZm9y
bURhdGFJbnRlcmFjdGlvbkNvbnRyb2xsZXJPcGVyYXRpb247CiAtICh2b2lkKV9kaWRIYW5kbGVT
dGFydERhdGFJbnRlcmFjdGlvblJlcXVlc3Q6KEJPT0wpc3RhcnRlZDsKIC0gKHZvaWQpX3N0YXJ0
RGF0YUludGVyYWN0aW9uV2l0aEltYWdlOihSZXRhaW5QdHI8Q0dJbWFnZVJlZj4paW1hZ2Ugd2l0
aEluZGljYXRvckRhdGE6KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+
KWluZGljYXRvckRhdGEgYXRDbGllbnRQb3NpdGlvbjooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBh
bmNob3JQb2ludDooQ0dQb2ludClhbmNob3JQb2ludCBhY3Rpb246KHVpbnQ2NF90KWFjdGlvbjsK
LS0gKHZvaWQpX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZWQ6KFVJTG9u
Z1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplciBXS19BUElfQVZBSUxB
QkxFKGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2b2lkKV9zaW11bGF0ZURhdGFJbnRlcmFjdGlvbkVu
dGVyZWQ6KGlkKWluZm8gV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwotLSAodm9p
ZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25VcGRhdGVkOihpZClpbmZvIFdLX0FQSV9BVkFJTEFC
TEUoaW9zKFdLX0lPU19UQkEpKTsKLS0gKHZvaWQpX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uUGVy
Zm9ybU9wZXJhdGlvbjooaWQpaW5mbyBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7
Ci0tICh2b2lkKV9zaW11bGF0ZURhdGFJbnRlcmFjdGlvbkVuZGVkOihpZClpbmZvIFdLX0FQSV9B
VkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKLS0gKHZvaWQpX3NpbXVsYXRlRGF0YUludGVyYWN0
aW9uU2Vzc2lvbkRpZEVuZDooaWQpc2Vzc2lvbiB3aXRoT3BlcmF0aW9uOihOU1VJbnRlZ2VyKW9w
ZXJhdGlvbiBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2b2lkKV9zaW11
bGF0ZUZhaWxlZERhdGFJbnRlcmFjdGlvbldpdGhJbmRleDooTlNJbnRlZ2VyKXNvdXJjZUluZGV4
IFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKLS0gKHZvaWQpX3NpbXVsYXRlV2ls
bEJlZ2luRGF0YUludGVyYWN0aW9uV2l0aEluZGV4OihOU0ludGVnZXIpc291cmNlSW5kZXggd2l0
aFNlc3Npb246KGlkKXNlc3Npb24gV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwot
LSAoTlNBcnJheSAqKV9zaW11bGF0ZWRJdGVtc0ZvckRhdGFJbnRlcmFjdGlvbldpdGhJbmRleDoo
TlNJbnRlZ2VyKXNvdXJjZUluZGV4IFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsK
Ky0gKHZvaWQpX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uRW50ZXJlZDooaWQpaW5mbzsKKy0gKHZv
aWQpX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uVXBkYXRlZDooaWQpaW5mbzsKKy0gKHZvaWQpX3Np
bXVsYXRlRGF0YUludGVyYWN0aW9uUGVyZm9ybU9wZXJhdGlvbjooaWQpaW5mbzsKKy0gKHZvaWQp
X3NpbXVsYXRlRGF0YUludGVyYWN0aW9uRW5kZWQ6KGlkKWluZm87CistICh2b2lkKV9zaW11bGF0
ZURhdGFJbnRlcmFjdGlvblNlc3Npb25EaWRFbmQ6KGlkKXNlc3Npb247CistICh2b2lkKV9zaW11
bGF0ZVdpbGxCZWdpbkRhdGFJbnRlcmFjdGlvbldpdGhTZXNzaW9uOihpZClzZXNzaW9uOworLSAo
TlNBcnJheSAqKV9zaW11bGF0ZWRJdGVtc0ZvclNlc3Npb246KGlkKXNlc3Npb247CistICh2b2lk
KV9zaW11bGF0ZVByZXBhcmVGb3JEYXRhSW50ZXJhY3Rpb25TZXNzaW9uOihpZClzZXNzaW9uIGNv
bXBsZXRpb246KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbjsKICNlbmRpZgogCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCmluZGV4IGY5NTdjNmM1YjJjNTdiMDBmMTA2Y2I4MjBlNTk2NWYwODE2MGE4
NmEuLmUxYTNjMWYyZjg2MGIyMDk4MzEwZWYyMTNiMGYxNTkyN2E0YTc4OGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCkBAIC01NTgsMTEgKzU1OCw2IEBAIHN0YXRpYyBVSVdlYlNlbGVjdGlvbk1vZGUgdG9V
SVdlYlNlbGVjdGlvbk1vZGUoV0tTZWxlY3Rpb25HcmFudWxhcml0eSBncmFudWxhcml0CiAgICAg
W3NlbGYgX2NyZWF0ZUFuZENvbmZpZ3VyZUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyXTsKIAog
I2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQotICAgIF9kYXRhSW50ZXJhY3Rpb25HZXN0dXJl
UmVjb2duaXplciA9IGFkb3B0TlMoW1tVSUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIGFsbG9j
XSBpbml0V2l0aFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoX2RhdGFJbnRlcmFjdGlvbkdl
c3R1cmVSZWNvZ25pemVkOildKTsKLSAgICBbX2RhdGFJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25p
emVyIHNldERlbGF5OjAuNV07Ci0gICAgW19kYXRhSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXpl
ciBzZXREZWxlZ2F0ZTpzZWxmXTsKLSAgICBbX2RhdGFJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25p
emVyIF9zZXRSZXF1aXJlc1F1aWV0SW1wdWxzZTpZRVNdOwotICAgIFtzZWxmIGFkZEdlc3R1cmVS
ZWNvZ25pemVyOl9kYXRhSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAgICAg
W3NlbGYgc2V0dXBEYXRhSW50ZXJhY3Rpb25EZWxlZ2F0ZXNdOwogI2VuZGlmCiAKQEAgLTY0Miw4
ICs2MzcsNiBAQCBzdGF0aWMgVUlXZWJTZWxlY3Rpb25Nb2RlIHRvVUlXZWJTZWxlY3Rpb25Nb2Rl
KFdLU2VsZWN0aW9uR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdAogICAgIFtzZWxmIHJlbW92ZUdlc3R1
cmVSZWNvZ25pemVyOl90d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07
CiAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKLSAgICBbX2RhdGFJbnRlcmFjdGlvbkdl
c3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOm5pbF07Ci0gICAgW3NlbGYgcmVtb3ZlR2VzdHVy
ZVJlY29nbml6ZXI6X2RhdGFJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICAg
ICBbc2VsZiB0ZWFyZG93bkRhdGFJbnRlcmFjdGlvbkRlbGVnYXRlc107CiAjZW5kaWYKIApAQCAt
Njc0LDkgKzY2Nyw2IEBAIHN0YXRpYyBVSVdlYlNlbGVjdGlvbk1vZGUgdG9VSVdlYlNlbGVjdGlv
bk1vZGUoV0tTZWxlY3Rpb25HcmFudWxhcml0eSBncmFudWxhcml0CiAgICAgW3NlbGYgcmVtb3Zl
R2VzdHVyZVJlY29nbml6ZXI6X25vbkJsb2NraW5nRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIu
Z2V0KCldOwogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJEb3Vi
bGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJl
Y29nbml6ZXI6X3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKLSNp
ZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKLSAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2du
aXplcjpfZGF0YUludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwotI2VuZGlmCiB9
CiAKIC0gKHZvaWQpX2FkZERlZmF1bHRHZXN0dXJlUmVjb2duaXplcnMKQEAgLTY4OCw5ICs2Nzgs
NiBAQCBzdGF0aWMgVUlXZWJTZWxlY3Rpb25Nb2RlIHRvVUlXZWJTZWxlY3Rpb25Nb2RlKFdLU2Vs
ZWN0aW9uR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdAogICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25p
emVyOl9ub25CbG9ja2luZ0RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICAgICBb
c2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29n
bml6ZXIuZ2V0KCldOwogICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJT
aW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07Ci0jaWYgRU5BQkxFKERBVEFfSU5URVJB
Q1RJT04pCi0gICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X2RhdGFJbnRlcmFjdGlvbkdl
c3R1cmVSZWNvZ25pemVyLmdldCgpXTsKLSNlbmRpZgogfQogCiAtIChVSVZpZXcqKXVuc2NhbGVk
VmlldwpAQCAtMTIyNiwxNCArMTIxMyw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVQYWly
KFVJR2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJR2VzdHVyZVJlY29nbml6ZXIgKmIsIFVJCiAgICAg
aWYgKGlzU2FtZVBhaXIoZ2VzdHVyZVJlY29nbml6ZXIsIG90aGVyR2VzdHVyZVJlY29nbml6ZXIs
IF9oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5nZXQoKSwgX3ByZXZpZXdHZXN0
dXJlUmVjb2duaXplci5nZXQoKSkpCiAgICAgICAgIHJldHVybiBZRVM7CiAKLSNpZiBFTkFCTEUo
REFUQV9JTlRFUkFDVElPTikKLSAgICBpZiAoaXNTYW1lUGFpcihnZXN0dXJlUmVjb2duaXplciwg
b3RoZXJHZXN0dXJlUmVjb2duaXplciwgX2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25p
emVyLmdldCgpLCBfZGF0YUludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCkpKQotICAg
ICAgICByZXR1cm4gWUVTOwotCi0gICAgaWYgKGlzU2FtZVBhaXIoZ2VzdHVyZVJlY29nbml6ZXIs
IG90aGVyR2VzdHVyZVJlY29nbml6ZXIsIF9sb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5nZXQo
KSwgX2RhdGFJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmdldCgpKSkKLSAgICAgICAgcmV0
dXJuIFlFUzsKLSNlbmRpZgotCiAgICAgcmV0dXJuIE5POwogfQogCkBAIC0xNDA0LDExICsxMzgz
LDYgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAq
YSwgVUlHZXN0dXJlUmVjb2duaXplciAqYiwgVUkKICAgICAgICAgfQogICAgIH0KIAotI2lmIEVO
QUJMRShEQVRBX0lOVEVSQUNUSU9OKQotICAgIGlmIChnZXN0dXJlUmVjb2duaXplciA9PSBfZGF0
YUludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIpCi0gICAgICAgIHJldHVybiBbc2VsZiBwb2lu
dElzSW5EYXRhSW50ZXJhY3Rpb25Db250ZW50OnBvaW50XTsKLSNlbmRpZgotCiAgICAgcmV0dXJu
IFlFUzsKIH0KIApAQCAtMTQ2NCwxMSArMTQzOCw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1Nh
bWVQYWlyKFVJR2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJR2VzdHVyZVJlY29nbml6ZXIgKmIsIFVJ
CiAgICAgcmV0dXJuIF9wb3NpdGlvbkluZm9ybWF0aW9uLmhhc1NlbGVjdGlvbkF0UG9zaXRpb247
CiB9CiAKLS0gKFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgKilfZGF0YUludGVyYWN0aW9u
R2VzdHVyZVJlY29nbml6ZXIKLXsKLSAgICByZXR1cm4gX2RhdGFJbnRlcmFjdGlvbkdlc3R1cmVS
ZWNvZ25pemVyLmdldCgpOwotfQotCiAjZW5kaWYKIAogLSAoQk9PTClwb2ludElzTmVhck1hcmtl
ZFRleHQ6KENHUG9pbnQpcG9pbnQKQEAgLTE3NTAsMTAgKzE3MTksNiBAQCBzdGF0aWMgdm9pZCBj
YW5jZWxQb3RlbnRpYWxUYXBJZk5lY2Vzc2FyeShXS0NvbnRlbnRWaWV3KiBjb250ZW50VmlldykK
ICAgICBfaGFzVmFsaWRQb3NpdGlvbkluZm9ybWF0aW9uID0gWUVTOwogICAgIGlmIChfYWN0aW9u
U2hlZXRBc3Npc3RhbnQpCiAgICAgICAgIFtfYWN0aW9uU2hlZXRBc3Npc3RhbnQgdXBkYXRlU2hl
ZXRQb3NpdGlvbl07Ci0KLSNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKLSAgICBbc2VsZiBf
dXBkYXRlRGF0YUludGVyYWN0aW9uUHJldmlld1NuYXBzaG90SWZQb3NzaWJsZV07Ci0jZW5kaWYK
IH0KIAogLSAodm9pZClfd2lsbFN0YXJ0U2Nyb2xsaW5nT3Jab29taW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLU2Nyb2xsVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3Lm1tCmluZGV4IDBiNDdhMWY4NzNmMmIzNWQ5
NjkyNmUxMmNmNThiNjgyZmM3NjRjNWYuLjhiNTFjNWZkZjYxOWYxODk5M2Y1OTcwNDdmNmI5ZDUy
ZGI4YzZiNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tTY3Jv
bGxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3
Lm1tCkBAIC0xMjksNiArMTI5LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAgcmV0
dXJuIHNlbGY7CiB9CiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAmJiBfX2hhc19pbmNs
dWRlKDxXZWJLaXRBZGRpdGlvbnMvV0tTY3JvbGxWaWV3QWRkaXRpb25zLm1tPikKKyNpbXBvcnQg
PFdlYktpdEFkZGl0aW9ucy9XS1Njcm9sbFZpZXdBZGRpdGlvbnMubW0+CisjZW5kaWYKKwogLSAo
dm9pZClzZXRJbnRlcm5hbERlbGVnYXRlOihXS1dlYlZpZXcgPFVJU2Nyb2xsVmlld0RlbGVnYXRl
PiAqKWludGVybmFsRGVsZWdhdGUKIHsKICAgICBpZiAoaW50ZXJuYWxEZWxlZ2F0ZSA9PSBfaW50
ZXJuYWxEZWxlZ2F0ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCAzMDkxOWMwZTNiYWM2ZDQ2MzQ0YjE5MTBjNGMyMGU3YTdkMGQ4NGNhLi45ODY0
ZGE3MWU1OTIyNTdkMmVkMmU3YmQ2MjY1MDYxYWUxNzM3NzI2IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTctMDIt
MjAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVm
YWN0b3IgZGF0YSBpbnRlcmFjdGlvbiB0byB1c2UgbmV3IFdLRGF0YUludGVyYWN0aW9uIFNQSQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NjAyCisg
ICAgICAgIFdvcmsgdG93YXJkcyA8cmRhcjovL3Byb2JsZW0vMzAzMTM2ODE+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIERhdGFJbnRlcmFj
dGlvblNpbXVsYXRvciB0byBzaW11bGF0ZSBkYXRhIGludGVyYWN0aW9uIHVzaW5nIHVwZGF0ZWQg
U1BJLiBTZWUgY2hhbmdlcyBpbiBXZWJLaXQyIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL0Rh
dGFJbnRlcmFjdGlvblNpbXVsYXRvci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL0Rh
dGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbToKKyAgICAgICAgKC1bRGF0YUludGVyYWN0aW9uU2lt
dWxhdG9yIF9yZXNldFNpbXVsYXRlZFN0YXRlXSk6CisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlv
blNpbXVsYXRvciBydW5Gcm9tOnRvOl0pOgorICAgICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11
bGF0b3IgX2FkdmFuY2VQcm9ncmVzc10pOgorICAgICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11
bGF0b3IgX2N1cnJlbnRMb2NhdGlvbl0pOgorICAgICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11
bGF0b3IgX2ZpbmlzaERhdGFJbnRlcmFjdGlvbl0pOiBEZWxldGVkLgorICAgICAgICAoLVtEYXRh
SW50ZXJhY3Rpb25TaW11bGF0b3Igd2ViVmlld0RpZFNlbmREYXRhSW50ZXJhY3Rpb25TdGFydFJl
cXVlc3Q6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciB3
ZWJWaWV3OmRpZFJlY2VpdmVEYXRhSW50ZXJhY3Rpb25TdGFydFJlc3BvbnNlOl0pOiBEZWxldGVk
LgorCisyMDE3LTAyLTIwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFJlbW92ZSB0aGUgZGF0YSBpbnRlcmFjdGlvbiBnZXN0dXJlIHJlY29nbml6ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODYwMAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAzMTM2ODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QW5kZXJzIENhcmxzc29uLgorCisgICAgICAgIEFkanVzdCBUZXN0V2ViS2l0QVBJIGZvciBjaGFu
Z2VzIGluIFdlYktpdDIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJh
Y3Rpb25TaW11bGF0b3IuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJh
Y3Rpb25TaW11bGF0b3IubW06CisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBp
bml0V2l0aFdlYlZpZXc6XSk6CisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBy
dW5Gcm9tOnRvOl0pOgorICAgICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgX2FkdmFu
Y2VQcm9ncmVzc10pOgorICAgICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgX2Zpbmlz
aERhdGFJbnRlcmFjdGlvbl0pOgorICAgICAgICAoLVtNb2NrTG9uZ1ByZXNzR2VzdHVyZVJlY29n
bml6ZXIgaW5pdFdpdGhXaW5kb3c6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW01vY2tMb25nUHJl
c3NHZXN0dXJlUmVjb2duaXplciBsb2NhdGlvbkluVmlldzpdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bTW9ja0xvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIHN0YXRlXSk6IERlbGV0ZWQuCisgICAg
ICAgICgtW01vY2tMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBudW1iZXJPZlRvdWNoZXNdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIF9yZWNvZ25pemVH
ZXN0dXJlQXRMb2NhdGlvbjp3aXRoU3RhdGU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0RhdGFJ
bnRlcmFjdGlvblNpbXVsYXRvciBkYXRhSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplcl0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igd2ViVmlldzpiZWdp
bkRhdGFJbnRlcmFjdGlvbldpdGhTb3VyY2VJbmRleDpnZXN0dXJlUmVjb2duaXplcjpdKTogRGVs
ZXRlZC4KKwogMjAxNy0wMi0yMCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjEyNjg1LgpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQppbmRl
eCBhZWQ0YzhhMjhkNGI1M2I2NDRhOGNmYzMwMjVkMzUxYjNhYzQwZjZiLi41Y2M3YTFlMzUxMDJl
M2MwN2E2ODg2ZjRiYzk4NDViZWQ3NjczYjZjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQpAQCAtNzUsNyArNzUsNiBA
QCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBJbWFnZVRvVGV4dGFyZWEpCiAKICAgICBOU1VS
TCAqaW1hZ2VVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOlt3ZWJWaWV3IGVkaXRvclZhbHVl
XV07CiAgICAgRVhQRUNUX1dLX1NUUkVRKCJpY29uLnBuZyIsIGltYWdlVVJMLmxhc3RQYXRoQ29t
cG9uZW50KTsKLSAgICBFWFBFQ1RfVFJVRShbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGRpZFRy
eVRvQmVnaW5EYXRhSW50ZXJhY3Rpb25dKTsKIAogICAgIE5TQXJyYXkgKm9ic2VydmVkRXZlbnRO
YW1lcyA9IFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igb2JzZXJ2ZWRFdmVudE5hbWVzXTsKICAg
ICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRl
cmFjdGlvbkVudGVyRXZlbnROYW1lXSk7CkBAIC05Myw3ICs5Miw2IEBAIFRFU1QoRGF0YUludGVy
YWN0aW9uVGVzdHMsIENvbnRlbnRFZGl0YWJsZVRvQ29udGVudEVkaXRhYmxlKQogCiAgICAgRVhQ
RUNUX0VRKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzb3VyY2UudGV4
dENvbnRlbnQiXS5sZW5ndGgsIDBVTCk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKCJIZWxsbyB3b3Js
ZCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJlZGl0b3IudGV4dENv
bnRlbnQiXS5VVEY4U3RyaW5nKTsKLSAgICBFWFBFQ1RfVFJVRShbZGF0YUludGVyYWN0aW9uU2lt
dWxhdG9yIGRpZFRyeVRvQmVnaW5EYXRhSW50ZXJhY3Rpb25dKTsKIAogICAgIE5TQXJyYXkgKm9i
c2VydmVkRXZlbnROYW1lcyA9IFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igb2JzZXJ2ZWRFdmVu
dE5hbWVzXTsKICAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2Jq
ZWN0OkRhdGFJbnRlcmFjdGlvbkVudGVyRXZlbnROYW1lXSk7CkBAIC0xMTEsNyArMTA5LDYgQEAg
VEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgQ29udGVudEVkaXRhYmxlVG9UZXh0YXJlYSkKIAog
ICAgIEVYUEVDVF9FUShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAic291
cmNlLnRleHRDb250ZW50Il0ubGVuZ3RoLCAwVUwpOwogICAgIEVYUEVDVF9XS19TVFJFUSgiSGVs
bG8gd29ybGQiLCBbd2ViVmlldyBlZGl0b3JWYWx1ZV0uVVRGOFN0cmluZyk7Ci0gICAgRVhQRUNU
X1RSVUUoW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBkaWRUcnlUb0JlZ2luRGF0YUludGVyYWN0
aW9uXSk7CiAKICAgICBOU0FycmF5ICpvYnNlcnZlZEV2ZW50TmFtZXMgPSBbZGF0YUludGVyYWN0
aW9uU2ltdWxhdG9yIG9ic2VydmVkRXZlbnROYW1lc107CiAgICAgRVhQRUNUX1RSVUUoW29ic2Vy
dmVkRXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50ZXJhY3Rpb25FbnRlckV2ZW50TmFt
ZV0pOwpAQCAtMTI4LDcgKzEyNSw2IEBAIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIExpbmtU
b0lucHV0KQogICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFr
ZSgxMDAsIDUwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOwogCiAgICAgRVhQRUNUX1dLX1NU
UkVRKCJodHRwczovL3d3dy5kYXJpbmdmaXJlYmFsbC5uZXQvIiwgW3dlYlZpZXcgZWRpdG9yVmFs
dWVdLlVURjhTdHJpbmcpOwotICAgIEVYUEVDVF9UUlVFKFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0
b3IgZGlkVHJ5VG9CZWdpbkRhdGFJbnRlcmFjdGlvbl0pOwogCiAgICAgTlNBcnJheSAqb2JzZXJ2
ZWRFdmVudE5hbWVzID0gW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBvYnNlcnZlZEV2ZW50TmFt
ZXNdOwogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6
RGF0YUludGVyYWN0aW9uRW50ZXJFdmVudE5hbWVdKTsKQEAgLTE0NSw3ICsxNDEsNiBAQCBURVNU
KERhdGFJbnRlcmFjdGlvblRlc3RzLCBCYWNrZ3JvdW5kSW1hZ2VMaW5rVG9JbnB1dCkKICAgICBb
ZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMTAwLCA1MCkgdG86
Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKIAogICAgIEVYUEVDVF9XS19TVFJFUSgiaHR0cHM6Ly93
d3cuZGFyaW5nZmlyZWJhbGwubmV0LyIsIFt3ZWJWaWV3IGVkaXRvclZhbHVlXS5VVEY4U3RyaW5n
KTsKLSAgICBFWFBFQ1RfVFJVRShbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGRpZFRyeVRvQmVn
aW5EYXRhSW50ZXJhY3Rpb25dKTsKIAogICAgIE5TQXJyYXkgKm9ic2VydmVkRXZlbnROYW1lcyA9
IFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igb2JzZXJ2ZWRFdmVudE5hbWVzXTsKICAgICBFWFBF
Q1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlv
bkVudGVyRXZlbnROYW1lXSk7CkBAIC0xNjIsNyArMTU3LDYgQEAgVEVTVChEYXRhSW50ZXJhY3Rp
b25UZXN0cywgQ2FuUHJldmVudFN0YXJ0KQogICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Ig
cnVuRnJvbTpDR1BvaW50TWFrZSgxMDAsIDUwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOwog
CiAgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGVkaXRvckNvbnRhaW5zSW1hZ2VFbGVtZW50XSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgZGlkVHJ5VG9CZWdp
bkRhdGFJbnRlcmFjdGlvbl0pOwogCiAgICAgTlNBcnJheSAqb2JzZXJ2ZWRFdmVudE5hbWVzID0g
W2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBvYnNlcnZlZEV2ZW50TmFtZXNdOwogICAgIEVYUEVD
VF9GQUxTRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlv
bkVudGVyRXZlbnROYW1lXSk7CkBAIC0xNzgsNyArMTcyLDYgQEAgVEVTVChEYXRhSW50ZXJhY3Rp
b25UZXN0cywgQ2FuUHJldmVudE9wZXJhdGlvbikKICAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxh
dG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMTAwLCA1MCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDAp
XTsKIAogICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBlZGl0b3JDb250YWluc0ltYWdlRWxlbWVu
dF0pOwotICAgIEVYUEVDVF9UUlVFKFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgZGlkVHJ5VG9C
ZWdpbkRhdGFJbnRlcmFjdGlvbl0pOwogCiAgICAgTlNBcnJheSAqb2JzZXJ2ZWRFdmVudE5hbWVz
ID0gW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBvYnNlcnZlZEV2ZW50TmFtZXNdOwogICAgIEVY
UEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0
aW9uRW50ZXJFdmVudE5hbWVdKTsKQEAgLTE5NCw3ICsxODcsNiBAQCBURVNUKERhdGFJbnRlcmFj
dGlvblRlc3RzLCBFbnRlckFuZExlYXZlRXZlbnRzKQogICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11
bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgxMDAsIDUwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDQ1
MCldOwogCiAgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBlZGl0b3JWYWx1ZV0uVVRG
OFN0cmluZyk7Ci0gICAgRVhQRUNUX1RSVUUoW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBkaWRU
cnlUb0JlZ2luRGF0YUludGVyYWN0aW9uXSk7CiAKICAgICBOU0FycmF5ICpvYnNlcnZlZEV2ZW50
TmFtZXMgPSBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIG9ic2VydmVkRXZlbnROYW1lc107CiAg
ICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50
ZXJhY3Rpb25FbnRlckV2ZW50TmFtZV0pOwpAQCAtMjAzLDIyICsxOTUsNiBAQCBURVNUKERhdGFJ
bnRlcmFjdGlvblRlc3RzLCBFbnRlckFuZExlYXZlRXZlbnRzKQogICAgIEVYUEVDVF9GQUxTRShb
b2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvblBlcmZvcm1P
cGVyYXRpb25FdmVudE5hbWVdKTsKIH0KIAotVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgSGFu
ZGxlc0RhdGFJbnRlcmFjdGlvbkZhaWx1cmVHcmFjZWZ1bGx5KQotewotICAgIFJldGFpblB0cjxU
ZXN0V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKLSAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJsaW5rLWFuZC1pbnB1dCJdOwotCi0gICAg
UmV0YWluUHRyPERhdGFJbnRlcmFjdGlvblNpbXVsYXRvcj4gZGF0YUludGVyYWN0aW9uU2ltdWxh
dG9yID0gYWRvcHROUyhbW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhX
ZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKLSAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHNl
dEZvcmNlUmVxdWVzdFRvRmFpbDpZRVNdOwotICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Ig
cnVuRnJvbTpDR1BvaW50TWFrZSgxMDAsIDUwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOwot
ICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgZWRpdG9yVmFsdWVdLlVURjhTdHJpbmcp
OwotCi0gICAgLy8gQmVmb3JlIHIyMTIyNjYsIHN0YXJ0aW5nIGEgc3Vic2VxdWVudCBnZXN0dXJl
IHdvdWxkIGhhdmUgY2F1c2VkIGEgZGVidWcgYXNzZXJ0aW9uIGluIHRoZSB3ZWIgcHJvY2Vzcy4K
LSAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHNldEZvcmNlUmVxdWVzdFRvRmFpbDpOT107
Ci0gICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDEwMCwg
NTApIHRvOkNHUG9pbnRNYWtlKDEwMCwgMzAwKV07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJodHRw
czovL3d3dy5kYXJpbmdmaXJlYmFsbC5uZXQvIiwgW3dlYlZpZXcgZWRpdG9yVmFsdWVdLlVURjhT
dHJpbmcpOwotfQotCiBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBFeHRlcm5hbFNvdXJjZVVU
RjhQbGFpblRleHRPbmx5KQogewogICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCAzMjAsIDUwMCldKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9z
L0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0
YUludGVyYWN0aW9uU2ltdWxhdG9yLmgKaW5kZXggNzQ5NGU3NmI5MGU4MTdkMTQ1N2UzMDY4ZDg1
MTRjZThiNzRmYjA0NS4uNTEwYmRmYjVmOGI4MjIyZjM2ZmRhNmMyMWRkMTcxZmU4NGRkOTFiNSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxh
dG9yLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxh
dG9yLmgKQEAgLTMxLDggKzMxLDggQEAKICNpbXBvcnQgPFdlYktpdC9fV0tUZXN0aW5nRGVsZWdh
dGUuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCi1AY2xhc3MgTW9ja0xvbmdQcmVzc0dl
c3R1cmVSZWNvZ25pemVyOwogQGNsYXNzIE1vY2tEYXRhSW50ZXJhY3Rpb25JbmZvOworQGNsYXNz
IE1vY2tEYXRhSW50ZXJhY3Rpb25TZXNzaW9uOwogCiBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBE
YXRhSW50ZXJhY3Rpb25FbnRlckV2ZW50TmFtZTsKIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IERh
dGFJbnRlcmFjdGlvbk92ZXJFdmVudE5hbWU7CkBAIC00MSw3ICs0MSw4IEBAIGV4dGVybiBOU1N0
cmluZyAqIGNvbnN0IERhdGFJbnRlcmFjdGlvbkxlYXZlRXZlbnROYW1lOwogZXh0ZXJuIE5TU3Ry
aW5nICogY29uc3QgRGF0YUludGVyYWN0aW9uU3RhcnRFdmVudE5hbWU7CiAKIHR5cGVkZWYgTlNf
RU5VTShOU0ludGVnZXIsIERhdGFJbnRlcmFjdGlvblBoYXNlKSB7Ci0gICAgRGF0YUludGVyYWN0
aW9uVW5yZWNvZ25pemVkID0gMSwKKyAgICBEYXRhSW50ZXJhY3Rpb25DYW5jZWxsZWQgPSAwLAor
ICAgIERhdGFJbnRlcmFjdGlvbkJlZ2lubmluZyA9IDEsCiAgICAgRGF0YUludGVyYWN0aW9uQmVn
YW4gPSAyLAogICAgIERhdGFJbnRlcmFjdGlvbkVudGVyZWQgPSAzLAogICAgIERhdGFJbnRlcmFj
dGlvblBlcmZvcm1pbmcgPSA0CkBAIC00OSwxNCArNTAsMTQgQEAgdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgRGF0YUludGVyYWN0aW9uUGhhc2UpIHsKIAogQGludGVyZmFjZSBEYXRhSW50ZXJh
Y3Rpb25TaW11bGF0b3IgOiBOU09iamVjdDxfV0tUZXN0aW5nRGVsZWdhdGU+IHsKICAgICBSZXRh
aW5QdHI8VGVzdFdLV2ViVmlldz4gX3dlYlZpZXc7Ci0gICAgUmV0YWluUHRyPE1vY2tMb25nUHJl
c3NHZXN0dXJlUmVjb2duaXplcj4gX2dlc3R1cmVSZWNvZ25pemVyOworICAgIFJldGFpblB0cjxN
b2NrRGF0YUludGVyYWN0aW9uU2Vzc2lvbj4gX2RhdGFJbnRlcmFjdGlvblNlc3Npb247CiAgICAg
UmV0YWluUHRyPE1vY2tEYXRhSW50ZXJhY3Rpb25JbmZvPiBfZGF0YUludGVyYWN0aW9uSW5mbzsK
ICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IF9vYnNlcnZlZEV2ZW50TmFtZXM7CiAgICAg
UmV0YWluUHRyPFVJSXRlbVByb3ZpZGVyPiBfZXh0ZXJuYWxJdGVtUHJvdmlkZXI7CiAgICAgQ0dQ
b2ludCBfc3RhcnRMb2NhdGlvbjsKICAgICBDR1BvaW50IF9lbmRMb2NhdGlvbjsKIAotICAgIGRv
dWJsZSBfZ2VzdHVyZVByb2dyZXNzOworICAgIGRvdWJsZSBfY3VycmVudFByb2dyZXNzOwogICAg
IGJvb2wgX2lzRG9uZVdpdGhDdXJyZW50UnVuOwogICAgIERhdGFJbnRlcmFjdGlvblBoYXNlIF9w
aGFzZTsKIH0KQEAgLTY0LDkgKzY1LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgRGF0
YUludGVyYWN0aW9uUGhhc2UpIHsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFRl
c3RXS1dlYlZpZXcgKil3ZWJWaWV3OwogLSAodm9pZClydW5Gcm9tOihDR1BvaW50KXN0YXJ0TG9j
YXRpb24gdG86KENHUG9pbnQpZW5kTG9jYXRpb247CiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBC
T09MIGZvcmNlUmVxdWVzdFRvRmFpbDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIFVJ
SXRlbVByb3ZpZGVyICpleHRlcm5hbEl0ZW1Qcm92aWRlcjsKLUBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgQk9PTCBkaWRUcnlUb0JlZ2luRGF0YUludGVyYWN0aW9uOwogQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5ICpvYnNlcnZlZEV2ZW50TmFtZXM7CiAKIEBl
bmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNp
bXVsYXRvci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVs
YXRvci5tbQppbmRleCBlNmI1ODFkNTA0NjQ5YzljYTNhOWNlMmZmNDIyOGMwN2QwMjBmMzRmLi4y
ODU5YjU2Mzc1MzljYzI4MDdkNjA5Mjc1ZTFmNWU3MjA3MGIyNmZmIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLm1tCkBAIC0zOSw0
NiArMzksNiBAQCB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKICNpbmNsdWRlIDxXZWJL
aXRBZGRpdGlvbnMvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yQWRkaXRpb25zLm1tPgogI2VuZGlm
CiAKLUBpbnRlcmZhY2UgTW9ja0xvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIDogVUlMb25nUHJl
c3NHZXN0dXJlUmVjb2duaXplciB7Ci0gICAgUmV0YWluUHRyPFVJV2luZG93PiBfd2luZG93Owot
fQotCi1AcHJvcGVydHkgKG5vbmF0b21pYykgQ0dQb2ludCBtb2NrTG9jYXRpb25JbldpbmRvdzsK
LUBwcm9wZXJ0eSAobm9uYXRvbWljKSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUgbW9ja1N0YXRl
OwotQHByb3BlcnR5IChub25hdG9taWMpIE5TSW50ZWdlciBtb2NrTnVtYmVyT2ZUb3VjaGVzOwot
Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBNb2NrTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIK
LQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2luZG93OihVSVdpbmRvdyAqKXdpbmRvdwotewot
ICAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKSB7Ci0gICAgICAgIF93aW5kb3cgPSB3aW5kb3c7
Ci0gICAgICAgIF9tb2NrU3RhdGUgPSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVQb3NzaWJsZTsK
LSAgICAgICAgX21vY2tOdW1iZXJPZlRvdWNoZXMgPSAwOwotICAgICAgICBfbW9ja0xvY2F0aW9u
SW5XaW5kb3cgPSBDR1BvaW50WmVybzsKLSAgICB9Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0g
KENHUG9pbnQpbG9jYXRpb25JblZpZXc6KFVJVmlldyAqKXZpZXcKLXsKLSAgICByZXR1cm4gW3Zp
ZXcgY29udmVydFBvaW50Ol9tb2NrTG9jYXRpb25JbldpbmRvdyBmcm9tVmlldzpfd2luZG93Lmdl
dCgpXTsKLX0KLQotLSAoVUlHZXN0dXJlUmVjb2duaXplclN0YXRlKXN0YXRlCi17Ci0gICAgcmV0
dXJuIF9tb2NrU3RhdGU7Ci19Ci0KLS0gKE5TVUludGVnZXIpbnVtYmVyT2ZUb3VjaGVzCi17Ci0g
ICAgcmV0dXJuIF9tb2NrTnVtYmVyT2ZUb3VjaGVzOwotfQotCi1AZW5kCi0KIHN0YXRpYyBkb3Vi
bGUgcHJvZ3Jlc3NJbmNyZW1lbnRTdGVwID0gMC4wMzM7CiBzdGF0aWMgZG91YmxlIHByb2dyZXNz
VGltZVN0ZXAgPSAwLjAxNjsKIApAQCAtOTgsOSArNTgsNiBAQCBzdGF0aWMgTlNBcnJheSAqZGF0
YUludGVyYWN0aW9uRXZlbnROYW1lcygpCiB7CiAgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0p
IHsKICAgICAgICAgX3dlYlZpZXcgPSB3ZWJWaWV3OwotICAgICAgICBfZ2VzdHVyZVJlY29nbml6
ZXIgPSBhZG9wdE5TKFtbTW9ja0xvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0
V2l0aFdpbmRvdzp3ZWJWaWV3LndpbmRvd10pOwotCi0gICAgICAgIFtfZ2VzdHVyZVJlY29nbml6
ZXIgc2V0TW9ja051bWJlck9mVG91Y2hlczowXTsKICAgICAgICAgW193ZWJWaWV3IF9zZXRUZXN0
aW5nRGVsZWdhdGU6c2VsZl07CiAgICAgfQogICAgIHJldHVybiBzZWxmOwpAQCAtMTE2LDExICs3
MywxMiBAQCBzdGF0aWMgTlNBcnJheSAqZGF0YUludGVyYWN0aW9uRXZlbnROYW1lcygpCiAKIC0g
KHZvaWQpX3Jlc2V0U2ltdWxhdGVkU3RhdGUKIHsKLSAgICBfZ2VzdHVyZVByb2dyZXNzID0gMDsK
LSAgICBfcGhhc2UgPSBEYXRhSW50ZXJhY3Rpb25VbnJlY29nbml6ZWQ7CisgICAgX3BoYXNlID0g
RGF0YUludGVyYWN0aW9uQmVnaW5uaW5nOworICAgIF9jdXJyZW50UHJvZ3Jlc3MgPSAwOwogICAg
IF9pc0RvbmVXaXRoQ3VycmVudFJ1biA9IGZhbHNlOwotICAgIF9kaWRUcnlUb0JlZ2luRGF0YUlu
dGVyYWN0aW9uID0gTk87CiAgICAgX29ic2VydmVkRXZlbnROYW1lcyA9IGFkb3B0TlMoW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIF9kYXRhSW50ZXJhY3Rpb25TZXNzaW9uID0g
bmlsOworICAgIF9kYXRhSW50ZXJhY3Rpb25JbmZvID0gbmlsOwogfQogCiAtIChOU0FycmF5ICop
b2JzZXJ2ZWRFdmVudE5hbWVzCkBAIC0xNDIsNjggKzEwMCw4MiBAQCBzdGF0aWMgTlNBcnJheSAq
ZGF0YUludGVyYWN0aW9uRXZlbnROYW1lcygpCiAKICAgICBfc3RhcnRMb2NhdGlvbiA9IHN0YXJ0
TG9jYXRpb247CiAgICAgX2VuZExvY2F0aW9uID0gZW5kTG9jYXRpb247Ci0gICAgW19nZXN0dXJl
UmVjb2duaXplciBzZXRNb2NrTnVtYmVyT2ZUb3VjaGVzOjFdOwogCiAgICAgaWYgKHNlbGYuZXh0
ZXJuYWxJdGVtUHJvdmlkZXIpIHsKKyAgICAgICAgX2RhdGFJbnRlcmFjdGlvbkluZm8gPSBhZG9w
dE5TKFtbTW9ja0RhdGFJbnRlcmFjdGlvbkluZm8gYWxsb2NdIGluaXRXaXRoUHJvdmlkZXI6c2Vs
Zi5leHRlcm5hbEl0ZW1Qcm92aWRlciBsb2NhdGlvbjpfc3RhcnRMb2NhdGlvbiB3aW5kb3c6W193
ZWJWaWV3IHdpbmRvd11dKTsKICAgICAgICAgX3BoYXNlID0gRGF0YUludGVyYWN0aW9uQmVnYW47
Ci0gICAgICAgIF9kYXRhSW50ZXJhY3Rpb25JbmZvID0gYWRvcHROUyhbW01vY2tEYXRhSW50ZXJh
Y3Rpb25JbmZvIGFsbG9jXSBpbml0V2l0aFByb3ZpZGVyOnNlbGYuZXh0ZXJuYWxJdGVtUHJvdmlk
ZXIgbG9jYXRpb246c3RhcnRMb2NhdGlvbiB3aW5kb3c6W193ZWJWaWV3IHdpbmRvd11dKTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgW3NlbGYgX3JlY29nbml6ZUdlc3R1cmVBdExvY2F0aW9uOl9zdGFy
dExvY2F0aW9uIHdpdGhTdGF0ZTpVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVCZWdhbl07Ci0KLSAg
ICBbc2VsZiBfc2NoZWR1bGVBZHZhbmNlUHJvZ3Jlc3NdOworICAgICAgICBbc2VsZiBfYWR2YW5j
ZVByb2dyZXNzXTsKKyAgICB9IGVsc2UgeworICAgICAgICBfZGF0YUludGVyYWN0aW9uU2Vzc2lv
biA9IGFkb3B0TlMoW1tNb2NrRGF0YUludGVyYWN0aW9uU2Vzc2lvbiBhbGxvY10gaW5pdFdpdGhX
aW5kb3c6W193ZWJWaWV3IHdpbmRvd11dKTsKKyAgICAgICAgW19kYXRhSW50ZXJhY3Rpb25TZXNz
aW9uIHNldE1vY2tMb2NhdGlvbkluV2luZG93Ol9zdGFydExvY2F0aW9uXTsKKyAgICAgICAgW193
ZWJWaWV3IF9zaW11bGF0ZVByZXBhcmVGb3JEYXRhSW50ZXJhY3Rpb25TZXNzaW9uOl9kYXRhSW50
ZXJhY3Rpb25TZXNzaW9uLmdldCgpIGNvbXBsZXRpb246XigpIHsKKyAgICAgICAgICAgIERhdGFJ
bnRlcmFjdGlvblNpbXVsYXRvciAqd2Vha1NlbGYgPSBzdHJvbmdTZWxmLmdldCgpOworICAgICAg
ICAgICAgd2Vha1NlbGYtPl9waGFzZSA9IERhdGFJbnRlcmFjdGlvbkJlZ2lubmluZzsKKyAgICAg
ICAgICAgIFt3ZWFrU2VsZiBfYWR2YW5jZVByb2dyZXNzXTsKKyAgICAgICAgfV07CisgICAgfQog
CiAgICAgVXRpbDo6cnVuKCZfaXNEb25lV2l0aEN1cnJlbnRSdW4pOwotICAgIFtfZ2VzdHVyZVJl
Y29nbml6ZXIgc2V0TW9ja051bWJlck9mVG91Y2hlczowXTsKICAgICBbX3dlYlZpZXcgY2xlYXJN
ZXNzYWdlSGFuZGxlcnM6ZGF0YUludGVyYWN0aW9uRXZlbnROYW1lcygpXTsKIH0KIAogLSAodm9p
ZClfYWR2YW5jZVByb2dyZXNzCiB7Ci0gICAgX2dlc3R1cmVQcm9ncmVzcyA9IHN0ZDo6bWluKDEu
MCwgc3RkOjptYXgoMC4wLCBwcm9ncmVzc0luY3JlbWVudFN0ZXAgKyBfZ2VzdHVyZVByb2dyZXNz
KSk7Ci0gICAgW19kYXRhSW50ZXJhY3Rpb25JbmZvIHNldE1vY2tMb2NhdGlvbkluV2luZG93OnNl
bGYuX2N1cnJlbnRMb2NhdGlvbl07Ci0gICAgaWYgKF9nZXN0dXJlUHJvZ3Jlc3MgPj0gMSkgewot
ICAgICAgICBbc2VsZiBfZmluaXNoRGF0YUludGVyYWN0aW9uXTsKKyAgICBfY3VycmVudFByb2dy
ZXNzICs9IHByb2dyZXNzSW5jcmVtZW50U3RlcDsKKyAgICBDR1BvaW50IGxvY2F0aW9uSW5XaW5k
b3cgPSBzZWxmLl9jdXJyZW50TG9jYXRpb247CisgICAgW19kYXRhSW50ZXJhY3Rpb25TZXNzaW9u
IHNldE1vY2tMb2NhdGlvbkluV2luZG93OmxvY2F0aW9uSW5XaW5kb3ddOworICAgIFtfZGF0YUlu
dGVyYWN0aW9uSW5mbyBzZXRNb2NrTG9jYXRpb25JbldpbmRvdzpsb2NhdGlvbkluV2luZG93XTsK
KworICAgIGlmIChfY3VycmVudFByb2dyZXNzID49IDEpIHsKKyAgICAgICAgW193ZWJWaWV3IF9z
aW11bGF0ZURhdGFJbnRlcmFjdGlvblBlcmZvcm1PcGVyYXRpb246X2RhdGFJbnRlcmFjdGlvbklu
Zm8uZ2V0KCldOworICAgICAgICBbX3dlYlZpZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uRW5k
ZWQ6X2RhdGFJbnRlcmFjdGlvbkluZm8uZ2V0KCldOworICAgICAgICBpZiAoX2RhdGFJbnRlcmFj
dGlvblNlc3Npb24pCisgICAgICAgICAgICBbX3dlYlZpZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0
aW9uU2Vzc2lvbkRpZEVuZDpfZGF0YUludGVyYWN0aW9uU2Vzc2lvbi5nZXQoKV07CisKKyAgICAg
ICAgX3BoYXNlID0gRGF0YUludGVyYWN0aW9uUGVyZm9ybWluZzsKKyAgICAgICAgX2N1cnJlbnRQ
cm9ncmVzcyA9IDE7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBzd2l0Y2ggKF9waGFz
ZSkgewotICAgIGNhc2UgRGF0YUludGVyYWN0aW9uVW5yZWNvZ25pemVkOgotICAgICAgICBbc2Vs
ZiBfcmVjb2duaXplR2VzdHVyZUF0TG9jYXRpb246c2VsZi5fY3VycmVudExvY2F0aW9uIHdpdGhT
dGF0ZTpVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVDaGFuZ2VkXTsKLSAgICAgICAgW3NlbGYgX3Nj
aGVkdWxlQWR2YW5jZVByb2dyZXNzXTsKKyAgICBjYXNlIERhdGFJbnRlcmFjdGlvbkJlZ2lubmlu
ZzogeworICAgICAgICBOU011dGFibGVBcnJheTxVSUl0ZW1Qcm92aWRlciAqPiAqaXRlbVByb3Zp
ZGVycyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CisgICAgICAgIE5TQXJyYXk8V0tEYXRhSW50
ZXJhY3Rpb25JdGVtICo+ICppdGVtcyA9IFtfd2ViVmlldyBfc2ltdWxhdGVkSXRlbXNGb3JTZXNz
aW9uOl9kYXRhSW50ZXJhY3Rpb25TZXNzaW9uLmdldCgpXTsKKyAgICAgICAgaWYgKCFpdGVtcy5j
b3VudCkgeworICAgICAgICAgICAgX3BoYXNlID0gRGF0YUludGVyYWN0aW9uQ2FuY2VsbGVkOwor
ICAgICAgICAgICAgX2N1cnJlbnRQcm9ncmVzcyA9IDE7CisgICAgICAgICAgICBfaXNEb25lV2l0
aEN1cnJlbnRSdW4gPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgZm9yIChXS0RhdGFJbnRlcmFjdGlvbkl0ZW0gKml0ZW0gaW4gaXRlbXMpCisgICAgICAg
ICAgICBbaXRlbVByb3ZpZGVycyBhZGRPYmplY3Q6aXRlbS5pdGVtUHJvdmlkZXJdOworCisgICAg
ICAgIF9kYXRhSW50ZXJhY3Rpb25JbmZvID0gYWRvcHROUyhbW01vY2tEYXRhSW50ZXJhY3Rpb25J
bmZvIGFsbG9jXSBpbml0V2l0aFByb3ZpZGVyOml0ZW1Qcm92aWRlcnMuZmlyc3RPYmplY3QgbG9j
YXRpb246c2VsZi5fY3VycmVudExvY2F0aW9uIHdpbmRvdzpbX3dlYlZpZXcgd2luZG93XV0pOwor
ICAgICAgICBbX2RhdGFJbnRlcmFjdGlvblNlc3Npb24gc2V0SXRlbXM6aXRlbXNdOworICAgICAg
ICBbX3dlYlZpZXcgX3NpbXVsYXRlV2lsbEJlZ2luRGF0YUludGVyYWN0aW9uV2l0aFNlc3Npb246
X2RhdGFJbnRlcmFjdGlvblNlc3Npb24uZ2V0KCldOworICAgICAgICBfcGhhc2UgPSBEYXRhSW50
ZXJhY3Rpb25CZWdhbjsKICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgRGF0YUludGVy
YWN0aW9uQmVnYW46CiAgICAgICAgIFtfd2ViVmlldyBfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25F
bnRlcmVkOl9kYXRhSW50ZXJhY3Rpb25JbmZvLmdldCgpXTsKICAgICAgICAgX3BoYXNlID0gRGF0
YUludGVyYWN0aW9uRW50ZXJlZDsKLSAgICAgICAgW3NlbGYgX3NjaGVkdWxlQWR2YW5jZVByb2dy
ZXNzXTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEYXRhSW50ZXJhY3Rpb25FbnRlcmVkOgog
ICAgICAgICBbX3dlYlZpZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uVXBkYXRlZDpfZGF0YUlu
dGVyYWN0aW9uSW5mby5nZXQoKV07Ci0gICAgICAgIFtzZWxmIF9zY2hlZHVsZUFkdmFuY2VQcm9n
cmVzc107CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAg
IH0KLX0KLQotLSAodm9pZClfZmluaXNoRGF0YUludGVyYWN0aW9uCi17Ci0gICAgaWYgKF9waGFz
ZSA9PSBEYXRhSW50ZXJhY3Rpb25VbnJlY29nbml6ZWQpIHsKLSAgICAgICAgW3NlbGYgX3JlY29n
bml6ZUdlc3R1cmVBdExvY2F0aW9uOnNlbGYuX2N1cnJlbnRMb2NhdGlvbiB3aXRoU3RhdGU6VUlH
ZXN0dXJlUmVjb2duaXplclN0YXRlRW5kZWRdOwotICAgICAgICBfaXNEb25lV2l0aEN1cnJlbnRS
dW4gPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgX3BoYXNlID0gRGF0YUlu
dGVyYWN0aW9uUGVyZm9ybWluZzsKLSAgICBbX3dlYlZpZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0
aW9uUGVyZm9ybU9wZXJhdGlvbjpfZGF0YUludGVyYWN0aW9uSW5mby5nZXQoKV07Ci0gICAgW193
ZWJWaWV3IF9zaW11bGF0ZURhdGFJbnRlcmFjdGlvbkVuZGVkOl9kYXRhSW50ZXJhY3Rpb25JbmZv
LmdldCgpXTsKLSAgICBbX3dlYlZpZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uU2Vzc2lvbkRp
ZEVuZDpuaWwgd2l0aE9wZXJhdGlvbjowXTsKKyAgICBbc2VsZiBfc2NoZWR1bGVBZHZhbmNlUHJv
Z3Jlc3NdOwogfQogCiAtIChDR1BvaW50KV9jdXJyZW50TG9jYXRpb24KIHsKICAgICBDR0Zsb2F0
IGRpc3RhbmNlWCA9IF9lbmRMb2NhdGlvbi54IC0gX3N0YXJ0TG9jYXRpb24ueDsKICAgICBDR0Zs
b2F0IGRpc3RhbmNlWSA9IF9lbmRMb2NhdGlvbi55IC0gX3N0YXJ0TG9jYXRpb24ueTsKLSAgICBy
ZXR1cm4gQ0dQb2ludE1ha2UoX3N0YXJ0TG9jYXRpb24ueCArIF9nZXN0dXJlUHJvZ3Jlc3MgKiBk
aXN0YW5jZVgsIF9zdGFydExvY2F0aW9uLnkgKyBfZ2VzdHVyZVByb2dyZXNzICogZGlzdGFuY2VZ
KTsKKyAgICByZXR1cm4gQ0dQb2ludE1ha2UoX3N0YXJ0TG9jYXRpb24ueCArIF9jdXJyZW50UHJv
Z3Jlc3MgKiBkaXN0YW5jZVgsIF9zdGFydExvY2F0aW9uLnkgKyBfY3VycmVudFByb2dyZXNzICog
ZGlzdGFuY2VZKTsKIH0KIAogLSAodm9pZClfc2NoZWR1bGVBZHZhbmNlUHJvZ3Jlc3MKQEAgLTIx
MiwxMyArMTg0LDYgQEAgc3RhdGljIE5TQXJyYXkgKmRhdGFJbnRlcmFjdGlvbkV2ZW50TmFtZXMo
KQogICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoX2FkdmFuY2VQcm9ncmVzcykg
d2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheTpwcm9ncmVzc1RpbWVTdGVwXTsKIH0KIAotLSAodm9p
ZClfcmVjb2duaXplR2VzdHVyZUF0TG9jYXRpb246KENHUG9pbnQpbG9jYXRpb25JbldpbmRvdyB3
aXRoU3RhdGU6KFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSlzdGF0ZQotewotICAgIFtfZ2VzdHVy
ZVJlY29nbml6ZXIgc2V0TW9ja1N0YXRlOnN0YXRlXTsKLSAgICBbX2dlc3R1cmVSZWNvZ25pemVy
IHNldE1vY2tMb2NhdGlvbkluV2luZG93OmxvY2F0aW9uSW5XaW5kb3ddOwotICAgIFtfd2ViVmll
dyBfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplZF07Ci19Ci0KIC0gKFVJ
SXRlbVByb3ZpZGVyICopZXh0ZXJuYWxJdGVtUHJvdmlkZXIKIHsKICAgICByZXR1cm4gX2V4dGVy
bmFsSXRlbVByb3ZpZGVyLmdldCgpOwpAQCAtMjMxLDUxICsxOTYsMTEgQEAgc3RhdGljIE5TQXJy
YXkgKmRhdGFJbnRlcmFjdGlvbkV2ZW50TmFtZXMoKQogCiAjcHJhZ21hIG1hcmsgLSBfV0tUZXN0
aW5nRGVsZWdhdGUKIAotLSAoVUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciAqKWRhdGFJbnRl
cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyCi17Ci0gICAgcmV0dXJuIF9nZXN0dXJlUmVjb2duaXpl
ci5nZXQoKTsKLX0KLQogLSAodm9pZCl3ZWJWaWV3RGlkUGVyZm9ybURhdGFJbnRlcmFjdGlvbkNv
bnRyb2xsZXJPcGVyYXRpb246KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKICAgICBfaXNEb25lV2l0
aEN1cnJlbnRSdW4gPSB0cnVlOwogfQogCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgYmVnaW5EYXRhSW50ZXJhY3Rpb25XaXRoU291cmNlSW5kZXg6KE5TSW50ZWdlcilzb3Vy
Y2VJbmRleCBnZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVS
ZWNvZ25pemVyCi17Ci0gICAgX2RpZFRyeVRvQmVnaW5EYXRhSW50ZXJhY3Rpb24gPSBZRVM7Ci0K
LSAgICBpZiAoc2VsZi5mb3JjZVJlcXVlc3RUb0ZhaWwpIHsKLSAgICAgICAgW193ZWJWaWV3IF9z
aW11bGF0ZUZhaWxlZERhdGFJbnRlcmFjdGlvbldpdGhJbmRleDpzb3VyY2VJbmRleF07Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBfcGhhc2UgPSBEYXRhSW50ZXJhY3Rpb25CZWdhbjsK
LQotICAgIC8vIEVuZCB0aGUgZGF0YSBpbnRlcmFjdGlvbiBnZXN0dXJlIHJlY29nbml6ZXIuCi0g
ICAgYXV0byBsb2NhdGlvbiA9IHNlbGYuX2N1cnJlbnRMb2NhdGlvbjsKLSAgICBbc2VsZiBfcmVj
b2duaXplR2VzdHVyZUF0TG9jYXRpb246bG9jYXRpb24gd2l0aFN0YXRlOlVJR2VzdHVyZVJlY29n
bml6ZXJTdGF0ZUVuZGVkXTsKLQotICAgIC8vIE9mZmljaWFsbHkgYmVnaW4gZGF0YSBpbnRlcmFj
dGlvbiBieSBpbml0aWFsaXppbmcgdGhlIGluZm8uCi0gICAgTlNBcnJheSAqaXRlbXMgPSBbX3dl
YlZpZXcgX3NpbXVsYXRlZEl0ZW1zRm9yRGF0YUludGVyYWN0aW9uV2l0aEluZGV4OnNvdXJjZUlu
ZGV4XTsKLSAgICBfZGF0YUludGVyYWN0aW9uSW5mbyA9IGFkb3B0TlMoW1tNb2NrRGF0YUludGVy
YWN0aW9uSW5mbyBhbGxvY10gaW5pdFdpdGhJdGVtczppdGVtcyBsb2NhdGlvbjpsb2NhdGlvbiB3
aW5kb3c6W193ZWJWaWV3IHdpbmRvd11dKTsKLSAgICBbX3dlYlZpZXcgX3NpbXVsYXRlV2lsbEJl
Z2luRGF0YUludGVyYWN0aW9uV2l0aEluZGV4OnNvdXJjZUluZGV4IHdpdGhTZXNzaW9uOm5pbF07
Ci19Ci0KLS0gKHZvaWQpd2ViVmlld0RpZFNlbmREYXRhSW50ZXJhY3Rpb25TdGFydFJlcXVlc3Q6
KFdLV2ViVmlldyAqKXdlYlZpZXcKLXsKLSAgICAvLyBUaGlzIGFkZHJlc3NlcyBhIHJhY2UgY29u
ZGl0aW9uIGluIHRoZSB0ZXN0aW5nIGhhcm5lc3Mgd2hlcmVpbiB0aGUgd2ViIHByb2Nlc3MgbWln
aHQgdGFrZSBsb25nZXIgdGhhbiB1c3VhbCB0byBwcm9jZXNzIHRoZQotICAgIC8vIHJlcXVlc3Qg
dG8gc3RhcnQgZGF0YSBpbnRlcmFjdGlvbiwgYW5kIGluIHRoZSBtZWFudGltZSwgRGF0YUludGVy
YWN0aW9uU2ltdWxhdG9yIHdvdWxkIGVuZCB1cCBjb21wbGV0aW5nIHRoZSByZXN0IG9mIHRoZSB0
ZXN0Ci0gICAgLy8gYmVmb3JlIGEgcmVzcG9uc2UgZnJvbSB0aGUgd2ViIHByb2Nlc3MgaXMgcmVj
ZWl2ZWQuIFdlIGluc3RlYWQgZGVmZXIgdGVzdCBwcm9ncmVzcyB1bnRpbCBhZnRlciB0aGUgd2Vi
IHByb2Nlc3MgaGFzIGluZGljYXRlZAotICAgIC8vIHdoZXRoZXIgb3Igbm90IGRhdGEgaW50ZXJh
Y3Rpb24gc2hvdWxkIGNvbW1lbmNlLgotICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZv
cm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2FkdmFuY2VQcm9n
cmVzcykgb2JqZWN0Om5pbF07Ci19Ci0KLS0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBkaWRSZWNlaXZlRGF0YUludGVyYWN0aW9uU3RhcnRSZXNwb25zZTooQk9PTClzdGFydGVk
Ci17Ci0gICAgW3NlbGYgX3NjaGVkdWxlQWR2YW5jZVByb2dyZXNzXTsKLX0KLQogQGVuZAogCiAj
ZW5kaWYgLy8gRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302291</attachid>
            <date>2017-02-21 11:39:42 -0800</date>
            <delta_ts>2017-02-22 10:17:37 -0800</delta_ts>
            <desc>Fix bad rebase conflict</desc>
            <filename>bug-168602-20170221113642.patch</filename>
            <type>text/plain</type>
            <size>38046</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDE1NjMyOTYzOGE2Yjkx
MTUwYjMzZTAzNmY4MGMyNDY2NWRiNWNiNC4uYzRjM2E1N2JhN2U2YzI4OGJjMzdjNGRkMmNiZTQy
ZjRjMzA2MzIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTAyLTIwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIGRh
dGEgaW50ZXJhY3Rpb24gdG8gdXNlIG5ldyBXS0RhdGFJbnRlcmFjdGlvbiBTUEkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODYwMgorICAgICAgICBX
b3JrIHRvd2FyZHMgPHJkYXI6Ly9wcm9ibGVtLzMwMzEzNjgxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1pbm9yIHR3ZWFrIHRvIGFkb3B0IG5ldyBV
SUl0ZW1Qcm92aWRlciBBUEkgKGFuZCBtb3ZlIG9mZiBvZiBkZXByZWNhdGVkIFNQSSkuIFRoZXJl
IHNob3VsZCBiZSBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbToKKyAgICAgICAgKC1bV2ViSXRlbVByb3Zp
ZGVyUGFzdGVib2FyZCBzZXRJdGVtczpdKToKKwogMjAxNy0wMi0yMCAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBMb2NhbCBhdWRpby1vbmx5IHN0cmVhbSB3aWxs
IG5vdCB0cmlnZ2VyIHBsYXliYWNrIHRvIGJlZ2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjk2NDZlYjJjOGJk
YmFhNjkwOGY5MWRhNzMxZDU3MmI0ZTllMTgwMC4uNDJiZjViYTA1M2E1NjA3MTZjM2Y5ODkzYmI2
Y2YxZmM2ODc4Nzg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE3LTAyLTIwICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9y
IGRhdGEgaW50ZXJhY3Rpb24gdG8gdXNlIG5ldyBXS0RhdGFJbnRlcmFjdGlvbiBTUEkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODYwMgorICAgICAg
ICBXb3JrIHRvd2FyZHMgPHJkYXI6Ly9wcm9ibGVtLzMwMzEzNjgxPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkanVzdCB0ZXN0aW5nIFNQSSB0byBt
YXRjaCBuZXcgZGF0YSBpbnRlcmFjdGlvbiBpbnRlcmZhY2VzLgorCisgICAgICAgICogUGxhdGZv
cm0vc3BpL2lvcy9VSUtpdFNQSS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0aW9u
RW50ZXJlZDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaW11bGF0ZURhdGFJbnRlcmFjdGlv
blVwZGF0ZWQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2ltdWxhdGVEYXRhSW50ZXJhY3Rp
b25QZXJmb3JtT3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NpbXVsYXRlRGF0
YUludGVyYWN0aW9uRW5kZWQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2ltdWxhdGVEYXRh
SW50ZXJhY3Rpb25TZXNzaW9uRGlkRW5kOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NpbXVs
YXRlV2lsbEJlZ2luRGF0YUludGVyYWN0aW9uV2l0aFNlc3Npb246XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfc2ltdWxhdGVkSXRlbXNGb3JTZXNzaW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NpbXVsYXRlUHJlcGFyZUZvckRhdGFJbnRlcmFjdGlvblNlc3Npb246Y29tcGxldGlvbjpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblNlc3Npb25E
aWRFbmQ6d2l0aE9wZXJhdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
aW11bGF0ZUZhaWxlZERhdGFJbnRlcmFjdGlvbldpdGhJbmRleDpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9zaW11bGF0ZVdpbGxCZWdpbkRhdGFJbnRlcmFjdGlvbldpdGhJbmRl
eDp3aXRoU2Vzc2lvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zaW11bGF0
ZWRJdGVtc0ZvckRhdGFJbnRlcmFjdGlvbldpdGhJbmRleDpdKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tTY3JvbGxWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZp
ZXcubW06CisKKzIwMTctMDItMjAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBkYXRhIGludGVyYWN0aW9uIGdlc3R1cmUgcmVjb2du
aXplcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4
NjAwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDMxMzY4MT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBBbmRlcnMgQ2FybHNzb24uCisKKyAgICAgICAgVGhlIGRhdGEgaW50ZXJhY3Rpb24gZ2Vz
dHVyZSByZWNvZ25pemVyIHdpbGwgbm8gbG9uZ2VyIGJlIG5lZWRlZCBtb3ZpbmcgZm9yd2FyZC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZWRdKTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVwSW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBjbGVhbnVwSW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBfcmVtb3ZlRGVmYXVsdEdlc3R1cmVSZWNvZ25pemVyc10pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzXSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgZ2VzdHVyZVJlY29nbml6ZXI6c2hvdWxkUmVjb2duaXplU2ltdWx0YW5lb3VzbHlX
aXRoR2VzdHVyZVJlY29nbml6ZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZ2VzdHVy
ZVJlY29nbml6ZXJTaG91bGRCZWdpbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGF0
YUludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXJdKTogRGVsZXRlZC4KKwogMjAxNy0wMi0yMCAg
UnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjEyNjg1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQppbmRleCBjMmNkZWVjYjU3MzA1
ZDcwMDY0ZTlkNDIzZWE3ZDY0MzdlNDVmYTU0Li44Njk0YWI1YTkxOGY3NWMxMDJjMTNmNGZkOTA2
NmMwODkxMjFiNjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
SXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHN0YXRp
YyBCT09MIGlzSW1hZ2VUeXBlKE5TU3RyaW5nICp0eXBlKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgICAgICBbaXRlbVJlcHJlc2VudGF0aW9uc0NvcHkgcmVtb3ZlT2JqZWN0
Rm9yS2V5OnR5cGVJZGVudGlmaWVyXTsKLSAgICAgICAgICAgIFtvYmplY3RUb1dyaXRlIHJlZ2lz
dGVyTG9hZEhhbmRsZXJzVG9JdGVtUHJvdmlkZXI6aXRlbVByb3ZpZGVyLmdldCgpXTsKKyAgICAg
ICAgICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6b2JqZWN0VG9Xcml0ZSBvcHRpb25z
Om5pbF07CiAgICAgICAgIH0KIAogICAgICAgICAvLyBTZWNvbmRseSwgV2ViS2l0IHVzZXMgc29t
ZSBjdXN0b20gdHlwZSByZXByZXNlbnRhdGlvbnMgYW5kL29yIHR5cGUgaWRlbnRpZmllcnMsIHNv
IHdlIG5lZWQgdG8gd3JpdGUgdGhlc2UgYXMgd2VsbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L3NwaS9pb3MvVUlLaXRTUEkuaAppbmRleCA2OWQ0ZDdiOWQyMTgyZjAxYWQxZGQ1NTVmM2I5Mzll
MjVmODQxZTczLi5mYmRjODg5OTlmN2ZhZmNlM2MzOWY2NzA3ODJhYmQ3ZWM1YjQ1ZGRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCkBAIC01NCw2ICs1NCw3
IEBACiAjaW1wb3J0IDxVSUtpdC9VSVN0cmluZ0RyYXdpbmdfUHJpdmF0ZS5oPgogI2ltcG9ydCA8
VUlLaXQvVUlUYWJsZVZpZXdDZWxsX1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJVGFwR2Vz
dHVyZVJlY29nbml6ZXJfUHJpdmF0ZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlUZXh0RWZmZWN0c1dp
bmRvdy5oPgogI2ltcG9ydCA8VUlLaXQvVUlUZXh0SW5wdXRfUHJpdmF0ZS5oPgogI2ltcG9ydCA8
VUlLaXQvVUlUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnRfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlL
aXQvVUlWaWV3Q29udHJvbGxlclRyYW5zaXRpb25pbmdfUHJpdmF0ZS5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA0NDUzNDFmM2Jm
NjZiNzVmM2NkMWUyNjU4OWRhMjc2NDBjMWZlYmYwLi5mZGZhZjI5Y2U3MDcyYjY2NzRlN2I0ZTNi
NTA1OWQ2N2UyODZmMGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQpAQCAtNTE3MSw0MiArNTE3MSw2MiBAQCBzdGF0aWMgV2ViQ29yZTo6
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB0b1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24oVUlTZQogICAgIFdlYktpdDo6Vmlld1NuYXBzaG90U3RvcmU6OnNpbmdsZXRvbigpLnNldERp
c2FibGVTbmFwc2hvdFZvbGF0aWxpdHlGb3JUZXN0aW5nKHRydWUpOwogfQogCi0KLS0gKHZvaWQp
X3NpbXVsYXRlRGF0YUludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZWQKLXsKLX0KLQogLSAodm9p
ZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25FbnRlcmVkOihpZClpbmZvCiB7CisjaWYgRU5BQkxF
KERBVEFfSU5URVJBQ1RJT04pCisgICAgW19jb250ZW50VmlldyBfc2ltdWxhdGVEYXRhSW50ZXJh
Y3Rpb25FbnRlcmVkOmluZm9dOworI2VuZGlmCiB9CiAKIC0gKHZvaWQpX3NpbXVsYXRlRGF0YUlu
dGVyYWN0aW9uVXBkYXRlZDooaWQpaW5mbwogeworI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9O
KQorICAgIFtfY29udGVudFZpZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uVXBkYXRlZDppbmZv
XTsKKyNlbmRpZgogfQogCiAtICh2b2lkKV9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblBlcmZvcm1P
cGVyYXRpb246KGlkKWluZm8KIHsKKyNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKKyAgICBb
X2NvbnRlbnRWaWV3IF9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblBlcmZvcm1PcGVyYXRpb246aW5m
b107CisjZW5kaWYKIH0KIAogLSAodm9pZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25FbmRlZDoo
aWQpaW5mbwogeworI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQorICAgIFtfY29udGVudFZp
ZXcgX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uRW5kZWQ6aW5mb107CisjZW5kaWYKIH0KIAotLSAo
dm9pZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25TZXNzaW9uRGlkRW5kOihpZClzZXNzaW9uIHdp
dGhPcGVyYXRpb246KE5TVUludGVnZXIpb3BlcmF0aW9uCistICh2b2lkKV9zaW11bGF0ZURhdGFJ
bnRlcmFjdGlvblNlc3Npb25EaWRFbmQ6KGlkKXNlc3Npb24KIHsKKyNpZiBFTkFCTEUoREFUQV9J
TlRFUkFDVElPTikKKyAgICBbX2NvbnRlbnRWaWV3IF9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblNl
c3Npb25EaWRFbmQ6c2Vzc2lvbl07CisjZW5kaWYKIH0KIAotLSAodm9pZClfc2ltdWxhdGVGYWls
ZWREYXRhSW50ZXJhY3Rpb25XaXRoSW5kZXg6KE5TSW50ZWdlcilzb3VyY2VJbmRleAorLSAodm9p
ZClfc2ltdWxhdGVXaWxsQmVnaW5EYXRhSW50ZXJhY3Rpb25XaXRoU2Vzc2lvbjooaWQpc2Vzc2lv
bgogeworI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQorICAgIFtfY29udGVudFZpZXcgX3Np
bXVsYXRlV2lsbEJlZ2luRGF0YUludGVyYWN0aW9uV2l0aFNlc3Npb246c2Vzc2lvbl07CisjZW5k
aWYKIH0KIAotLSAodm9pZClfc2ltdWxhdGVXaWxsQmVnaW5EYXRhSW50ZXJhY3Rpb25XaXRoSW5k
ZXg6KE5TSW50ZWdlcilzb3VyY2VJbmRleCB3aXRoU2Vzc2lvbjooaWQpc2Vzc2lvbgorLSAoTlNB
cnJheSAqKV9zaW11bGF0ZWRJdGVtc0ZvclNlc3Npb246KGlkKXNlc3Npb24KIHsKKyNpZiBFTkFC
TEUoREFUQV9JTlRFUkFDVElPTikKKyAgICByZXR1cm4gW19jb250ZW50VmlldyBfc2ltdWxhdGVk
SXRlbXNGb3JTZXNzaW9uOnNlc3Npb25dOworI2Vsc2UKKyAgICByZXR1cm4gQFsgXTsKKyNlbmRp
ZgogfQogCi0tIChOU0FycmF5ICopX3NpbXVsYXRlZEl0ZW1zRm9yRGF0YUludGVyYWN0aW9uV2l0
aEluZGV4OihOU0ludGVnZXIpc291cmNlSW5kZXgKKy0gKHZvaWQpX3NpbXVsYXRlUHJlcGFyZUZv
ckRhdGFJbnRlcmFjdGlvblNlc3Npb246KGlkKXNlc3Npb24gY29tcGxldGlvbjooZGlzcGF0Y2hf
YmxvY2tfdCljb21wbGV0aW9uCiB7Ci0gICAgcmV0dXJuIEBbIF07CisjaWYgRU5BQkxFKERBVEFf
SU5URVJBQ1RJT04pCisgICAgW19jb250ZW50VmlldyBfc2ltdWxhdGVQcmVwYXJlRm9yRGF0YUlu
dGVyYWN0aW9uU2Vzc2lvbjpzZXNzaW9uIGNvbXBsZXRpb246Y29tcGxldGlvbl07CisjZW5kaWYK
IH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCBiMGE5OWQ2ZjIyMThiMDY1NGY5ODFkODg2M2I0OGQ2
MTQwOTFkNzU5Li4xMGRiYTZhZmNlNDc0OWZkMWE1NmZkYzlmNjk2YTIwY2IzMTliNzYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaApAQCAtMzA2LDE1ICszMDYsMTQgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwg
X1dLSW1tZWRpYXRlQWN0aW9uVHlwZSkgewogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIE5TTnVtYmVyICpfc3RhYmxlU3RhdGVPdmVycmlkZSBXS19BUElfQVZBSUxBQkxFKGlvcyhX
S19JT1NfVEJBKSk7CiAKLS0gKHZvaWQpX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uR2VzdHVyZVJl
Y29nbml6ZWQgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfc2lt
dWxhdGVEYXRhSW50ZXJhY3Rpb25FbnRlcmVkOihpZClpbmZvIFdLX0FQSV9BVkFJTEFCTEUoaW9z
KFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uVXBkYXRlZDoo
aWQpaW5mbyBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV9zaW11
bGF0ZURhdGFJbnRlcmFjdGlvblBlcmZvcm1PcGVyYXRpb246KGlkKWluZm8gV0tfQVBJX0FWQUlM
QUJMRShpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25F
bmRlZDooaWQpaW5mbyBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2b2lk
KV9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblNlc3Npb25EaWRFbmQ6KGlkKXNlc3Npb24gd2l0aE9w
ZXJhdGlvbjooTlNVSW50ZWdlcilvcGVyYXRpb24gV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9T
X1RCQSkpOwotLSAodm9pZClfc2ltdWxhdGVGYWlsZWREYXRhSW50ZXJhY3Rpb25XaXRoSW5kZXg6
KE5TSW50ZWdlcilzb3VyY2VJbmRleCBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7
Ci0tICh2b2lkKV9zaW11bGF0ZVdpbGxCZWdpbkRhdGFJbnRlcmFjdGlvbldpdGhJbmRleDooTlNJ
bnRlZ2VyKXNvdXJjZUluZGV4IHdpdGhTZXNzaW9uOihpZClzZXNzaW9uIFdLX0FQSV9BVkFJTEFC
TEUoaW9zKFdLX0lPU19UQkEpKTsKLS0gKE5TQXJyYXkgKilfc2ltdWxhdGVkSXRlbXNGb3JEYXRh
SW50ZXJhY3Rpb25XaXRoSW5kZXg6KE5TSW50ZWdlcilzb3VyY2VJbmRleCBXS19BUElfQVZBSUxB
QkxFKGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9zaW11bGF0ZURhdGFJbnRlcmFjdGlvblNl
c3Npb25EaWRFbmQ6KGlkKXNlc3Npb24gV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkp
OworLSAodm9pZClfc2ltdWxhdGVXaWxsQmVnaW5EYXRhSW50ZXJhY3Rpb25XaXRoU2Vzc2lvbjoo
aWQpc2Vzc2lvbiBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CistIChOU0FycmF5
ICopX3NpbXVsYXRlZEl0ZW1zRm9yU2Vzc2lvbjooaWQpc2Vzc2lvbiBXS19BUElfQVZBSUxBQkxF
KGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9zaW11bGF0ZVByZXBhcmVGb3JEYXRhSW50ZXJh
Y3Rpb25TZXNzaW9uOihpZClzZXNzaW9uIGNvbXBsZXRpb246KGRpc3BhdGNoX2Jsb2NrX3QpY29t
cGxldGlvbiBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CiAKICNlbmRpZiAvLyBU
QVJHRVRfT1NfSVBIT05FCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IGI2YmZjNmQ0ZTkxNDBiYmE1NTIx
M2Y1NTI3NzJmMjM0ODVlZmUxZGYuLjg4Y2JiYjc1NGY3YTQxZDEzMzQxNmE4NmU0ODJlZDc4NTVm
MmJjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMTE4LDkgKzExOCw2IEBAIHN0cnVjdCBXS0F1dG9D
b3JyZWN0aW9uRGF0YSB7CiAgICAgUmV0YWluUHRyPFVJVGFwR2VzdHVyZVJlY29nbml6ZXI+IF90
d29GaW5nZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8VUlUYXBH
ZXN0dXJlUmVjb2duaXplcj4gX3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyOwog
ICAgIFJldGFpblB0cjxXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplcj4gX2lu
c3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplcjsKLSNpZiBFTkFCTEUoREFUQV9JTlRF
UkFDVElPTikKLSAgICBSZXRhaW5QdHI8VUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcj4gX2Rh
dGFJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyOwotI2VuZGlmCiAKICAgICBSZXRhaW5QdHI8
VUlXS1RleHRJbnRlcmFjdGlvbkFzc2lzdGFudD4gX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQ7CiAg
ICAgUmV0YWluUHRyPFVJV0tTZWxlY3Rpb25Bc3Npc3RhbnQ+IF93ZWJTZWxlY3Rpb25Bc3Npc3Rh
bnQ7CkBAIC0xOTAsNiArMTg3LDggQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKIAog
I2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQogICAgIFdlYktpdDo6V0tEYXRhSW50ZXJhY3Rp
b25TdGF0ZSBfZGF0YUludGVyYWN0aW9uU3RhdGU7CisgICAgUmV0YWluUHRyPFdLRGF0YUludGVy
YWN0aW9uPiBfZGF0YUludGVyYWN0aW9uOworICAgIENHUG9pbnQgX2RlZmVycmVkQWN0aW9uU2hl
ZXRSZXF1ZXN0TG9jYXRpb247CiAjZW5kaWYKIH0KIApAQCAtMTk3LDcgKzE5Niw3IEBAIHN0cnVj
dCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAKIEBpbnRlcmZhY2UgV0tDb250ZW50VmlldyAoV0tJ
bnRlcmFjdGlvbikgPFVJR2VzdHVyZVJlY29nbml6ZXJEZWxlZ2F0ZSwgVUlXZWJUb3VjaEV2ZW50
c0dlc3R1cmVSZWNvZ25pemVyRGVsZWdhdGUsIFVJVGV4dElucHV0UHJpdmF0ZSwgVUlXZWJGb3Jt
QWNjZXNzb3J5RGVsZWdhdGUsIFVJV0tJbnRlcmFjdGlvblZpZXdQcm90b2NvbCwgV0tGaWxlVXBs
b2FkUGFuZWxEZWxlZ2F0ZSwgV0tBY3Rpb25TaGVldEFzc2lzdGFudERlbGVnYXRlCiAjaWYgRU5B
QkxFKERBVEFfSU5URVJBQ1RJT04pCi0gICAgLCBXS1ZpZXdEYXRhSW50ZXJhY3Rpb25Tb3VyY2VE
ZWxlZ2F0ZSwgV0tEYXRhSW50ZXJhY3Rpb25TZXNzaW9uRGVsZWdhdGUsIFdLVmlld0RhdGFJbnRl
cmFjdGlvbkRlc3RpbmF0aW9uRGVsZWdhdGUsIFdLRGF0YUludGVyYWN0aW9uSXRlbVZpc3VhbFRh
cmdldAorICAgICwgV0tEYXRhSW50ZXJhY3Rpb25EZWxlZ2F0ZSwgV0tWaWV3RGF0YUludGVyYWN0
aW9uRGVzdGluYXRpb25EZWxlZ2F0ZQogI2VuZGlmCiA+CiAKQEAgLTI3MSwxNSArMjcwLDE0IEBA
IHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAtICh2b2lkKV9kaWRQZXJmb3JtRGF0YUlu
dGVyYWN0aW9uQ29udHJvbGxlck9wZXJhdGlvbjsKIC0gKHZvaWQpX2RpZEhhbmRsZVN0YXJ0RGF0
YUludGVyYWN0aW9uUmVxdWVzdDooQk9PTClzdGFydGVkOwogLSAodm9pZClfc3RhcnREYXRhSW50
ZXJhY3Rpb25XaXRoSW1hZ2U6KFJldGFpblB0cjxDR0ltYWdlUmVmPilpbWFnZSB3aXRoSW5kaWNh
dG9yRGF0YTooc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4paW5kaWNh
dG9yRGF0YSBhdENsaWVudFBvc2l0aW9uOihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGFuY2hvclBv
aW50OihDR1BvaW50KWFuY2hvclBvaW50IGFjdGlvbjoodWludDY0X3QpYWN0aW9uOwotLSAodm9p
ZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplZDooVUlMb25nUHJlc3NH
ZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyIFdLX0FQSV9BVkFJTEFCTEUoaW9z
KFdLX0lPU19UQkEpKTsKLS0gKHZvaWQpX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uRW50ZXJlZDoo
aWQpaW5mbyBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2b2lkKV9zaW11
bGF0ZURhdGFJbnRlcmFjdGlvblVwZGF0ZWQ6KGlkKWluZm8gV0tfQVBJX0FWQUlMQUJMRShpb3Mo
V0tfSU9TX1RCQSkpOwotLSAodm9pZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25QZXJmb3JtT3Bl
cmF0aW9uOihpZClpbmZvIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKLS0gKHZv
aWQpX3NpbXVsYXRlRGF0YUludGVyYWN0aW9uRW5kZWQ6KGlkKWluZm8gV0tfQVBJX0FWQUlMQUJM
RShpb3MoV0tfSU9TX1RCQSkpOwotLSAodm9pZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25TZXNz
aW9uRGlkRW5kOihpZClzZXNzaW9uIHdpdGhPcGVyYXRpb246KE5TVUludGVnZXIpb3BlcmF0aW9u
IFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKLS0gKHZvaWQpX3NpbXVsYXRlRmFp
bGVkRGF0YUludGVyYWN0aW9uV2l0aEluZGV4OihOU0ludGVnZXIpc291cmNlSW5kZXggV0tfQVBJ
X0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwotLSAodm9pZClfc2ltdWxhdGVXaWxsQmVnaW5E
YXRhSW50ZXJhY3Rpb25XaXRoSW5kZXg6KE5TSW50ZWdlcilzb3VyY2VJbmRleCB3aXRoU2Vzc2lv
bjooaWQpc2Vzc2lvbiBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7Ci0tIChOU0Fy
cmF5ICopX3NpbXVsYXRlZEl0ZW1zRm9yRGF0YUludGVyYWN0aW9uV2l0aEluZGV4OihOU0ludGVn
ZXIpc291cmNlSW5kZXggV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOworLSAodm9p
ZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25FbnRlcmVkOihpZClpbmZvOworLSAodm9pZClfc2lt
dWxhdGVEYXRhSW50ZXJhY3Rpb25VcGRhdGVkOihpZClpbmZvOworLSAodm9pZClfc2ltdWxhdGVE
YXRhSW50ZXJhY3Rpb25QZXJmb3JtT3BlcmF0aW9uOihpZClpbmZvOworLSAodm9pZClfc2ltdWxh
dGVEYXRhSW50ZXJhY3Rpb25FbmRlZDooaWQpaW5mbzsKKy0gKHZvaWQpX3NpbXVsYXRlRGF0YUlu
dGVyYWN0aW9uU2Vzc2lvbkRpZEVuZDooaWQpc2Vzc2lvbjsKKy0gKHZvaWQpX3NpbXVsYXRlV2ls
bEJlZ2luRGF0YUludGVyYWN0aW9uV2l0aFNlc3Npb246KGlkKXNlc3Npb247CistIChOU0FycmF5
ICopX3NpbXVsYXRlZEl0ZW1zRm9yU2Vzc2lvbjooaWQpc2Vzc2lvbjsKKy0gKHZvaWQpX3NpbXVs
YXRlUHJlcGFyZUZvckRhdGFJbnRlcmFjdGlvblNlc3Npb246KGlkKXNlc3Npb24gY29tcGxldGlv
bjooZGlzcGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uOwogI2VuZGlmCiAKIEBlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KaW5kZXggZjk1N2M2YzViMmM1N2IwMGYxMDZjYjgyMGU1OTY1ZjA4MTYwYTg2YS4uZTFh
M2MxZjJmODYwYjIwOTgzMTBlZjIxM2IwZjE1OTI3YTRhNzg4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
QEAgLTU1OCwxMSArNTU4LDYgQEAgc3RhdGljIFVJV2ViU2VsZWN0aW9uTW9kZSB0b1VJV2ViU2Vs
ZWN0aW9uTW9kZShXS1NlbGVjdGlvbkdyYW51bGFyaXR5IGdyYW51bGFyaXQKICAgICBbc2VsZiBf
Y3JlYXRlQW5kQ29uZmlndXJlTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXJdOwogCiAjaWYgRU5B
QkxFKERBVEFfSU5URVJBQ1RJT04pCi0gICAgX2RhdGFJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25p
emVyID0gYWRvcHROUyhbW1VJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRX
aXRoVGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3RvcihfZGF0YUludGVyYWN0aW9uR2VzdHVyZVJl
Y29nbml6ZWQ6KV0pOwotICAgIFtfZGF0YUludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIgc2V0
RGVsYXk6MC41XTsKLSAgICBbX2RhdGFJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyIHNldERl
bGVnYXRlOnNlbGZdOwotICAgIFtfZGF0YUludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIgX3Nl
dFJlcXVpcmVzUXVpZXRJbXB1bHNlOllFU107Ci0gICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6
ZXI6X2RhdGFJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICAgICBbc2VsZiBz
ZXR1cERhdGFJbnRlcmFjdGlvbkRlbGVnYXRlc107CiAjZW5kaWYKIApAQCAtNjQyLDggKzYzNyw2
IEBAIHN0YXRpYyBVSVdlYlNlbGVjdGlvbk1vZGUgdG9VSVdlYlNlbGVjdGlvbk1vZGUoV0tTZWxl
Y3Rpb25HcmFudWxhcml0eSBncmFudWxhcml0CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29n
bml6ZXI6X3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIAogI2lm
IEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQotICAgIFtfZGF0YUludGVyYWN0aW9uR2VzdHVyZVJl
Y29nbml6ZXIgc2V0RGVsZWdhdGU6bmlsXTsKLSAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2du
aXplcjpfZGF0YUludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogICAgIFtzZWxm
IHRlYXJkb3duRGF0YUludGVyYWN0aW9uRGVsZWdhdGVzXTsKICNlbmRpZgogCkBAIC02NzQsOSAr
NjY3LDYgQEAgc3RhdGljIFVJV2ViU2VsZWN0aW9uTW9kZSB0b1VJV2ViU2VsZWN0aW9uTW9kZShX
S1NlbGVjdGlvbkdyYW51bGFyaXR5IGdyYW51bGFyaXQKICAgICBbc2VsZiByZW1vdmVHZXN0dXJl
UmVjb2duaXplcjpfbm9uQmxvY2tpbmdEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07
CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlckRvdWJsZVRhcEdl
c3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXpl
cjpfdHdvRmluZ2VyU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwotI2lmIEVOQUJM
RShEQVRBX0lOVEVSQUNUSU9OKQotICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl9k
YXRhSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5nZXQoKV07Ci0jZW5kaWYKIH0KIAogLSAo
dm9pZClfYWRkRGVmYXVsdEdlc3R1cmVSZWNvZ25pemVycwpAQCAtNjg4LDkgKzY3OCw2IEBAIHN0
YXRpYyBVSVdlYlNlbGVjdGlvbk1vZGUgdG9VSVdlYlNlbGVjdGlvbk1vZGUoV0tTZWxlY3Rpb25H
cmFudWxhcml0eSBncmFudWxhcml0CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X25v
bkJsb2NraW5nRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogICAgIFtzZWxmIGFk
ZEdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5n
ZXQoKV07CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlclNpbmdsZVRh
cEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKLSNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikK
LSAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfZGF0YUludGVyYWN0aW9uR2VzdHVyZVJl
Y29nbml6ZXIuZ2V0KCldOwotI2VuZGlmCiB9CiAKIC0gKFVJVmlldyopdW5zY2FsZWRWaWV3CkBA
IC0xMjI2LDE0ICsxMjEzLDYgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2FtZVBhaXIoVUlHZXN0
dXJlUmVjb2duaXplciAqYSwgVUlHZXN0dXJlUmVjb2duaXplciAqYiwgVUkKICAgICBpZiAoaXNT
YW1lUGFpcihnZXN0dXJlUmVjb2duaXplciwgb3RoZXJHZXN0dXJlUmVjb2duaXplciwgX2hpZ2hs
aWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLmdldCgpLCBfcHJldmlld0dlc3R1cmVSZWNv
Z25pemVyLmdldCgpKSkKICAgICAgICAgcmV0dXJuIFlFUzsKIAotI2lmIEVOQUJMRShEQVRBX0lO
VEVSQUNUSU9OKQotICAgIGlmIChpc1NhbWVQYWlyKGdlc3R1cmVSZWNvZ25pemVyLCBvdGhlckdl
c3R1cmVSZWNvZ25pemVyLCBfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuZ2V0
KCksIF9kYXRhSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5nZXQoKSkpCi0gICAgICAgIHJl
dHVybiBZRVM7Ci0KLSAgICBpZiAoaXNTYW1lUGFpcihnZXN0dXJlUmVjb2duaXplciwgb3RoZXJH
ZXN0dXJlUmVjb2duaXplciwgX2xvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLmdldCgpLCBfZGF0
YUludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCkpKQotICAgICAgICByZXR1cm4gWUVT
OwotI2VuZGlmCi0KICAgICByZXR1cm4gTk87CiB9CiAKQEAgLTE0MDQsMTEgKzEzODMsNiBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVSZWNvZ25pemVyICphLCBVSUdl
c3R1cmVSZWNvZ25pemVyICpiLCBVSQogICAgICAgICB9CiAgICAgfQogCi0jaWYgRU5BQkxFKERB
VEFfSU5URVJBQ1RJT04pCi0gICAgaWYgKGdlc3R1cmVSZWNvZ25pemVyID09IF9kYXRhSW50ZXJh
Y3Rpb25HZXN0dXJlUmVjb2duaXplcikKLSAgICAgICAgcmV0dXJuIFtzZWxmIHBvaW50SXNJbkRh
dGFJbnRlcmFjdGlvbkNvbnRlbnQ6cG9pbnRdOwotI2VuZGlmCi0KICAgICByZXR1cm4gWUVTOwog
fQogCkBAIC0xNDY0LDExICsxNDM4LDYgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2FtZVBhaXIo
VUlHZXN0dXJlUmVjb2duaXplciAqYSwgVUlHZXN0dXJlUmVjb2duaXplciAqYiwgVUkKICAgICBy
ZXR1cm4gX3Bvc2l0aW9uSW5mb3JtYXRpb24uaGFzU2VsZWN0aW9uQXRQb3NpdGlvbjsKIH0KIAot
LSAoVUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciAqKV9kYXRhSW50ZXJhY3Rpb25HZXN0dXJl
UmVjb2duaXplcgotewotICAgIHJldHVybiBfZGF0YUludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6
ZXIuZ2V0KCk7Ci19Ci0KICNlbmRpZgogCiAtIChCT09MKXBvaW50SXNOZWFyTWFya2VkVGV4dDoo
Q0dQb2ludClwb2ludApAQCAtMTc1MCwxMCArMTcxOSw2IEBAIHN0YXRpYyB2b2lkIGNhbmNlbFBv
dGVudGlhbFRhcElmTmVjZXNzYXJ5KFdLQ29udGVudFZpZXcqIGNvbnRlbnRWaWV3KQogICAgIF9o
YXNWYWxpZFBvc2l0aW9uSW5mb3JtYXRpb24gPSBZRVM7CiAgICAgaWYgKF9hY3Rpb25TaGVldEFz
c2lzdGFudCkKICAgICAgICAgW19hY3Rpb25TaGVldEFzc2lzdGFudCB1cGRhdGVTaGVldFBvc2l0
aW9uXTsKLQotI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQotICAgIFtzZWxmIF91cGRhdGVE
YXRhSW50ZXJhY3Rpb25QcmV2aWV3U25hcHNob3RJZlBvc3NpYmxlXTsKLSNlbmRpZgogfQogCiAt
ICh2b2lkKV93aWxsU3RhcnRTY3JvbGxpbmdPclpvb21pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tTY3JvbGxWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcubW0KaW5kZXggMGI0N2ExZjg3M2YyYjM1ZDk2OTI2ZTEy
Y2Y1OGI2ODJmYzc2NGM1Zi4uOGI1MWM1ZmRmNjE5ZjE4OTkzZjU5NzA0N2Y2YjlkNTJkYjhjNmI0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1Njcm9sbFZpZXcubW0KQEAg
LTEyOSw2ICsxMjksMTAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICByZXR1cm4gc2Vs
ZjsKIH0KIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmIF9faGFzX2luY2x1ZGUoPFdl
YktpdEFkZGl0aW9ucy9XS1Njcm9sbFZpZXdBZGRpdGlvbnMubW0+KQorI2ltcG9ydCA8V2ViS2l0
QWRkaXRpb25zL1dLU2Nyb2xsVmlld0FkZGl0aW9ucy5tbT4KKyNlbmRpZgorCiAtICh2b2lkKXNl
dEludGVybmFsRGVsZWdhdGU6KFdLV2ViVmlldyA8VUlTY3JvbGxWaWV3RGVsZWdhdGU+ICopaW50
ZXJuYWxEZWxlZ2F0ZQogewogICAgIGlmIChpbnRlcm5hbERlbGVnYXRlID09IF9pbnRlcm5hbERl
bGVnYXRlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDMwOTE5YzBlM2JhYzZkNDYzNDRiMTkxMGM0YzIwZTdhN2QwZDg0Y2EuLjk4NjRkYTcxZTU5
MjI1N2QyZWQyZTdiZDYyNjUwNjFhZTE3Mzc3MjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxNy0wMi0yMCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBk
YXRhIGludGVyYWN0aW9uIHRvIHVzZSBuZXcgV0tEYXRhSW50ZXJhY3Rpb24gU1BJCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg2MDIKKyAgICAgICAg
V29yayB0b3dhcmRzIDxyZGFyOi8vcHJvYmxlbS8zMDMxMzY4MT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgRGF0YUludGVyYWN0aW9uU2lt
dWxhdG9yIHRvIHNpbXVsYXRlIGRhdGEgaW50ZXJhY3Rpb24gdXNpbmcgdXBkYXRlZCBTUEkuIFNl
ZSBjaGFuZ2VzIGluIFdlYktpdDIgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVy
YWN0aW9uU2ltdWxhdG9yLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVy
YWN0aW9uU2ltdWxhdG9yLm1tOgorICAgICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Ig
X3Jlc2V0U2ltdWxhdGVkU3RhdGVdKToKKyAgICAgICAgKC1bRGF0YUludGVyYWN0aW9uU2ltdWxh
dG9yIHJ1bkZyb206dG86XSk6CisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBf
YWR2YW5jZVByb2dyZXNzXSk6CisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBf
Y3VycmVudExvY2F0aW9uXSk6CisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBf
ZmluaXNoRGF0YUludGVyYWN0aW9uXSk6IERlbGV0ZWQuCisgICAgICAgICgtW0RhdGFJbnRlcmFj
dGlvblNpbXVsYXRvciB3ZWJWaWV3RGlkU2VuZERhdGFJbnRlcmFjdGlvblN0YXJ0UmVxdWVzdDpd
KTogRGVsZXRlZC4KKyAgICAgICAgKC1bRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHdlYlZpZXc6
ZGlkUmVjZWl2ZURhdGFJbnRlcmFjdGlvblN0YXJ0UmVzcG9uc2U6XSk6IERlbGV0ZWQuCisKKzIw
MTctMDItMjAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVtb3ZlIHRoZSBkYXRhIGludGVyYWN0aW9uIGdlc3R1cmUgcmVjb2duaXplcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NjAwCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zMDMxMzY4MT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMg
Q2FybHNzb24uCisKKyAgICAgICAgQWRqdXN0IFRlc3RXZWJLaXRBUEkgZm9yIGNoYW5nZXMgaW4g
V2ViS2l0Mi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNp
bXVsYXRvci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNp
bXVsYXRvci5tbToKKyAgICAgICAgKC1bRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGluaXRXaXRo
V2ViVmlldzpdKToKKyAgICAgICAgKC1bRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHJ1bkZyb206
dG86XSk6CisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBfYWR2YW5jZVByb2dy
ZXNzXSk6CisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBfZmluaXNoRGF0YUlu
dGVyYWN0aW9uXSk6CisgICAgICAgICgtW01vY2tMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBp
bml0V2l0aFdpbmRvdzpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bTW9ja0xvbmdQcmVzc0dlc3R1
cmVSZWNvZ25pemVyIGxvY2F0aW9uSW5WaWV3Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtNb2Nr
TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgc3RhdGVdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
TW9ja0xvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIG51bWJlck9mVG91Y2hlc10pOiBEZWxldGVk
LgorICAgICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgX3JlY29nbml6ZUdlc3R1cmVB
dExvY2F0aW9uOndpdGhTdGF0ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bRGF0YUludGVyYWN0
aW9uU2ltdWxhdG9yIGRhdGFJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyXSk6IERlbGV0ZWQu
CisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciB3ZWJWaWV3OmJlZ2luRGF0YUlu
dGVyYWN0aW9uV2l0aFNvdXJjZUluZGV4Omdlc3R1cmVSZWNvZ25pemVyOl0pOiBEZWxldGVkLgor
CiAyMDE3LTAyLTIwICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMTI2ODUuCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCmluZGV4IGFlZDRj
OGEyOGQ0YjUzYjY0NGE4Y2ZjMzAyNWQzNTFiM2FjNDBmNmIuLjVjYzdhMWUzNTEwMmUzYzA3YTY4
ODZmNGJjOTg0NWJlZDc2NzNiNmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCkBAIC03NSw3ICs3NSw2IEBAIFRFU1Qo
RGF0YUludGVyYWN0aW9uVGVzdHMsIEltYWdlVG9UZXh0YXJlYSkKIAogICAgIE5TVVJMICppbWFn
ZVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W3dlYlZpZXcgZWRpdG9yVmFsdWVdXTsKICAg
ICBFWFBFQ1RfV0tfU1RSRVEoImljb24ucG5nIiwgaW1hZ2VVUkwubGFzdFBhdGhDb21wb25lbnQp
OwotICAgIEVYUEVDVF9UUlVFKFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgZGlkVHJ5VG9CZWdp
bkRhdGFJbnRlcmFjdGlvbl0pOwogCiAgICAgTlNBcnJheSAqb2JzZXJ2ZWRFdmVudE5hbWVzID0g
W2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBvYnNlcnZlZEV2ZW50TmFtZXNdOwogICAgIEVYUEVD
VF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9u
RW50ZXJFdmVudE5hbWVdKTsKQEAgLTkzLDcgKzkyLDYgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25U
ZXN0cywgQ29udGVudEVkaXRhYmxlVG9Db250ZW50RWRpdGFibGUpCiAKICAgICBFWFBFQ1RfRVEo
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInNvdXJjZS50ZXh0Q29udGVu
dCJdLmxlbmd0aCwgMFVMKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoIkhlbGxvIHdvcmxkIiwgW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImVkaXRvci50ZXh0Q29udGVudCJd
LlVURjhTdHJpbmcpOwotICAgIEVYUEVDVF9UUlVFKFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Ig
ZGlkVHJ5VG9CZWdpbkRhdGFJbnRlcmFjdGlvbl0pOwogCiAgICAgTlNBcnJheSAqb2JzZXJ2ZWRF
dmVudE5hbWVzID0gW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBvYnNlcnZlZEV2ZW50TmFtZXNd
OwogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0
YUludGVyYWN0aW9uRW50ZXJFdmVudE5hbWVdKTsKQEAgLTExMSw3ICsxMDksNiBAQCBURVNUKERh
dGFJbnRlcmFjdGlvblRlc3RzLCBDb250ZW50RWRpdGFibGVUb1RleHRhcmVhKQogCiAgICAgRVhQ
RUNUX0VRKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzb3VyY2UudGV4
dENvbnRlbnQiXS5sZW5ndGgsIDBVTCk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKCJIZWxsbyB3b3Js
ZCIsIFt3ZWJWaWV3IGVkaXRvclZhbHVlXS5VVEY4U3RyaW5nKTsKLSAgICBFWFBFQ1RfVFJVRShb
ZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGRpZFRyeVRvQmVnaW5EYXRhSW50ZXJhY3Rpb25dKTsK
IAogICAgIE5TQXJyYXkgKm9ic2VydmVkRXZlbnROYW1lcyA9IFtkYXRhSW50ZXJhY3Rpb25TaW11
bGF0b3Igb2JzZXJ2ZWRFdmVudE5hbWVzXTsKICAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVu
dE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvbkVudGVyRXZlbnROYW1lXSk7CkBA
IC0xMjgsNyArMTI1LDYgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgTGlua1RvSW5wdXQp
CiAgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDEwMCwg
NTApIHRvOkNHUG9pbnRNYWtlKDEwMCwgMzAwKV07CiAKICAgICBFWFBFQ1RfV0tfU1RSRVEoImh0
dHBzOi8vd3d3LmRhcmluZ2ZpcmViYWxsLm5ldC8iLCBbd2ViVmlldyBlZGl0b3JWYWx1ZV0uVVRG
OFN0cmluZyk7Ci0gICAgRVhQRUNUX1RSVUUoW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBkaWRU
cnlUb0JlZ2luRGF0YUludGVyYWN0aW9uXSk7CiAKICAgICBOU0FycmF5ICpvYnNlcnZlZEV2ZW50
TmFtZXMgPSBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIG9ic2VydmVkRXZlbnROYW1lc107CiAg
ICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50
ZXJhY3Rpb25FbnRlckV2ZW50TmFtZV0pOwpAQCAtMTQ1LDcgKzE0MSw2IEBAIFRFU1QoRGF0YUlu
dGVyYWN0aW9uVGVzdHMsIEJhY2tncm91bmRJbWFnZUxpbmtUb0lucHV0KQogICAgIFtkYXRhSW50
ZXJhY3Rpb25TaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgxMDAsIDUwKSB0bzpDR1BvaW50
TWFrZSgxMDAsIDMwMCldOwogCiAgICAgRVhQRUNUX1dLX1NUUkVRKCJodHRwczovL3d3dy5kYXJp
bmdmaXJlYmFsbC5uZXQvIiwgW3dlYlZpZXcgZWRpdG9yVmFsdWVdLlVURjhTdHJpbmcpOwotICAg
IEVYUEVDVF9UUlVFKFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgZGlkVHJ5VG9CZWdpbkRhdGFJ
bnRlcmFjdGlvbl0pOwogCiAgICAgTlNBcnJheSAqb2JzZXJ2ZWRFdmVudE5hbWVzID0gW2RhdGFJ
bnRlcmFjdGlvblNpbXVsYXRvciBvYnNlcnZlZEV2ZW50TmFtZXNdOwogICAgIEVYUEVDVF9UUlVF
KFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9uRW50ZXJF
dmVudE5hbWVdKTsKQEAgLTE2Miw3ICsxNTcsNiBAQCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3Rz
LCBDYW5QcmV2ZW50U3RhcnQpCiAgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9t
OkNHUG9pbnRNYWtlKDEwMCwgNTApIHRvOkNHUG9pbnRNYWtlKDEwMCwgMzAwKV07CiAKICAgICBF
WFBFQ1RfRkFMU0UoW3dlYlZpZXcgZWRpdG9yQ29udGFpbnNJbWFnZUVsZW1lbnRdKTsKLSAgICBF
WFBFQ1RfRkFMU0UoW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBkaWRUcnlUb0JlZ2luRGF0YUlu
dGVyYWN0aW9uXSk7CiAKICAgICBOU0FycmF5ICpvYnNlcnZlZEV2ZW50TmFtZXMgPSBbZGF0YUlu
dGVyYWN0aW9uU2ltdWxhdG9yIG9ic2VydmVkRXZlbnROYW1lc107CiAgICAgRVhQRUNUX0ZBTFNF
KFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9uRW50ZXJF
dmVudE5hbWVdKTsKQEAgLTE3OCw3ICsxNzIsNiBAQCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3Rz
LCBDYW5QcmV2ZW50T3BlcmF0aW9uKQogICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgcnVu
RnJvbTpDR1BvaW50TWFrZSgxMDAsIDUwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOwogCiAg
ICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGVkaXRvckNvbnRhaW5zSW1hZ2VFbGVtZW50XSk7Ci0g
ICAgRVhQRUNUX1RSVUUoW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBkaWRUcnlUb0JlZ2luRGF0
YUludGVyYWN0aW9uXSk7CiAKICAgICBOU0FycmF5ICpvYnNlcnZlZEV2ZW50TmFtZXMgPSBbZGF0
YUludGVyYWN0aW9uU2ltdWxhdG9yIG9ic2VydmVkRXZlbnROYW1lc107CiAgICAgRVhQRUNUX1RS
VUUoW29ic2VydmVkRXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50ZXJhY3Rpb25FbnRl
ckV2ZW50TmFtZV0pOwpAQCAtMTk0LDcgKzE4Nyw2IEBAIFRFU1QoRGF0YUludGVyYWN0aW9uVGVz
dHMsIEVudGVyQW5kTGVhdmVFdmVudHMpCiAgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBy
dW5Gcm9tOkNHUG9pbnRNYWtlKDEwMCwgNTApIHRvOkNHUG9pbnRNYWtlKDEwMCwgNDUwKV07CiAK
ICAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIFt3ZWJWaWV3IGVkaXRvclZhbHVlXS5VVEY4U3RyaW5n
KTsKLSAgICBFWFBFQ1RfVFJVRShbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGRpZFRyeVRvQmVn
aW5EYXRhSW50ZXJhY3Rpb25dKTsKIAogICAgIE5TQXJyYXkgKm9ic2VydmVkRXZlbnROYW1lcyA9
IFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igb2JzZXJ2ZWRFdmVudE5hbWVzXTsKICAgICBFWFBF
Q1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlv
bkVudGVyRXZlbnROYW1lXSk7CkBAIC0yMDMsMjIgKzE5NSw2IEBAIFRFU1QoRGF0YUludGVyYWN0
aW9uVGVzdHMsIEVudGVyQW5kTGVhdmVFdmVudHMpCiAgICAgRVhQRUNUX0ZBTFNFKFtvYnNlcnZl
ZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9uUGVyZm9ybU9wZXJhdGlv
bkV2ZW50TmFtZV0pOwogfQogCi1URVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBIYW5kbGVzRGF0
YUludGVyYWN0aW9uRmFpbHVyZUdyYWNlZnVsbHkpCi17Ci0gICAgUmV0YWluUHRyPFRlc3RXS1dl
YlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOwotICAgIFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImxpbmstYW5kLWlucHV0Il07Ci0KLSAgICBSZXRhaW5Q
dHI8RGF0YUludGVyYWN0aW9uU2ltdWxhdG9yPiBkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgPSBh
ZG9wdE5TKFtbRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6
d2ViVmlldy5nZXQoKV0pOwotICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igc2V0Rm9yY2VS
ZXF1ZXN0VG9GYWlsOllFU107Ci0gICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9t
OkNHUG9pbnRNYWtlKDEwMCwgNTApIHRvOkNHUG9pbnRNYWtlKDEwMCwgMzAwKV07Ci0gICAgRVhQ
RUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBlZGl0b3JWYWx1ZV0uVVRGOFN0cmluZyk7Ci0KLSAg
ICAvLyBCZWZvcmUgcjIxMjI2Niwgc3RhcnRpbmcgYSBzdWJzZXF1ZW50IGdlc3R1cmUgd291bGQg
aGF2ZSBjYXVzZWQgYSBkZWJ1ZyBhc3NlcnRpb24gaW4gdGhlIHdlYiBwcm9jZXNzLgotICAgIFtk
YXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igc2V0Rm9yY2VSZXF1ZXN0VG9GYWlsOk5PXTsKLSAgICBb
ZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMTAwLCA1MCkgdG86
Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoImh0dHBzOi8vd3d3
LmRhcmluZ2ZpcmViYWxsLm5ldC8iLCBbd2ViVmlldyBlZGl0b3JWYWx1ZV0uVVRGOFN0cmluZyk7
Ci19Ci0KIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEV4dGVybmFsU291cmNlVVRGOFBsYWlu
VGV4dE9ubHkpCiB7CiAgICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAs
IDMyMCwgNTAwKV0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUlu
dGVyYWN0aW9uU2ltdWxhdG9yLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJh
Y3Rpb25TaW11bGF0b3IuaAppbmRleCA3NDk0ZTc2YjkwZTgxN2QxNDU3ZTMwNjhkODUxNGNlOGI3
NGZiMDQ1Li41MTBiZGZiNWY4YjgyMjJmMzZmZGE2YzIxZGQxNzFmZTg0ZGQ5MWI1IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaApA
QCAtMzEsOCArMzEsOCBAQAogI2ltcG9ydCA8V2ViS2l0L19XS1Rlc3RpbmdEZWxlZ2F0ZS5oPgog
I2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKLUBjbGFzcyBNb2NrTG9uZ1ByZXNzR2VzdHVyZVJl
Y29nbml6ZXI7CiBAY2xhc3MgTW9ja0RhdGFJbnRlcmFjdGlvbkluZm87CitAY2xhc3MgTW9ja0Rh
dGFJbnRlcmFjdGlvblNlc3Npb247CiAKIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IERhdGFJbnRl
cmFjdGlvbkVudGVyRXZlbnROYW1lOwogZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgRGF0YUludGVy
YWN0aW9uT3ZlckV2ZW50TmFtZTsKQEAgLTQxLDcgKzQxLDggQEAgZXh0ZXJuIE5TU3RyaW5nICog
Y29uc3QgRGF0YUludGVyYWN0aW9uTGVhdmVFdmVudE5hbWU7CiBleHRlcm4gTlNTdHJpbmcgKiBj
b25zdCBEYXRhSW50ZXJhY3Rpb25TdGFydEV2ZW50TmFtZTsKIAogdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgRGF0YUludGVyYWN0aW9uUGhhc2UpIHsKLSAgICBEYXRhSW50ZXJhY3Rpb25VbnJl
Y29nbml6ZWQgPSAxLAorICAgIERhdGFJbnRlcmFjdGlvbkNhbmNlbGxlZCA9IDAsCisgICAgRGF0
YUludGVyYWN0aW9uQmVnaW5uaW5nID0gMSwKICAgICBEYXRhSW50ZXJhY3Rpb25CZWdhbiA9IDIs
CiAgICAgRGF0YUludGVyYWN0aW9uRW50ZXJlZCA9IDMsCiAgICAgRGF0YUludGVyYWN0aW9uUGVy
Zm9ybWluZyA9IDQKQEAgLTQ5LDE0ICs1MCwxNCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2Vy
LCBEYXRhSW50ZXJhY3Rpb25QaGFzZSkgewogCiBAaW50ZXJmYWNlIERhdGFJbnRlcmFjdGlvblNp
bXVsYXRvciA6IE5TT2JqZWN0PF9XS1Rlc3RpbmdEZWxlZ2F0ZT4gewogICAgIFJldGFpblB0cjxU
ZXN0V0tXZWJWaWV3PiBfd2ViVmlldzsKLSAgICBSZXRhaW5QdHI8TW9ja0xvbmdQcmVzc0dlc3R1
cmVSZWNvZ25pemVyPiBfZ2VzdHVyZVJlY29nbml6ZXI7CisgICAgUmV0YWluUHRyPE1vY2tEYXRh
SW50ZXJhY3Rpb25TZXNzaW9uPiBfZGF0YUludGVyYWN0aW9uU2Vzc2lvbjsKICAgICBSZXRhaW5Q
dHI8TW9ja0RhdGFJbnRlcmFjdGlvbkluZm8+IF9kYXRhSW50ZXJhY3Rpb25JbmZvOwogICAgIFJl
dGFpblB0cjxOU011dGFibGVBcnJheT4gX29ic2VydmVkRXZlbnROYW1lczsKICAgICBSZXRhaW5Q
dHI8VUlJdGVtUHJvdmlkZXI+IF9leHRlcm5hbEl0ZW1Qcm92aWRlcjsKICAgICBDR1BvaW50IF9z
dGFydExvY2F0aW9uOwogICAgIENHUG9pbnQgX2VuZExvY2F0aW9uOwogCi0gICAgZG91YmxlIF9n
ZXN0dXJlUHJvZ3Jlc3M7CisgICAgZG91YmxlIF9jdXJyZW50UHJvZ3Jlc3M7CiAgICAgYm9vbCBf
aXNEb25lV2l0aEN1cnJlbnRSdW47CiAgICAgRGF0YUludGVyYWN0aW9uUGhhc2UgX3BoYXNlOwog
fQpAQCAtNjQsOSArNjUsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBEYXRhSW50ZXJh
Y3Rpb25QaGFzZSkgewogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmlldzooVGVzdFdLV2Vi
VmlldyAqKXdlYlZpZXc7CiAtICh2b2lkKXJ1bkZyb206KENHUG9pbnQpc3RhcnRMb2NhdGlvbiB0
bzooQ0dQb2ludCllbmRMb2NhdGlvbjsKIAotQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgZm9y
Y2VSZXF1ZXN0VG9GYWlsOwogQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZykgVUlJdGVtUHJv
dmlkZXIgKmV4dGVybmFsSXRlbVByb3ZpZGVyOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBCT09MIGRpZFRyeVRvQmVnaW5EYXRhSW50ZXJhY3Rpb247CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIE5TQXJyYXkgKm9ic2VydmVkRXZlbnROYW1lczsKIAogQGVuZApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9y
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLm1t
CmluZGV4IGU2YjU4MWQ1MDQ2NDljOWNhM2E5Y2UyZmY0MjI4YzA3ZDAyMGYzNGYuLjI4NTliNTYz
NzUzOWNjMjgwN2Q2MDkyNzVlMWY1ZTcyMDcwYjI2ZmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW0KQEAgLTM5LDQ2ICszOSw2
IEBAIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogI2luY2x1ZGUgPFdlYktpdEFkZGl0
aW9ucy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3JBZGRpdGlvbnMubW0+CiAjZW5kaWYKIAotQGlu
dGVyZmFjZSBNb2NrTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgOiBVSUxvbmdQcmVzc0dlc3R1
cmVSZWNvZ25pemVyIHsKLSAgICBSZXRhaW5QdHI8VUlXaW5kb3c+IF93aW5kb3c7Ci19Ci0KLUBw
cm9wZXJ0eSAobm9uYXRvbWljKSBDR1BvaW50IG1vY2tMb2NhdGlvbkluV2luZG93OwotQHByb3Bl
cnR5IChub25hdG9taWMpIFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBtb2NrU3RhdGU7Ci1AcHJv
cGVydHkgKG5vbmF0b21pYykgTlNJbnRlZ2VyIG1vY2tOdW1iZXJPZlRvdWNoZXM7Ci0KLUBlbmQK
LQotQGltcGxlbWVudGF0aW9uIE1vY2tMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcgotCi0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhXaW5kb3c6KFVJV2luZG93ICopd2luZG93Ci17Ci0gICAgaWYg
KHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKLSAgICAgICAgX3dpbmRvdyA9IHdpbmRvdzsKLSAgICAg
ICAgX21vY2tTdGF0ZSA9IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZVBvc3NpYmxlOwotICAgICAg
ICBfbW9ja051bWJlck9mVG91Y2hlcyA9IDA7Ci0gICAgICAgIF9tb2NrTG9jYXRpb25JbldpbmRv
dyA9IENHUG9pbnRaZXJvOwotICAgIH0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAoQ0dQb2lu
dClsb2NhdGlvbkluVmlldzooVUlWaWV3ICopdmlldwotewotICAgIHJldHVybiBbdmlldyBjb252
ZXJ0UG9pbnQ6X21vY2tMb2NhdGlvbkluV2luZG93IGZyb21WaWV3Ol93aW5kb3cuZ2V0KCldOwot
fQotCi0tIChVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUpc3RhdGUKLXsKLSAgICByZXR1cm4gX21v
Y2tTdGF0ZTsKLX0KLQotLSAoTlNVSW50ZWdlciludW1iZXJPZlRvdWNoZXMKLXsKLSAgICByZXR1
cm4gX21vY2tOdW1iZXJPZlRvdWNoZXM7Ci19Ci0KLUBlbmQKLQogc3RhdGljIGRvdWJsZSBwcm9n
cmVzc0luY3JlbWVudFN0ZXAgPSAwLjAzMzsKIHN0YXRpYyBkb3VibGUgcHJvZ3Jlc3NUaW1lU3Rl
cCA9IDAuMDE2OwogCkBAIC05OCw5ICs1OCw2IEBAIHN0YXRpYyBOU0FycmF5ICpkYXRhSW50ZXJh
Y3Rpb25FdmVudE5hbWVzKCkKIHsKICAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgewogICAg
ICAgICBfd2ViVmlldyA9IHdlYlZpZXc7Ci0gICAgICAgIF9nZXN0dXJlUmVjb2duaXplciA9IGFk
b3B0TlMoW1tNb2NrTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoV2lu
ZG93OndlYlZpZXcud2luZG93XSk7Ci0KLSAgICAgICAgW19nZXN0dXJlUmVjb2duaXplciBzZXRN
b2NrTnVtYmVyT2ZUb3VjaGVzOjBdOwogICAgICAgICBbX3dlYlZpZXcgX3NldFRlc3RpbmdEZWxl
Z2F0ZTpzZWxmXTsKICAgICB9CiAgICAgcmV0dXJuIHNlbGY7CkBAIC0xMTYsMTEgKzczLDEyIEBA
IHN0YXRpYyBOU0FycmF5ICpkYXRhSW50ZXJhY3Rpb25FdmVudE5hbWVzKCkKIAogLSAodm9pZClf
cmVzZXRTaW11bGF0ZWRTdGF0ZQogewotICAgIF9nZXN0dXJlUHJvZ3Jlc3MgPSAwOwotICAgIF9w
aGFzZSA9IERhdGFJbnRlcmFjdGlvblVucmVjb2duaXplZDsKKyAgICBfcGhhc2UgPSBEYXRhSW50
ZXJhY3Rpb25CZWdpbm5pbmc7CisgICAgX2N1cnJlbnRQcm9ncmVzcyA9IDA7CiAgICAgX2lzRG9u
ZVdpdGhDdXJyZW50UnVuID0gZmFsc2U7Ci0gICAgX2RpZFRyeVRvQmVnaW5EYXRhSW50ZXJhY3Rp
b24gPSBOTzsKICAgICBfb2JzZXJ2ZWRFdmVudE5hbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XSk7CisgICAgX2RhdGFJbnRlcmFjdGlvblNlc3Npb24gPSBuaWw7Cisg
ICAgX2RhdGFJbnRlcmFjdGlvbkluZm8gPSBuaWw7CiB9CiAKIC0gKE5TQXJyYXkgKilvYnNlcnZl
ZEV2ZW50TmFtZXMKQEAgLTE0Miw2OCArMTAwLDgyIEBAIHN0YXRpYyBOU0FycmF5ICpkYXRhSW50
ZXJhY3Rpb25FdmVudE5hbWVzKCkKIAogICAgIF9zdGFydExvY2F0aW9uID0gc3RhcnRMb2NhdGlv
bjsKICAgICBfZW5kTG9jYXRpb24gPSBlbmRMb2NhdGlvbjsKLSAgICBbX2dlc3R1cmVSZWNvZ25p
emVyIHNldE1vY2tOdW1iZXJPZlRvdWNoZXM6MV07CiAKICAgICBpZiAoc2VsZi5leHRlcm5hbEl0
ZW1Qcm92aWRlcikgeworICAgICAgICBfZGF0YUludGVyYWN0aW9uSW5mbyA9IGFkb3B0TlMoW1tN
b2NrRGF0YUludGVyYWN0aW9uSW5mbyBhbGxvY10gaW5pdFdpdGhQcm92aWRlcjpzZWxmLmV4dGVy
bmFsSXRlbVByb3ZpZGVyIGxvY2F0aW9uOl9zdGFydExvY2F0aW9uIHdpbmRvdzpbX3dlYlZpZXcg
d2luZG93XV0pOwogICAgICAgICBfcGhhc2UgPSBEYXRhSW50ZXJhY3Rpb25CZWdhbjsKLSAgICAg
ICAgX2RhdGFJbnRlcmFjdGlvbkluZm8gPSBhZG9wdE5TKFtbTW9ja0RhdGFJbnRlcmFjdGlvbklu
Zm8gYWxsb2NdIGluaXRXaXRoUHJvdmlkZXI6c2VsZi5leHRlcm5hbEl0ZW1Qcm92aWRlciBsb2Nh
dGlvbjpzdGFydExvY2F0aW9uIHdpbmRvdzpbX3dlYlZpZXcgd2luZG93XV0pOwotICAgIH0gZWxz
ZQotICAgICAgICBbc2VsZiBfcmVjb2duaXplR2VzdHVyZUF0TG9jYXRpb246X3N0YXJ0TG9jYXRp
b24gd2l0aFN0YXRlOlVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2FuXTsKLQotICAgIFtzZWxm
IF9zY2hlZHVsZUFkdmFuY2VQcm9ncmVzc107CisgICAgICAgIFtzZWxmIF9hZHZhbmNlUHJvZ3Jl
c3NdOworICAgIH0gZWxzZSB7CisgICAgICAgIF9kYXRhSW50ZXJhY3Rpb25TZXNzaW9uID0gYWRv
cHROUyhbW01vY2tEYXRhSW50ZXJhY3Rpb25TZXNzaW9uIGFsbG9jXSBpbml0V2l0aFdpbmRvdzpb
X3dlYlZpZXcgd2luZG93XV0pOworICAgICAgICBbX2RhdGFJbnRlcmFjdGlvblNlc3Npb24gc2V0
TW9ja0xvY2F0aW9uSW5XaW5kb3c6X3N0YXJ0TG9jYXRpb25dOworICAgICAgICBbX3dlYlZpZXcg
X3NpbXVsYXRlUHJlcGFyZUZvckRhdGFJbnRlcmFjdGlvblNlc3Npb246X2RhdGFJbnRlcmFjdGlv
blNlc3Npb24uZ2V0KCkgY29tcGxldGlvbjpeKCkgeworICAgICAgICAgICAgRGF0YUludGVyYWN0
aW9uU2ltdWxhdG9yICp3ZWFrU2VsZiA9IHN0cm9uZ1NlbGYuZ2V0KCk7CisgICAgICAgICAgICB3
ZWFrU2VsZi0+X3BoYXNlID0gRGF0YUludGVyYWN0aW9uQmVnaW5uaW5nOworICAgICAgICAgICAg
W3dlYWtTZWxmIF9hZHZhbmNlUHJvZ3Jlc3NdOworICAgICAgICB9XTsKKyAgICB9CiAKICAgICBV
dGlsOjpydW4oJl9pc0RvbmVXaXRoQ3VycmVudFJ1bik7Ci0gICAgW19nZXN0dXJlUmVjb2duaXpl
ciBzZXRNb2NrTnVtYmVyT2ZUb3VjaGVzOjBdOwogICAgIFtfd2ViVmlldyBjbGVhck1lc3NhZ2VI
YW5kbGVyczpkYXRhSW50ZXJhY3Rpb25FdmVudE5hbWVzKCldOwogfQogCiAtICh2b2lkKV9hZHZh
bmNlUHJvZ3Jlc3MKIHsKLSAgICBfZ2VzdHVyZVByb2dyZXNzID0gc3RkOjptaW4oMS4wLCBzdGQ6
Om1heCgwLjAsIHByb2dyZXNzSW5jcmVtZW50U3RlcCArIF9nZXN0dXJlUHJvZ3Jlc3MpKTsKLSAg
ICBbX2RhdGFJbnRlcmFjdGlvbkluZm8gc2V0TW9ja0xvY2F0aW9uSW5XaW5kb3c6c2VsZi5fY3Vy
cmVudExvY2F0aW9uXTsKLSAgICBpZiAoX2dlc3R1cmVQcm9ncmVzcyA+PSAxKSB7Ci0gICAgICAg
IFtzZWxmIF9maW5pc2hEYXRhSW50ZXJhY3Rpb25dOworICAgIF9jdXJyZW50UHJvZ3Jlc3MgKz0g
cHJvZ3Jlc3NJbmNyZW1lbnRTdGVwOworICAgIENHUG9pbnQgbG9jYXRpb25JbldpbmRvdyA9IHNl
bGYuX2N1cnJlbnRMb2NhdGlvbjsKKyAgICBbX2RhdGFJbnRlcmFjdGlvblNlc3Npb24gc2V0TW9j
a0xvY2F0aW9uSW5XaW5kb3c6bG9jYXRpb25JbldpbmRvd107CisgICAgW19kYXRhSW50ZXJhY3Rp
b25JbmZvIHNldE1vY2tMb2NhdGlvbkluV2luZG93OmxvY2F0aW9uSW5XaW5kb3ddOworCisgICAg
aWYgKF9jdXJyZW50UHJvZ3Jlc3MgPj0gMSkgeworICAgICAgICBbX3dlYlZpZXcgX3NpbXVsYXRl
RGF0YUludGVyYWN0aW9uUGVyZm9ybU9wZXJhdGlvbjpfZGF0YUludGVyYWN0aW9uSW5mby5nZXQo
KV07CisgICAgICAgIFtfd2ViVmlldyBfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25FbmRlZDpfZGF0
YUludGVyYWN0aW9uSW5mby5nZXQoKV07CisgICAgICAgIGlmIChfZGF0YUludGVyYWN0aW9uU2Vz
c2lvbikKKyAgICAgICAgICAgIFtfd2ViVmlldyBfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25TZXNz
aW9uRGlkRW5kOl9kYXRhSW50ZXJhY3Rpb25TZXNzaW9uLmdldCgpXTsKKworICAgICAgICBfcGhh
c2UgPSBEYXRhSW50ZXJhY3Rpb25QZXJmb3JtaW5nOworICAgICAgICBfY3VycmVudFByb2dyZXNz
ID0gMTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHN3aXRjaCAoX3BoYXNlKSB7Ci0g
ICAgY2FzZSBEYXRhSW50ZXJhY3Rpb25VbnJlY29nbml6ZWQ6Ci0gICAgICAgIFtzZWxmIF9yZWNv
Z25pemVHZXN0dXJlQXRMb2NhdGlvbjpzZWxmLl9jdXJyZW50TG9jYXRpb24gd2l0aFN0YXRlOlVJ
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNoYW5nZWRdOwotICAgICAgICBbc2VsZiBfc2NoZWR1bGVB
ZHZhbmNlUHJvZ3Jlc3NdOworICAgIGNhc2UgRGF0YUludGVyYWN0aW9uQmVnaW5uaW5nOiB7Cisg
ICAgICAgIE5TTXV0YWJsZUFycmF5PFVJSXRlbVByb3ZpZGVyICo+ICppdGVtUHJvdmlkZXJzID0g
W05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICAgICAgTlNBcnJheTxXS0RhdGFJbnRlcmFjdGlv
bkl0ZW0gKj4gKml0ZW1zID0gW193ZWJWaWV3IF9zaW11bGF0ZWRJdGVtc0ZvclNlc3Npb246X2Rh
dGFJbnRlcmFjdGlvblNlc3Npb24uZ2V0KCldOworICAgICAgICBpZiAoIWl0ZW1zLmNvdW50KSB7
CisgICAgICAgICAgICBfcGhhc2UgPSBEYXRhSW50ZXJhY3Rpb25DYW5jZWxsZWQ7CisgICAgICAg
ICAgICBfY3VycmVudFByb2dyZXNzID0gMTsKKyAgICAgICAgICAgIF9pc0RvbmVXaXRoQ3VycmVu
dFJ1biA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBm
b3IgKFdLRGF0YUludGVyYWN0aW9uSXRlbSAqaXRlbSBpbiBpdGVtcykKKyAgICAgICAgICAgIFtp
dGVtUHJvdmlkZXJzIGFkZE9iamVjdDppdGVtLml0ZW1Qcm92aWRlcl07CisKKyAgICAgICAgX2Rh
dGFJbnRlcmFjdGlvbkluZm8gPSBhZG9wdE5TKFtbTW9ja0RhdGFJbnRlcmFjdGlvbkluZm8gYWxs
b2NdIGluaXRXaXRoUHJvdmlkZXI6aXRlbVByb3ZpZGVycy5maXJzdE9iamVjdCBsb2NhdGlvbjpz
ZWxmLl9jdXJyZW50TG9jYXRpb24gd2luZG93Oltfd2ViVmlldyB3aW5kb3ddXSk7CisgICAgICAg
IFtfZGF0YUludGVyYWN0aW9uU2Vzc2lvbiBzZXRJdGVtczppdGVtc107CisgICAgICAgIFtfd2Vi
VmlldyBfc2ltdWxhdGVXaWxsQmVnaW5EYXRhSW50ZXJhY3Rpb25XaXRoU2Vzc2lvbjpfZGF0YUlu
dGVyYWN0aW9uU2Vzc2lvbi5nZXQoKV07CisgICAgICAgIF9waGFzZSA9IERhdGFJbnRlcmFjdGlv
bkJlZ2FuOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBEYXRhSW50ZXJhY3Rpb25C
ZWdhbjoKICAgICAgICAgW193ZWJWaWV3IF9zaW11bGF0ZURhdGFJbnRlcmFjdGlvbkVudGVyZWQ6
X2RhdGFJbnRlcmFjdGlvbkluZm8uZ2V0KCldOwogICAgICAgICBfcGhhc2UgPSBEYXRhSW50ZXJh
Y3Rpb25FbnRlcmVkOwotICAgICAgICBbc2VsZiBfc2NoZWR1bGVBZHZhbmNlUHJvZ3Jlc3NdOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIERhdGFJbnRlcmFjdGlvbkVudGVyZWQ6CiAgICAgICAg
IFtfd2ViVmlldyBfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25VcGRhdGVkOl9kYXRhSW50ZXJhY3Rp
b25JbmZvLmdldCgpXTsKLSAgICAgICAgW3NlbGYgX3NjaGVkdWxlQWR2YW5jZVByb2dyZXNzXTsK
ICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQotfQot
Ci0tICh2b2lkKV9maW5pc2hEYXRhSW50ZXJhY3Rpb24KLXsKLSAgICBpZiAoX3BoYXNlID09IERh
dGFJbnRlcmFjdGlvblVucmVjb2duaXplZCkgewotICAgICAgICBbc2VsZiBfcmVjb2duaXplR2Vz
dHVyZUF0TG9jYXRpb246c2VsZi5fY3VycmVudExvY2F0aW9uIHdpdGhTdGF0ZTpVSUdlc3R1cmVS
ZWNvZ25pemVyU3RhdGVFbmRlZF07Ci0gICAgICAgIF9pc0RvbmVXaXRoQ3VycmVudFJ1biA9IHRy
dWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAgICBfcGhhc2UgPSBEYXRhSW50ZXJhY3Rp
b25QZXJmb3JtaW5nOwotICAgIFtfd2ViVmlldyBfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25QZXJm
b3JtT3BlcmF0aW9uOl9kYXRhSW50ZXJhY3Rpb25JbmZvLmdldCgpXTsKLSAgICBbX3dlYlZpZXcg
X3NpbXVsYXRlRGF0YUludGVyYWN0aW9uRW5kZWQ6X2RhdGFJbnRlcmFjdGlvbkluZm8uZ2V0KCld
OwotICAgIFtfd2ViVmlldyBfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25TZXNzaW9uRGlkRW5kOm5p
bCB3aXRoT3BlcmF0aW9uOjBdOworICAgIFtzZWxmIF9zY2hlZHVsZUFkdmFuY2VQcm9ncmVzc107
CiB9CiAKIC0gKENHUG9pbnQpX2N1cnJlbnRMb2NhdGlvbgogewogICAgIENHRmxvYXQgZGlzdGFu
Y2VYID0gX2VuZExvY2F0aW9uLnggLSBfc3RhcnRMb2NhdGlvbi54OwogICAgIENHRmxvYXQgZGlz
dGFuY2VZID0gX2VuZExvY2F0aW9uLnkgLSBfc3RhcnRMb2NhdGlvbi55OwotICAgIHJldHVybiBD
R1BvaW50TWFrZShfc3RhcnRMb2NhdGlvbi54ICsgX2dlc3R1cmVQcm9ncmVzcyAqIGRpc3RhbmNl
WCwgX3N0YXJ0TG9jYXRpb24ueSArIF9nZXN0dXJlUHJvZ3Jlc3MgKiBkaXN0YW5jZVkpOworICAg
IHJldHVybiBDR1BvaW50TWFrZShfc3RhcnRMb2NhdGlvbi54ICsgX2N1cnJlbnRQcm9ncmVzcyAq
IGRpc3RhbmNlWCwgX3N0YXJ0TG9jYXRpb24ueSArIF9jdXJyZW50UHJvZ3Jlc3MgKiBkaXN0YW5j
ZVkpOwogfQogCiAtICh2b2lkKV9zY2hlZHVsZUFkdmFuY2VQcm9ncmVzcwpAQCAtMjEyLDEzICsx
ODQsNiBAQCBzdGF0aWMgTlNBcnJheSAqZGF0YUludGVyYWN0aW9uRXZlbnROYW1lcygpCiAgICAg
W3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihfYWR2YW5jZVByb2dyZXNzKSB3aXRoT2Jq
ZWN0Om5pbCBhZnRlckRlbGF5OnByb2dyZXNzVGltZVN0ZXBdOwogfQogCi0tICh2b2lkKV9yZWNv
Z25pemVHZXN0dXJlQXRMb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbkluV2luZG93IHdpdGhTdGF0
ZTooVUlHZXN0dXJlUmVjb2duaXplclN0YXRlKXN0YXRlCi17Ci0gICAgW19nZXN0dXJlUmVjb2du
aXplciBzZXRNb2NrU3RhdGU6c3RhdGVdOwotICAgIFtfZ2VzdHVyZVJlY29nbml6ZXIgc2V0TW9j
a0xvY2F0aW9uSW5XaW5kb3c6bG9jYXRpb25JbldpbmRvd107Ci0gICAgW193ZWJWaWV3IF9zaW11
bGF0ZURhdGFJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVkXTsKLX0KLQogLSAoVUlJdGVtUHJv
dmlkZXIgKilleHRlcm5hbEl0ZW1Qcm92aWRlcgogewogICAgIHJldHVybiBfZXh0ZXJuYWxJdGVt
UHJvdmlkZXIuZ2V0KCk7CkBAIC0yMzEsNTEgKzE5NiwxMSBAQCBzdGF0aWMgTlNBcnJheSAqZGF0
YUludGVyYWN0aW9uRXZlbnROYW1lcygpCiAKICNwcmFnbWEgbWFyayAtIF9XS1Rlc3RpbmdEZWxl
Z2F0ZQogCi0tIChVSUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyICopZGF0YUludGVyYWN0aW9u
R2VzdHVyZVJlY29nbml6ZXIKLXsKLSAgICByZXR1cm4gX2dlc3R1cmVSZWNvZ25pemVyLmdldCgp
OwotfQotCiAtICh2b2lkKXdlYlZpZXdEaWRQZXJmb3JtRGF0YUludGVyYWN0aW9uQ29udHJvbGxl
ck9wZXJhdGlvbjooV0tXZWJWaWV3ICopd2ViVmlldwogewogICAgIF9pc0RvbmVXaXRoQ3VycmVu
dFJ1biA9IHRydWU7CiB9CiAKLS0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBi
ZWdpbkRhdGFJbnRlcmFjdGlvbldpdGhTb3VyY2VJbmRleDooTlNJbnRlZ2VyKXNvdXJjZUluZGV4
IGdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6
ZXIKLXsKLSAgICBfZGlkVHJ5VG9CZWdpbkRhdGFJbnRlcmFjdGlvbiA9IFlFUzsKLQotICAgIGlm
IChzZWxmLmZvcmNlUmVxdWVzdFRvRmFpbCkgewotICAgICAgICBbX3dlYlZpZXcgX3NpbXVsYXRl
RmFpbGVkRGF0YUludGVyYWN0aW9uV2l0aEluZGV4OnNvdXJjZUluZGV4XTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIF9waGFzZSA9IERhdGFJbnRlcmFjdGlvbkJlZ2FuOwotCi0gICAg
Ly8gRW5kIHRoZSBkYXRhIGludGVyYWN0aW9uIGdlc3R1cmUgcmVjb2duaXplci4KLSAgICBhdXRv
IGxvY2F0aW9uID0gc2VsZi5fY3VycmVudExvY2F0aW9uOwotICAgIFtzZWxmIF9yZWNvZ25pemVH
ZXN0dXJlQXRMb2NhdGlvbjpsb2NhdGlvbiB3aXRoU3RhdGU6VUlHZXN0dXJlUmVjb2duaXplclN0
YXRlRW5kZWRdOwotCi0gICAgLy8gT2ZmaWNpYWxseSBiZWdpbiBkYXRhIGludGVyYWN0aW9uIGJ5
IGluaXRpYWxpemluZyB0aGUgaW5mby4KLSAgICBOU0FycmF5ICppdGVtcyA9IFtfd2ViVmlldyBf
c2ltdWxhdGVkSXRlbXNGb3JEYXRhSW50ZXJhY3Rpb25XaXRoSW5kZXg6c291cmNlSW5kZXhdOwot
ICAgIF9kYXRhSW50ZXJhY3Rpb25JbmZvID0gYWRvcHROUyhbW01vY2tEYXRhSW50ZXJhY3Rpb25J
bmZvIGFsbG9jXSBpbml0V2l0aEl0ZW1zOml0ZW1zIGxvY2F0aW9uOmxvY2F0aW9uIHdpbmRvdzpb
X3dlYlZpZXcgd2luZG93XV0pOwotICAgIFtfd2ViVmlldyBfc2ltdWxhdGVXaWxsQmVnaW5EYXRh
SW50ZXJhY3Rpb25XaXRoSW5kZXg6c291cmNlSW5kZXggd2l0aFNlc3Npb246bmlsXTsKLX0KLQot
LSAodm9pZCl3ZWJWaWV3RGlkU2VuZERhdGFJbnRlcmFjdGlvblN0YXJ0UmVxdWVzdDooV0tXZWJW
aWV3ICopd2ViVmlldwotewotICAgIC8vIFRoaXMgYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24g
aW4gdGhlIHRlc3RpbmcgaGFybmVzcyB3aGVyZWluIHRoZSB3ZWIgcHJvY2VzcyBtaWdodCB0YWtl
IGxvbmdlciB0aGFuIHVzdWFsIHRvIHByb2Nlc3MgdGhlCi0gICAgLy8gcmVxdWVzdCB0byBzdGFy
dCBkYXRhIGludGVyYWN0aW9uLCBhbmQgaW4gdGhlIG1lYW50aW1lLCBEYXRhSW50ZXJhY3Rpb25T
aW11bGF0b3Igd291bGQgZW5kIHVwIGNvbXBsZXRpbmcgdGhlIHJlc3Qgb2YgdGhlIHRlc3QKLSAg
ICAvLyBiZWZvcmUgYSByZXNwb25zZSBmcm9tIHRoZSB3ZWIgcHJvY2VzcyBpcyByZWNlaXZlZC4g
V2UgaW5zdGVhZCBkZWZlciB0ZXN0IHByb2dyZXNzIHVudGlsIGFmdGVyIHRoZSB3ZWIgcHJvY2Vz
cyBoYXMgaW5kaWNhdGVkCi0gICAgLy8gd2hldGhlciBvciBub3QgZGF0YSBpbnRlcmFjdGlvbiBz
aG91bGQgY29tbWVuY2UuCi0gICAgW05TT2JqZWN0IGNhbmNlbFByZXZpb3VzUGVyZm9ybVJlcXVl
c3RzV2l0aFRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfYWR2YW5jZVByb2dyZXNzKSBv
YmplY3Q6bmlsXTsKLX0KLQotLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRp
ZFJlY2VpdmVEYXRhSW50ZXJhY3Rpb25TdGFydFJlc3BvbnNlOihCT09MKXN0YXJ0ZWQKLXsKLSAg
ICBbc2VsZiBfc2NoZWR1bGVBZHZhbmNlUHJvZ3Jlc3NdOwotfQotCiBAZW5kCiAKICNlbmRpZiAv
LyBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikK
</data>
<flag name="review"
          id="324015"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>