<?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>201967</bug_id>
          
          <creation_ts>2019-09-18 20:18:02 -0700</creation_ts>
          <short_desc>Remove some support for &lt; iOS 13</short_desc>
          <delta_ts>2019-09-21 22:28:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=201969</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=201851</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Rollin">krollin</reporter>
          <assigned_to name="Keith Rollin">krollin</assigned_to>
          <cc>aestes</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1572218</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2019-09-18 20:18:02 -0700</bug_when>
    <thetext>Remove some support for iOS versions less than 13.0. 

Update conditionals that reference __IPHONE_OS_VERSION_MIN_REQUIRED and __IPHONE_OS_VERSION_MAX_ALLOWED, assuming that they both have values &gt;= 130000. This means that expressions like &quot;__IPHONE_OS_VERSION_MIN_REQUIRED &lt; 101300&quot; are always False and &quot;__IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 101300&quot; are always True.

After version checks have been removed, there are some cases where the preprocessor conditional looks like &quot;#if PLATFORM(MAC) || PLATFORM(IOS_FAMILY)&quot;. These can be collapsed into &quot;#if PLATFORM(COCOA)&quot;. This additional cleanup will be performed in a subsequent patch.

This removal is part of a series of patches effecting the removal of dead code for old versions of iOS. This particular pass involves changes in which Andy Estes was involved. These changes are isolated from other similar changes in order to facilitate the reviewing process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572220</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-18 20:18:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/55504738&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572241</commentid>
    <comment_count>2</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2019-09-18 21:11:21 -0700</bug_when>
    <thetext>&gt; These can be collapsed into &quot;#if PLATFORM(COCOA)&quot;. 

Actually, in somme cases, even this check can be removed if in a Cocoa-only file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572597</commentid>
    <comment_count>3</comment_count>
      <attachid>379190</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2019-09-19 19:26:50 -0700</bug_when>
    <thetext>Created attachment 379190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572813</commentid>
    <comment_count>4</comment_count>
      <attachid>379190</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-09-20 12:27:29 -0700</bug_when>
    <thetext>Comment on attachment 379190
Patch

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

&gt; Source/WebCore/platform/cocoa/NetworkExtensionContentFilter.mm:78
&gt; -#if PLATFORM(MAC) || (PLATFORM(IOS_FAMILY) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 110000)
&gt; +#if PLATFORM(MAC) || PLATFORM(IOS_FAMILY)

I think this is equivalent to PLATFORM(COCOA), in which case it can be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572814</commentid>
    <comment_count>5</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-09-20 12:28:52 -0700</bug_when>
    <thetext>(In reply to Andy Estes from comment #4)
&gt; Comment on attachment 379190 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=379190&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/cocoa/NetworkExtensionContentFilter.mm:78
&gt; &gt; -#if PLATFORM(MAC) || (PLATFORM(IOS_FAMILY) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 110000)
&gt; &gt; +#if PLATFORM(MAC) || PLATFORM(IOS_FAMILY)
&gt; 
&gt; I think this is equivalent to PLATFORM(COCOA), in which case it can be
&gt; removed.

Oh, you said you&apos;d squash up in a subsequent patch (but I still think you can remove in this case :))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572820</commentid>
    <comment_count>6</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2019-09-20 12:47:10 -0700</bug_when>
    <thetext>Yeah, I know it&apos;s simple to squash these things into PLATFORM(COCOA) or remove them altogether in Cocoa-only files. But I have a lot of patches in this series with lots of details to keep track of, and I really don&apos;t want to stray from the process I have set up to make sure I don&apos;t drop anything or distract me from the steps I&apos;m on now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572919</commentid>
    <comment_count>7</comment_count>
      <attachid>379190</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-20 15:20:02 -0700</bug_when>
    <thetext>Comment on attachment 379190
Patch

Clearing flags on attachment: 379190

Committed r250160: &lt;https://trac.webkit.org/changeset/250160&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572920</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-20 15:20:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573159</commentid>
    <comment_count>9</comment_count>
      <attachid>379190</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-09-21 22:28:14 -0700</bug_when>
    <thetext>Comment on attachment 379190
Patch

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

&gt; Source/WTF/ChangeLog:21
&gt; +        After version checks have been removed, there are some cases where the
&gt; +        preprocessor conditional looks like &quot;#if PLATFORM(MAC) ||
&gt; +        PLATFORM(IOS_FAMILY)&quot;. These can be collapsed into &quot;#if
&gt; +        PLATFORM(COCOA)&quot;. This additional cleanup will be performed in a
&gt; +        subsequent patch.

Depending on which source file they are in, they can be removed entirely rather than collapsed into &quot;#if PLATFORM(COCOA)&quot;. Our Objective-C and Objective-C++ source files don’t compile on non-Cocoa platforms, so we don’t need conditionals in them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573160</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-09-21 22:28:34 -0700</bug_when>
    <thetext>Oh, I see your comment saying that above, Keith.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379190</attachid>
            <date>2019-09-19 19:26:50 -0700</date>
            <delta_ts>2019-09-20 15:20:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201967-20190919192650.patch</filename>
            <type>text/plain</type>
            <size>30867</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI5NjAyMjRmMTE4N2ZjMDc1ZGEwY2Iw
NjYyNWVhZTQzNGUwNjU5ZjYuLjYxODI2NTU3Yzc5YWNlMTI5ZjYwMmExYmM3YmY5ZDgxMmZiZGU0
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTktMDktMTggIEtlaXRoIFJvbGxpbiAgPGtyb2xs
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBzb21lIHN1cHBvcnQgZm9yIDwgaU9TIDEz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE5NjcK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1NTA0NzM4PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBzb21lIHN1cHBvcnQgZm9yIGlPUyB2
ZXJzaW9ucyBsZXNzIHRoYW4gMTMuMC4KKworICAgICAgICBVcGRhdGUgY29uZGl0aW9uYWxzIHRo
YXQgcmVmZXJlbmNlIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVECisgICAgICAgIGFu
ZCBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VELCBhc3N1bWluZyB0aGF0IHRoZXkgYm90
aCBoYXZlCisgICAgICAgIHZhbHVlcyA+PSAxMzAwMDAuIFRoaXMgbWVhbnMgdGhhdCBleHByZXNz
aW9ucyBsaWtlCisgICAgICAgICJfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEw
MTMwMCIgYXJlIGFsd2F5cyBGYWxzZSBhbmQKKyAgICAgICAgIl9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTMwMCIgYXJlIGFsd2F5cyBUcnVlLgorCisgICAgICAgIEFmdGVy
IHZlcnNpb24gY2hlY2tzIGhhdmUgYmVlbiByZW1vdmVkLCB0aGVyZSBhcmUgc29tZSBjYXNlcyB3
aGVyZSB0aGUKKyAgICAgICAgcHJlcHJvY2Vzc29yIGNvbmRpdGlvbmFsIGxvb2tzIGxpa2UgIiNp
ZiBQTEFURk9STShNQUMpIHx8CisgICAgICAgIFBMQVRGT1JNKElPU19GQU1JTFkpIi4gVGhlc2Ug
Y2FuIGJlIGNvbGxhcHNlZCBpbnRvICIjaWYKKyAgICAgICAgUExBVEZPUk0oQ09DT0EpIi4gVGhp
cyBhZGRpdGlvbmFsIGNsZWFudXAgd2lsbCBiZSBwZXJmb3JtZWQgaW4gYQorICAgICAgICBzdWJz
ZXF1ZW50IHBhdGNoLgorCisgICAgICAgIFRoaXMgcmVtb3ZhbCBpcyBwYXJ0IG9mIGEgc2VyaWVz
IG9mIHBhdGNoZXMgZWZmZWN0aW5nIHRoZSByZW1vdmFsIG9mCisgICAgICAgIGRlYWQgY29kZSBm
b3Igb2xkIHZlcnNpb25zIG9mIGlPUy4gVGhpcyBwYXJ0aWN1bGFyIHBhc3MgaW52b2x2ZXMKKyAg
ICAgICAgY2hhbmdlcyBpbiB3aGljaCBBbmR5IEVzdGVzIHdhcyBpbnZvbHZlZC4gVGhlc2UgY2hh
bmdlcyBhcmUgaXNvbGF0ZWQKKyAgICAgICAgZnJvbSBvdGhlciBzaW1pbGFyIGNoYW5nZXMgaW4g
b3JkZXIgdG8gZmFjaWxpdGF0ZSB0aGUgcmV2aWV3aW5nCisgICAgICAgIHByb2Nlc3MuCisKKyAg
ICAgICAgKiB3dGYvRmVhdHVyZURlZmluZXMuaDoKKwogMjAxOS0wOS0xNyAgTWFyayBMYW0gIDxt
YXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGNvbnN0ZXhwciBpbnN0ZWFkIG9mIGNv
bnN0IGluIHN5bWJvbCBkZWZpbml0aW9ucyB0aGF0IGFyZSBvYnZpb3VzbHkgY29uc3RleHByLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDJlMDNkNjI0ZmExZTU0ZGQyMWU2MjlhNmVhOGNjOTc5N2E2NjY3ZjguLjIw
NjM0NDYyM2Q2MWI3NTA4NTYzODc0MWQ3YTZkNGE4ZjUwZWQyZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAxOS0wOS0xOCAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVtb3ZlIHNvbWUgc3VwcG9ydCBmb3IgPCBpT1MgMTMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTk2NworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTU1MDQ3Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVtb3ZlIHNvbWUgc3VwcG9ydCBmb3IgaU9TIHZlcnNpb25zIGxlc3Mg
dGhhbiAxMy4wLgorCisgICAgICAgIFVwZGF0ZSBjb25kaXRpb25hbHMgdGhhdCByZWZlcmVuY2Ug
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQKKyAgICAgICAgYW5kIF9fSVBIT05FX09T
X1ZFUlNJT05fTUFYX0FMTE9XRUQsIGFzc3VtaW5nIHRoYXQgdGhleSBib3RoIGhhdmUKKyAgICAg
ICAgdmFsdWVzID49IDEzMDAwMC4gVGhpcyBtZWFucyB0aGF0IGV4cHJlc3Npb25zIGxpa2UKKyAg
ICAgICAgIl9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMzAwIiBhcmUgYWx3
YXlzIEZhbHNlIGFuZAorICAgICAgICAiX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxMzAwIiBhcmUgYWx3YXlzIFRydWUuCisKKyAgICAgICAgQWZ0ZXIgdmVyc2lvbiBjaGVj
a3MgaGF2ZSBiZWVuIHJlbW92ZWQsIHRoZXJlIGFyZSBzb21lIGNhc2VzIHdoZXJlIHRoZQorICAg
ICAgICBwcmVwcm9jZXNzb3IgY29uZGl0aW9uYWwgbG9va3MgbGlrZSAiI2lmIFBMQVRGT1JNKE1B
QykgfHwKKyAgICAgICAgUExBVEZPUk0oSU9TX0ZBTUlMWSkiLiBUaGVzZSBjYW4gYmUgY29sbGFw
c2VkIGludG8gIiNpZgorICAgICAgICBQTEFURk9STShDT0NPQSkiLiBUaGlzIGFkZGl0aW9uYWwg
Y2xlYW51cCB3aWxsIGJlIHBlcmZvcm1lZCBpbiBhCisgICAgICAgIHN1YnNlcXVlbnQgcGF0Y2gu
CisKKyAgICAgICAgVGhpcyByZW1vdmFsIGlzIHBhcnQgb2YgYSBzZXJpZXMgb2YgcGF0Y2hlcyBl
ZmZlY3RpbmcgdGhlIHJlbW92YWwgb2YKKyAgICAgICAgZGVhZCBjb2RlIGZvciBvbGQgdmVyc2lv
bnMgb2YgaU9TLiBUaGlzIHBhcnRpY3VsYXIgcGFzcyBpbnZvbHZlcworICAgICAgICBjaGFuZ2Vz
IGluIHdoaWNoIEFuZHkgRXN0ZXMgd2FzIGludm9sdmVkLiBUaGVzZSBjaGFuZ2VzIGFyZSBpc29s
YXRlZAorICAgICAgICBmcm9tIG90aGVyIHNpbWlsYXIgY2hhbmdlcyBpbiBvcmRlciB0byBmYWNp
bGl0YXRlIHRoZSByZXZpZXdpbmcKKyAgICAgICAgcHJvY2Vzcy4KKworICAgICAgICBObyBuZXcg
dGVzdHMgLS0gbm8gbmV3IG9yIGNoYW5nZWQgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmluaXRpYWxpemUpOgorCiAy
MDE5LTA5LTE5ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBDYW52YXM6IHNob3cgV2ViR1BVIHNoYWRlciBwaXBlbGluZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCmluZGV4IDQ4ZTczYTU1NWZlYzY2ZmNmYTkwZWUzYjRjYWZmOWNkMTVhODkxYzEu
LjdkMjg3Yjg2M2VjMTBjYjdhYmJjY2I0ODg4ODhkNTc2ZWQwY2E0MDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTA5LTE4ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGlu
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgc29tZSBzdXBwb3J0IGZvciA8IGlPUyAxMwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxOTY3Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTUwNDczOD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgc29tZSBzdXBwb3J0IGZvciBpT1MgdmVy
c2lvbnMgbGVzcyB0aGFuIDEzLjAuCisKKyAgICAgICAgVXBkYXRlIGNvbmRpdGlvbmFscyB0aGF0
IHJlZmVyZW5jZSBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRAorICAgICAgICBhbmQg
X19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCwgYXNzdW1pbmcgdGhhdCB0aGV5IGJvdGgg
aGF2ZQorICAgICAgICB2YWx1ZXMgPj0gMTMwMDAwLiBUaGlzIG1lYW5zIHRoYXQgZXhwcmVzc2lv
bnMgbGlrZQorICAgICAgICAiX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEz
MDAiIGFyZSBhbHdheXMgRmFsc2UgYW5kCisgICAgICAgICJfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEzMDAiIGFyZSBhbHdheXMgVHJ1ZS4KKworICAgICAgICBBZnRlciB2
ZXJzaW9uIGNoZWNrcyBoYXZlIGJlZW4gcmVtb3ZlZCwgdGhlcmUgYXJlIHNvbWUgY2FzZXMgd2hl
cmUgdGhlCisgICAgICAgIHByZXByb2Nlc3NvciBjb25kaXRpb25hbCBsb29rcyBsaWtlICIjaWYg
UExBVEZPUk0oTUFDKSB8fAorICAgICAgICBQTEFURk9STShJT1NfRkFNSUxZKSIuIFRoZXNlIGNh
biBiZSBjb2xsYXBzZWQgaW50byAiI2lmCisgICAgICAgIFBMQVRGT1JNKENPQ09BKSIuIFRoaXMg
YWRkaXRpb25hbCBjbGVhbnVwIHdpbGwgYmUgcGVyZm9ybWVkIGluIGEKKyAgICAgICAgc3Vic2Vx
dWVudCBwYXRjaC4KKworICAgICAgICBUaGlzIHJlbW92YWwgaXMgcGFydCBvZiBhIHNlcmllcyBv
ZiBwYXRjaGVzIGVmZmVjdGluZyB0aGUgcmVtb3ZhbCBvZgorICAgICAgICBkZWFkIGNvZGUgZm9y
IG9sZCB2ZXJzaW9ucyBvZiBpT1MuIFRoaXMgcGFydGljdWxhciBwYXNzIGludm9sdmVzCisgICAg
ICAgIGNoYW5nZXMgaW4gd2hpY2ggQW5keSBFc3RlcyB3YXMgaW52b2x2ZWQuIFRoZXNlIGNoYW5n
ZXMgYXJlIGlzb2xhdGVkCisgICAgICAgIGZyb20gb3RoZXIgc2ltaWxhciBjaGFuZ2VzIGluIG9y
ZGVyIHRvIGZhY2lsaXRhdGUgdGhlIHJldmlld2luZworICAgICAgICBwcm9jZXNzLgorCisgICAg
ICAgICogcGFsL3NwaS9jb2NvYS9ORUZpbHRlclNvdXJjZVNQSS5oOgorCiAyMDE5LTA5LTE4ICBL
ZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgYWx0ZXJu
YXRlIGRlY2xhcmF0aW9uIG9mIENDRUNDcnlwdG9ySW1wb3J0S2V5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgwZDRk
NzU0MjA0NzBiMTE3MzBiYTQzMDAxYzJhNGEwMjk1MGI4OTguLmFmNWZiOTBmZDM0NGFiYjMwNzBl
MjZhMGYwYTMzMDNjY2ZmMzZlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTktMDkt
MTggIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBz
b21lIHN1cHBvcnQgZm9yIDwgaU9TIDEzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDE5NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1NTA0NzM4
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92
ZSBzb21lIHN1cHBvcnQgZm9yIGlPUyB2ZXJzaW9ucyBsZXNzIHRoYW4gMTMuMC4KKworICAgICAg
ICBVcGRhdGUgY29uZGl0aW9uYWxzIHRoYXQgcmVmZXJlbmNlIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVECisgICAgICAgIGFuZCBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VE
LCBhc3N1bWluZyB0aGF0IHRoZXkgYm90aCBoYXZlCisgICAgICAgIHZhbHVlcyA+PSAxMzAwMDAu
IFRoaXMgbWVhbnMgdGhhdCBleHByZXNzaW9ucyBsaWtlCisgICAgICAgICJfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMCIgYXJlIGFsd2F5cyBGYWxzZSBhbmQKKyAgICAg
ICAgIl9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCIgYXJlIGFsd2F5
cyBUcnVlLgorCisgICAgICAgIEFmdGVyIHZlcnNpb24gY2hlY2tzIGhhdmUgYmVlbiByZW1vdmVk
LCB0aGVyZSBhcmUgc29tZSBjYXNlcyB3aGVyZSB0aGUKKyAgICAgICAgcHJlcHJvY2Vzc29yIGNv
bmRpdGlvbmFsIGxvb2tzIGxpa2UgIiNpZiBQTEFURk9STShNQUMpIHx8CisgICAgICAgIFBMQVRG
T1JNKElPU19GQU1JTFkpIi4gVGhlc2UgY2FuIGJlIGNvbGxhcHNlZCBpbnRvICIjaWYKKyAgICAg
ICAgUExBVEZPUk0oQ09DT0EpIi4gVGhpcyBhZGRpdGlvbmFsIGNsZWFudXAgd2lsbCBiZSBwZXJm
b3JtZWQgaW4gYQorICAgICAgICBzdWJzZXF1ZW50IHBhdGNoLgorCisgICAgICAgIFRoaXMgcmVt
b3ZhbCBpcyBwYXJ0IG9mIGEgc2VyaWVzIG9mIHBhdGNoZXMgZWZmZWN0aW5nIHRoZSByZW1vdmFs
IG9mCisgICAgICAgIGRlYWQgY29kZSBmb3Igb2xkIHZlcnNpb25zIG9mIGlPUy4gVGhpcyBwYXJ0
aWN1bGFyIHBhc3MgaW52b2x2ZXMKKyAgICAgICAgY2hhbmdlcyBpbiB3aGljaCBBbmR5IEVzdGVz
IHdhcyBpbnZvbHZlZC4gVGhlc2UgY2hhbmdlcyBhcmUgaXNvbGF0ZWQKKyAgICAgICAgZnJvbSBv
dGhlciBzaW1pbGFyIGNoYW5nZXMgaW4gb3JkZXIgdG8gZmFjaWxpdGF0ZSB0aGUgcmV2aWV3aW5n
CisgICAgICAgIHByb2Nlc3MuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29h
OjpOZXR3b3JrU2Vzc2lvbkNvY29hKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGF0YUZvclBy
ZXZpZXdJdGVtQ29udHJvbGxlcjphdFBvc2l0aW9uOnR5cGU6XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbToKKyAgICAgICAgKC1bV0tGaWxlVXBs
b2FkUGFuZWwgX3VwbG9hZEl0ZW1Gcm9tTWVkaWFJbmZvOnN1Y2Nlc3NCbG9jazpmYWlsdXJlQmxv
Y2s6XSk6CisKIDIwMTktMDktMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgYmV0dGVyIGxvZ2dpbmcgZm9yIHdoZW4gdGhlIHZpZXcgdmlzaWJpbGl0eSBz
dGF0ZSBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5o
IGIvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAppbmRleCAzZGEwODdmZjRkMjViZTMz
MDk2ZWNiMzc2Y2Y1MWQwNzM3ZTViODYzLi43YTdmNDYzYjI4MWQ5YjE4NDBkNTQwNGJkYzllM2E2
NzMwMDk3YTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKQEAgLTE3NCw3ICsxNzQsNyBAQCB0
aGUgcHVibGljIGlPUyBTREsuIFNlZSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTc5MTY3Pi4gKi8K
ICNlbmRpZgogCiAjaWYgIWRlZmluZWQoSEFWRV9QREZIT1NUVklFV0NPTlRST0xMRVJfU05BUFNI
T1RUSU5HKQotI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikgJiYg
IVBMQVRGT1JNKE1BQ0NBVEFMWVNUKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMzAwMDAKKyNpZiBQTEFURk9STShJT1MpCiAjZGVmaW5lIEhBVkVfUERGSE9TVFZJRVdD
T05UUk9MTEVSX1NOQVBTSE9UVElORyAxCiAjZW5kaWYKICNlbmRpZgpAQCAtMjEwLDcgKzIxMCw3
IEBAIHRoZSBwdWJsaWMgaU9TIFNESy4gU2VlIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNzkxNjc+
LiAqLwogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChIQVZFX1BBU1NLSVRfQk9VTkRfSU5URVJGQUNF
X0lERU5USUZJRVIpCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMw
MDAwCisjaWYgUExBVEZPUk0oSU9TKQogI2RlZmluZSBIQVZFX1BBU1NLSVRfQk9VTkRfSU5URVJG
QUNFX0lERU5USUZJRVIgMQogI2VuZGlmCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NvY29hL05FRmlsdGVyU291cmNlU1BJLmggYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9jb2NvYS9ORUZpbHRlclNvdXJjZVNQSS5oCmluZGV4IDVjYzE3MDk3MDI1
YTc1YzU1M2VlNzQzYTM1NjQwZWFiYjk2YjUxM2QuLjliOTU5ZTRlYmU1MjRlMDY3ODMyYTk5ZDcy
MzM0YTI3ZjcxMWFhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nv
Y29hL05FRmlsdGVyU291cmNlU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y29jb2EvTkVGaWx0ZXJTb3VyY2VTUEkuaApAQCAtNjksNyArNjksNyBAQCB0eXBlZGVmIHZvaWQg
KF5ORUZpbHRlclNvdXJjZURlY2lzaW9uSGFuZGxlcikoTkVGaWx0ZXJTb3VyY2VTdGF0dXMsIE5T
RGljdGlvbmFyeQogLSAodm9pZClyZWNlaXZlZERhdGE6KE5TRGF0YSAqKWRhdGEgZGVjaXNpb25I
YW5kbGVyOihORUZpbHRlclNvdXJjZURlY2lzaW9uSGFuZGxlcilkZWNpc2lvbkhhbmRsZXI7CiAt
ICh2b2lkKWZpbmlzaGVkTG9hZGluZ1dpdGhEZWNpc2lvbkhhbmRsZXI6KE5FRmlsdGVyU291cmNl
RGVjaXNpb25IYW5kbGVyKWRlY2lzaW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVtZWRpYXRlV2l0aERl
Y2lzaW9uSGFuZGxlcjooTkVGaWx0ZXJTb3VyY2VEZWNpc2lvbkhhbmRsZXIpZGVjaXNpb25IYW5k
bGVyOwotI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKKyNpZiBQTEFURk9STShNQUMp
IHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiBAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpzb3Vy
Y2VBcHBJZGVudGlmaWVyOwogQHByb3BlcnR5IChhc3NpZ24pIHBpZF90IHNvdXJjZUFwcFBpZDsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCAwNWM1NTI0ZGVmYzc3NzYx
MWRmNzVmNDliMTkxZDdmZDY5ZjQ1ODQxLi4zNjQxZTMxODdkOTdlNWU5ZjMwYTQxOTZmYmFhMWY5
OGNjYjM1NThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAtNzUsNyArNzUsNyBA
QCB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjppbml0aWFsaXplKGNvbnN0IFVS
TCogdXJsKQogICAgIG1fcXVldWUgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0
ZSgiV2ViS2l0IE5ldHdvcmtFeHRlbnNpb24gRmlsdGVyaW5nIiwgRElTUEFUQ0hfUVVFVUVfU0VS
SUFMKSk7CiAgICAgQVNTRVJUX1VOVVNFRCh1cmwsICF1cmwpOwogICAgIG1fbmVGaWx0ZXJTb3Vy
Y2UgPSBhZG9wdE5TKFthbGxvY05FRmlsdGVyU291cmNlSW5zdGFuY2UoKSBpbml0V2l0aERlY2lz
aW9uUXVldWU6bV9xdWV1ZS5nZXQoKV0pOwotI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAw
MCkKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW21fbmVG
aWx0ZXJTb3VyY2Ugc2V0U291cmNlQXBwSWRlbnRpZmllcjphcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIoKV07CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgLXJlc3BvbmRzVG9TZWxlY3Rvcjog
Y2hlY2sgb25jZSAtc2V0U291cmNlQXBwUGlkOiBpcyBkZWZpbmVkIGluIGFuIFNESyB1c2VkIGJ5
IHRoZSBidWlsZGVycy4KICAgICBpZiAoW21fbmVGaWx0ZXJTb3VyY2UgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihzZXRTb3VyY2VBcHBQaWQ6KV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXgg
NmRhODU1MGU0NjhjNzhhZGRlYjdiZDY5NzNlNThiYWEwOWI3MjVhZi4uZDUzYTU0YzNkZjQyMGFl
YWIyZWI1NzU0MTg4MDQzNjViYWE2OGI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtOTg1LDcg
Kzk4NSw3IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29y
a1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrCiAgICAgc2V0Q29sbGVjdHNUaW1pbmdE
YXRhKCk7CiAjZW5kaWYKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKQorI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiBSZXBsYWNlIEAia0NGU3RyZWFtUHJvcGVy
dHlBdXRvRXJyb3JPblN5c3RlbUNoYW5nZSIgd2l0aCBhIGNvbnN0YW50IGZyb20gdGhlIFNESyBv
bmNlIHJkYXI6Ly9wcm9ibGVtLzQwNjUwMjQ0IGlzIGluIGEgYnVpbGQuCiAgICAgaWYgKG5ldHdv
cmtQcm9jZXNzLnN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSgp
KQogICAgICAgICBjb25maWd1cmF0aW9uLl9zb2NrZXRTdHJlYW1Qcm9wZXJ0aWVzID0gQHsgQCJr
Q0ZTdHJlYW1Qcm9wZXJ0eUF1dG9FcnJvck9uU3lzdGVtQ2hhbmdlIiA6IEBOTyB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KaW5kZXggM2U5MjYyNzcyMzNkZDY1MTllMmY2NTQ0NDI1ZDNlM2FjZjc0ODYxZi4uOGNm
YjliNGFlNjIzMWEyNWFiYmQ0MDJmOWVlYWQ2ZjQyM2U1ZTY0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBA
IC04NTg5LDEyICs4NTg5LDcgQEAgLSAoTlNEaWN0aW9uYXJ5ICopX2RhdGFGb3JQcmV2aWV3SXRl
bUNvbnRyb2xsZXI6KFVJUHJldmlld0l0ZW1Db250cm9sbGVyICopY29udHIKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBkYXRhRm9yUHJldmlld1tVSVByZXZpZXdEYXRhQXR0YWNo
bWVudExpc3RdID0gW3VpRGVsZWdhdGUgX2F0dGFjaG1lbnRMaXN0Rm9yV2ViVmlldzpfd2ViVmll
d107CiAgICAgICAgICAgICBkYXRhRm9yUHJldmlld1tVSVByZXZpZXdEYXRhQXR0YWNobWVudElu
ZGV4XSA9IFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnRlZ2VyOmluZGV4XTsKLQotI2lm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTMwMDAwCi0gICAgICAgICAgICBk
YXRhRm9yUHJldmlld1tVSVByZXZpZXdEYXRhQXR0YWNobWVudExpc3RTb3VyY2VJc01hbmFnZWRd
ID0gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOnNvdXJjZUlzTWFuYWdlZF07Ci0jZWxzZQogICAg
ICAgICAgICAgZGF0YUZvclByZXZpZXdbVUlQcmV2aWV3RGF0YUF0dGFjaG1lbnRMaXN0SXNDb250
ZW50TWFuYWdlZF0gPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6c291cmNlSXNNYW5hZ2VkXTsK
LSNlbmRpZgogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0KaW5kZXggYmU5NDUxZGI3NDdl
ZWM0ZjA1ZDFiNTQ5N2ExYWY5OGMwM2UzY2E1MC4uN2MzN2U5M2MzNzdhZTBiM2M2ZWJjYzA0MDc5
NjYwYjJmYWY1ZTBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbQpAQCAtNzU1LDcgKzc1NSw3IEBAIC0gKHZvaWQp
X3VwbG9hZEl0ZW1Gcm9tTWVkaWFJbmZvOihOU0RpY3Rpb25hcnkgKilpbmZvIHN1Y2Nlc3NCbG9j
azoodm9pZCAoXikoX1dLCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIGlmIChOU1VSTCAqaW1hZ2VVUkwgPSBpbmZvW1VJSW1hZ2VQaWNrZXJDb250cm9sbGVy
SW1hZ2VVUkxdKSB7CiAgICAgICAgIGlmICghaW1hZ2VVUkwuaXNGaWxlVVJMKSB7CiAgICAgICAg
ICAgICBMT0dfRVJST1IoIldLRmlsZVVwbG9hZFBhbmVsOiBFeHBlY3RlZCBpbWFnZSBVUkwgdG8g
YmUgYSBmaWxlIHBhdGgsIGl0IHdhcyBub3QiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyOWU5ODU3OWVkOTMzYzhhOGQ2M2M1YTRlOTYxY2M3
NjYyYThkYzIyLi4wNDdlMjQwYWEwYzk0Yjg1ZTBjZjcxZDcyY2Y5YjllOTk4NDU1ZmQzIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzMgQEAKKzIwMTktMDktMTggIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFJlbW92ZSBzb21lIHN1cHBvcnQgZm9yIDwgaU9TIDEzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE5NjcKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzU1NTA0NzM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlbW92ZSBzb21lIHN1cHBvcnQgZm9yIGlPUyB2ZXJzaW9ucyBsZXNzIHRoYW4g
MTMuMC4KKworICAgICAgICBVcGRhdGUgY29uZGl0aW9uYWxzIHRoYXQgcmVmZXJlbmNlIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVECisgICAgICAgIGFuZCBfX0lQSE9ORV9PU19WRVJT
SU9OX01BWF9BTExPV0VELCBhc3N1bWluZyB0aGF0IHRoZXkgYm90aCBoYXZlCisgICAgICAgIHZh
bHVlcyA+PSAxMzAwMDAuIFRoaXMgbWVhbnMgdGhhdCBleHByZXNzaW9ucyBsaWtlCisgICAgICAg
ICJfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTMwMCIgYXJlIGFsd2F5cyBG
YWxzZSBhbmQKKyAgICAgICAgIl9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTMwMCIgYXJlIGFsd2F5cyBUcnVlLgorCisgICAgICAgIEFmdGVyIHZlcnNpb24gY2hlY2tzIGhh
dmUgYmVlbiByZW1vdmVkLCB0aGVyZSBhcmUgc29tZSBjYXNlcyB3aGVyZSB0aGUKKyAgICAgICAg
cHJlcHJvY2Vzc29yIGNvbmRpdGlvbmFsIGxvb2tzIGxpa2UgIiNpZiBQTEFURk9STShNQUMpIHx8
CisgICAgICAgIFBMQVRGT1JNKElPU19GQU1JTFkpIi4gVGhlc2UgY2FuIGJlIGNvbGxhcHNlZCBp
bnRvICIjaWYKKyAgICAgICAgUExBVEZPUk0oQ09DT0EpIi4gVGhpcyBhZGRpdGlvbmFsIGNsZWFu
dXAgd2lsbCBiZSBwZXJmb3JtZWQgaW4gYQorICAgICAgICBzdWJzZXF1ZW50IHBhdGNoLgorCisg
ICAgICAgIFRoaXMgcmVtb3ZhbCBpcyBwYXJ0IG9mIGEgc2VyaWVzIG9mIHBhdGNoZXMgZWZmZWN0
aW5nIHRoZSByZW1vdmFsIG9mCisgICAgICAgIGRlYWQgY29kZSBmb3Igb2xkIHZlcnNpb25zIG9m
IGlPUy4gVGhpcyBwYXJ0aWN1bGFyIHBhc3MgaW52b2x2ZXMKKyAgICAgICAgY2hhbmdlcyBpbiB3
aGljaCBBbmR5IEVzdGVzIHdhcyBpbnZvbHZlZC4gVGhlc2UgY2hhbmdlcyBhcmUgaXNvbGF0ZWQK
KyAgICAgICAgZnJvbSBvdGhlciBzaW1pbGFyIGNoYW5nZXMgaW4gb3JkZXIgdG8gZmFjaWxpdGF0
ZSB0aGUgcmV2aWV3aW5nCisgICAgICAgIHByb2Nlc3MuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmlldy5tbTogUmVtb3ZlZC4KKwogMjAxOS0wOS0x
OSAgSm9hbm1hcmllIERpZ2dzICA8amRpZ2dzQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10g
RGVwZW5kZW5jeSBodW5zcGVsbC1lbi1nYiBjYW5ub3QgYmUgZm91bmQgb24gRmVkb3JhIDMwCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE5NGQ1YmEzNzcwYzQ2Zjg0YWIwMmE5MGMzOTViZmE1
NjNiNzQ1YTcuLjdjY2E2MWVlZmJiZDk2MGMwMDI0NTNkNWQ2NzcxZTZhYjQzYTVhNGEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NjgsNyArNzY4LDYgQEAKIAkJQTEzRUJCQjAxQjg3NDM2
RjAwMDk3MTEwIC8qIEJ1bmRsZVBhcmFtZXRlcnNQbHVnSW4ubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTNFQkJBRTFCODc0MzZGMDAwOTcxMTAgLyog
QnVuZGxlUGFyYW1ldGVyc1BsdWdJbi5tbSAqLzsgfTsKIAkJQTEzRUJCQjExQjg3NDM4MDAwMDk3
MTEwIC8qIEJ1bmRsZVBhcmFtZXRlcnMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTNFQkJBQzFCODc0MzZGMDAwOTcxMTAgLyogQnVuZGxlUGFyYW1l
dGVycy5tbSAqLzsgfTsKIAkJQTE0MDlBRDkxRTcyNTRENDAwNDk0OUQ5IC8qIHBhc3N3b3JkLXBy
b3RlY3RlZC5wYWdlcyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTQwOUFEODFFNzI1NEFDMDA0OTQ5RDkgLyogcGFzc3dvcmQtcHJvdGVjdGVk
LnBhZ2VzICovOyB9OwotCQlBMTRBQUI2MzFFNzhEN0RFMDBDMUFEQzIgLyogV0tQREZWaWV3Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0QUFCNjEx
RTc4RDdERTAwQzFBREMyIC8qIFdLUERGVmlldy5tbSAqLzsgfTsKIAkJQTE0QUFCNjUxRTc4REM1
NDAwQzFBREMyIC8qIGVuY3J5cHRlZC5wZGYgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0QUFCNjQxRTc4REMzRjAwQzFBREMyIC8qIGVuY3J5
cHRlZC5wZGYgKi87IH07CiAJCUExNEZDNTg4MUI4OTkxQkYwMEQxMDdFQiAvKiBDb250ZW50Rmls
dGVyaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTE0RkM1ODYxQjg5OTFCNjAwRDEwN0VCIC8qIENvbnRlbnRGaWx0ZXJpbmcubW0gKi87IH07CiAJ
CUExNEZDNThCMUI4OTkyNzEwMEQxMDdFQiAvKiBDb250ZW50RmlsdGVyaW5nUGx1Z0luLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0RkM1ODkxQjg5
OTI3MTAwRDEwN0VCIC8qIENvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0gKi87IH07CkBAIC0yMTQz
LDcgKzIxNDIsNiBAQAogCQlBMTNFQkJBQzFCODc0MzZGMDAwOTcxMTAgLyogQnVuZGxlUGFyYW1l
dGVycy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJ1bmRsZVBh
cmFtZXRlcnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExM0VCQkFFMUI4NzQz
NkYwMDA5NzExMCAvKiBCdW5kbGVQYXJhbWV0ZXJzUGx1Z0luLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQnVuZGxlUGFyYW1ldGVyc1BsdWdJbi5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE0MDlBRDgxRTcyNTRBQzAwNDk0OUQ5IC8qIHBhc3N3
b3JkLXByb3RlY3RlZC5wYWdlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSAicGFzc3dvcmQtcHJvdGVjdGVkLnBhZ2VzIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTE0QUFCNjExRTc4RDdERTAwQzFBREMyIC8qIFdL
UERGVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLUERG
Vmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE0QUFCNjQxRTc4REMzRjAw
QzFBREMyIC8qIGVuY3J5cHRlZC5wZGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBpbWFnZS5wZGY7IHBhdGggPSBlbmNyeXB0ZWQucGRmOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMTRGQzU4MzFCODk3MzkxMDBEMTA3RUIgLyogV0tXZWJW
aWV3Q29uZmlndXJhdGlvbkV4dHJhcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUExNEZDNTg0MUI4OTczOTEwMEQxMDdFQiAvKiBXS1dlYlZpZXdDb25m
aWd1cmF0aW9uRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb25FeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI5MzIsNyArMjkzMCw2IEBACiAJCQkJREY0QjI3MzgyMUE0NzcyNzAwOUJEMUNBIC8qIFdLTlNE
aWN0aW9uYXJ5RW1wdHlEaWN0aW9uYXJ5Q3Jhc2gubW0gKi8sCiAJCQkJMzc1RTBFMTUxRDY2Njc0
NDAwRUZFQzJDIC8qIFdLTlNOdW1iZXIubW0gKi8sCiAJCQkJMzdCNDdFMkUxRDY0RTdDQTAwNUY0
RUZGIC8qIFdLT2JqZWN0Lm1tICovLAotCQkJCUExNEFBQjYxMUU3OEQ3REUwMEMxQURDMiAvKiBX
S1BERlZpZXcubW0gKi8sCiAJCQkJMkQwMDA2NUQxQzFGNTg5NDAwODhFNkE3IC8qIFdLUERGVmll
d1Jlc2l6ZUNyYXNoLm1tICovLAogCQkJCTJEMjFGRTU4MUYwNDY0MjgwMEI1OEU3RCAvKiBXS1BE
RlZpZXdTdGFibGVQcmVzZW50YXRpb25VcGRhdGVDYWxsYmFjay5tbSAqLywKIAkJCQkzNzgxNzQ2
QzIxOThBRTI0MDAwNjJDMjYgLyogV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0gKi8sCkBA
IC00ODQyLDcgKzQ4MzksNiBAQAogCQkJCTUyRDY3M0VFMUFGQjEyNzMwMEZBMTlGRSAvKiBXS1Bh
Z2VDb3B5U2Vzc2lvblN0YXRlV2l0aEZpbHRlcmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
Q0NFN0YxRjFBNDExQUU2MDA0NDdDNEMgLyogV0tQYWdlR2V0U2NhbGVGYWN0b3JOb3RaZXJvLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjIwMUE0MTFBRTYwMDQ0N0M0QyAvKiBXS1BhZ2VJ
c1BsYXlpbmdBdWRpby5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBMTRBQUI2MzFFNzhEN0RFMDBD
MUFEQzIgLyogV0tQREZWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQwMDA2NUYxQzFGNTg5
QTAwODhFNkE3IC8qIFdLUERGVmlld1Jlc2l6ZUNyYXNoLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkQyMUZFNTkxRjA0NjQyOTAwQjU4RTdEIC8qIFdLUERGVmlld1N0YWJsZVByZXNlbnRhdGlvblVw
ZGF0ZUNhbGxiYWNrLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMjExQTQxMUFFNjAwNDQ3
QzRDIC8qIFdLUHJlZmVyZW5jZXMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmlldy5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tQREZWaWV3Lm1tCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxMTk2ZjIxNDkwYTFjNzA2OWJhZTRiZThkYmQwZTc4ZGQwY2EyOGZl
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tQREZWaWV3Lm1tCisrKyAvZGV2L251bGwK
QEAgLTEsMzIwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBv
cnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KLQotLy8gRklYTUU6IEVuYWJsZSB0aGVzZSB0ZXN0
cyBvbiBpT1MgMTIgb25jZSByZGFyOi8vcHJvYmxlbS8zOTQ3NTU0MiBpcyByZXNvbHZlZC4KLSNp
ZiBUQVJHRVRfT1NfSVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwg
MTIwMDAwCi0KLSNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW1wb3J0ICJUZXN0TmF2
aWdhdGlvbkRlbGVnYXRlLmgiCi0jaW1wb3J0ICJVdGlsaXRpZXMuaCIKLSNpbXBvcnQgPFdlYktp
dC9XS1dlYlZpZXdQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvX1dLRmluZERlbGVnYXRlLmg+
Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0KLXN0YXRpYyB2b2lkIHJ1blRlc3QoTlNVUkwg
KnBkZlVSTCkKLXsKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0XSk7Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpwZGZVUkxdXTsKLSAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2
aWdhdGlvbl07Ci0KLSAgICBOU0RhdGEgKmV4cGVjdGVkID0gW05TRGF0YSBkYXRhV2l0aENvbnRl
bnRzT2ZVUkw6cGRmVVJMXTsKLSAgICBOU0RhdGEgKmFjdHVhbCA9IFt3ZWJWaWV3IF9kYXRhRm9y
RGlzcGxheWVkUERGXTsKLSAgICBFWFBFQ1RfVFJVRShbZXhwZWN0ZWQgaXNFcXVhbFRvRGF0YTph
Y3R1YWxdKTsKLX0KLQotVEVTVChXS1BERlZpZXcsIERhdGFGb3JEaXNwbGF5ZWRQREYpCi17Ci0g
ICAgcnVuVGVzdChbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAidGVzdCIg
d2l0aEV4dGVuc2lvbjpAInBkZiIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXSk7Ci19Ci0KLVRFU1QoV0tQREZWaWV3LCBEYXRhRm9yRGlzcGxheWVkUERGRW5jcnlwdGVk
KQotewotICAgIHJ1blRlc3QoW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpA
ImVuY3J5cHRlZCIgd2l0aEV4dGVuc2lvbjpAInBkZiIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXMiXSk7Ci19Ci0KLXN0YXRpYyBCT09MIGlzRG9uZTsKLXN0YXRpYyBjb25z
dCBOU1VJbnRlZ2VyIG1heENvdW50ID0gMTAwOwotCi1AaW50ZXJmYWNlIFRlc3RGaW5kRGVsZWdh
dGUgOiBOU09iamVjdCA8X1dLRmluZERlbGVnYXRlPgotQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBOU1N0cmluZyAqZmluZFN0cmluZzsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgTlNVSW50ZWdlciBtYXRjaGVzQ291bnQ7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIE5TSW50ZWdlciBtYXRjaEluZGV4OwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBCT09MIGRpZEZhaWw7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBUZXN0RmluZERlbGVn
YXRlIHsKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9maW5kU3RyaW5nOwotfQotCi0tIChOU1N0
cmluZyAqKWZpbmRTdHJpbmcKLXsKLSAgICByZXR1cm4gX2ZpbmRTdHJpbmcuZ2V0KCk7Ci19Ci0K
LS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQ291bnRNYXRjaGVzOihO
U1VJbnRlZ2VyKW1hdGNoZXMgZm9yU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZwotewotICAgIF9m
aW5kU3RyaW5nID0gc3RyaW5nOwotICAgIF9tYXRjaGVzQ291bnQgPSBtYXRjaGVzOwotICAgIF9k
aWRGYWlsID0gTk87Ci0gICAgaXNEb25lID0gWUVTOwotfQotCi0tICh2b2lkKV93ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmRNYXRjaGVzOihOU1VJbnRlZ2VyKW1hdGNoZXMgZm9y
U3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB3aXRoTWF0Y2hJbmRleDooTlNJbnRlZ2VyKW1hdGNo
SW5kZXgKLXsKLSAgICBfZmluZFN0cmluZyA9IHN0cmluZzsKLSAgICBfbWF0Y2hlc0NvdW50ID0g
bWF0Y2hlczsKLSAgICBfbWF0Y2hJbmRleCA9IG1hdGNoSW5kZXg7Ci0gICAgX2RpZEZhaWwgPSBO
TzsKLSAgICBpc0RvbmUgPSBZRVM7Ci19Ci0KLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgZGlkRmFpbFRvRmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcKLXsKLSAgICBf
ZmluZFN0cmluZyA9IHN0cmluZzsKLSAgICBfZGlkRmFpbCA9IFlFUzsKLSAgICBpc0RvbmUgPSBZ
RVM7Ci19Ci0KLUBlbmQKLQotc3RhdGljIHZvaWQgbG9hZFdlYlZpZXcoV0tXZWJWaWV3ICp3ZWJW
aWV3LCBUZXN0RmluZERlbGVnYXRlICpmaW5kRGVsZWdhdGUpCi17Ci0gICAgW3dlYlZpZXcgX3Nl
dEZpbmREZWxlZ2F0ZTpmaW5kRGVsZWdhdGVdOwotICAgIE5TVVJMICpwZGZVUkwgPSBbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiZmluZCIgd2l0aEV4dGVuc2lvbjpAInBk
ZiIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKLSAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBkZlVSTF1dOwotICAg
IFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKLX0KLQotVEVTVChX
S1BERlZpZXcsIENvdW50U3RyaW5nKQotewotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGZpbmREZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tUZXN0RmluZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgbG9hZFdlYlZpZXcod2ViVmll
dy5nZXQoKSwgZmluZERlbGVnYXRlLmdldCgpKTsKLQotICAgIE5TU3RyaW5nICpleHBlY3RlZFN0
cmluZyA9IEAiVHdvIjsKLSAgICBbd2ViVmlldyBfY291bnRTdHJpbmdNYXRjaGVzOmV4cGVjdGVk
U3RyaW5nIG9wdGlvbnM6MCBtYXhDb3VudDptYXhDb3VudF07Ci0gICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmUpOwotCi0gICAgRVhQRUNUX0VRKDFVLCBbZmluZERlbGVnYXRlIG1h
dGNoZXNDb3VudF0pOwotICAgIEVYUEVDVF9GQUxTRShbZmluZERlbGVnYXRlIGRpZEZhaWxdKTsK
LSAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWRTdHJpbmcsIFtmaW5kRGVsZWdhdGUgZmluZFN0
cmluZ10pOwotfQotCi1URVNUKFdLUERGVmlldywgQ291bnRTdHJpbmdNaXNzaW5nKQotewotICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRdKTsKLSAgICBh
dXRvIGZpbmREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0RmluZERlbGVnYXRlIGFsbG9jXSBpbml0
XSk7Ci0gICAgbG9hZFdlYlZpZXcod2ViVmlldy5nZXQoKSwgZmluZERlbGVnYXRlLmdldCgpKTsK
LQotICAgIE5TU3RyaW5nICpleHBlY3RlZFN0cmluZyA9IEAiT25lIjsKLSAgICBbd2ViVmlldyBf
Y291bnRTdHJpbmdNYXRjaGVzOmV4cGVjdGVkU3RyaW5nIG9wdGlvbnM6MCBtYXhDb3VudDptYXhD
b3VudF07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotCi0gICAgRVhQ
RUNUX0VRKDBVLCBbZmluZERlbGVnYXRlIG1hdGNoZXNDb3VudF0pOwotICAgIEVYUEVDVF9GQUxT
RShbZmluZERlbGVnYXRlIGRpZEZhaWxdKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWRT
dHJpbmcsIFtmaW5kRGVsZWdhdGUgZmluZFN0cmluZ10pOwotfQotCi1URVNUKFdLUERGVmlldywg
Q291bnRTdHJpbmdDYXNlSW5zZW5zaXRpdmUpCi17Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gZmluZERlbGVnYXRlID0gYWRv
cHROUyhbW1Rlc3RGaW5kRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICBsb2FkV2ViVmlldyh3
ZWJWaWV3LmdldCgpLCBmaW5kRGVsZWdhdGUuZ2V0KCkpOwotCi0gICAgTlNTdHJpbmcgKmV4cGVj
dGVkU3RyaW5nID0gQCJ0IjsKLSAgICBbd2ViVmlldyBfY291bnRTdHJpbmdNYXRjaGVzOmV4cGVj
dGVkU3RyaW5nIG9wdGlvbnM6X1dLRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUgbWF4Q291bnQ6
bWF4Q291bnRdOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLQotICAg
IEVYUEVDVF9FUSg1VSwgW2ZpbmREZWxlZ2F0ZSBtYXRjaGVzQ291bnRdKTsKLSAgICBFWFBFQ1Rf
RkFMU0UoW2ZpbmREZWxlZ2F0ZSBkaWRGYWlsXSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVj
dGVkU3RyaW5nLCBbZmluZERlbGVnYXRlIGZpbmRTdHJpbmddKTsKLX0KLQotVEVTVChXS1BERlZp
ZXcsIEZpbmRTdHJpbmcpCi17Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8gZmluZERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RG
aW5kRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICBsb2FkV2ViVmlldyh3ZWJWaWV3LmdldCgp
LCBmaW5kRGVsZWdhdGUuZ2V0KCkpOwotCi0gICAgTlNTdHJpbmcgKmV4cGVjdGVkU3RyaW5nID0g
QCJvbmUiOwotICAgIFt3ZWJWaWV3IF9maW5kU3RyaW5nOmV4cGVjdGVkU3RyaW5nIG9wdGlvbnM6
MCBtYXhDb3VudDptYXhDb3VudF07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0Rv
bmUpOwotCi0gICAgRVhQRUNUX0VRKDFVLCBbZmluZERlbGVnYXRlIG1hdGNoZXNDb3VudF0pOwot
ICAgIEVYUEVDVF9FUSgwLCBbZmluZERlbGVnYXRlIG1hdGNoSW5kZXhdKTsKLSAgICBFWFBFQ1Rf
RkFMU0UoW2ZpbmREZWxlZ2F0ZSBkaWRGYWlsXSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVj
dGVkU3RyaW5nLCBbZmluZERlbGVnYXRlIGZpbmRTdHJpbmddKTsKLX0KLQotVEVTVChXS1BERlZp
ZXcsIEZpbmRTdHJpbmdNaXNzaW5nKQotewotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIGZpbmREZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tUZXN0RmluZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgbG9hZFdlYlZpZXcod2ViVmll
dy5nZXQoKSwgZmluZERlbGVnYXRlLmdldCgpKTsKLQotICAgIE5TU3RyaW5nICpleHBlY3RlZFN0
cmluZyA9IEAiT25lIjsKLSAgICBbd2ViVmlldyBfZmluZFN0cmluZzpleHBlY3RlZFN0cmluZyBv
cHRpb25zOjAgbWF4Q291bnQ6bWF4Q291bnRdOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmaXNEb25lKTsKLQotICAgIEVYUEVDVF9UUlVFKFtmaW5kRGVsZWdhdGUgZGlkRmFpbF0pOwot
ICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3RlZFN0cmluZywgW2ZpbmREZWxlZ2F0ZSBmaW5kU3Ry
aW5nXSk7Ci19Ci0KLVRFU1QoV0tQREZWaWV3LCBGaW5kU3RyaW5nQ2FzZUluc2Vuc2l0aXZlKQot
ewotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRdKTsK
LSAgICBhdXRvIGZpbmREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0RmluZERlbGVnYXRlIGFsbG9j
XSBpbml0XSk7Ci0gICAgbG9hZFdlYlZpZXcod2ViVmlldy5nZXQoKSwgZmluZERlbGVnYXRlLmdl
dCgpKTsKLQotICAgIE5TU3RyaW5nICpleHBlY3RlZFN0cmluZyA9IEAidCI7Ci0gICAgW3dlYlZp
ZXcgX2ZpbmRTdHJpbmc6ZXhwZWN0ZWRTdHJpbmcgb3B0aW9uczpfV0tGaW5kT3B0aW9uc0Nhc2VJ
bnNlbnNpdGl2ZSBtYXhDb3VudDptYXhDb3VudF07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZpc0RvbmUpOwotCi0gICAgRVhQRUNUX0VRKDVVLCBbZmluZERlbGVnYXRlIG1hdGNoZXND
b3VudF0pOwotICAgIEVYUEVDVF9FUSgwLCBbZmluZERlbGVnYXRlIG1hdGNoSW5kZXhdKTsKLSAg
ICBFWFBFQ1RfRkFMU0UoW2ZpbmREZWxlZ2F0ZSBkaWRGYWlsXSk7Ci0gICAgRVhQRUNUX1dLX1NU
UkVRKGV4cGVjdGVkU3RyaW5nLCBbZmluZERlbGVnYXRlIGZpbmRTdHJpbmddKTsKLQotICAgIGlz
RG9uZSA9IE5POwotICAgIFt3ZWJWaWV3IF9maW5kU3RyaW5nOmV4cGVjdGVkU3RyaW5nIG9wdGlv
bnM6X1dLRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUgbWF4Q291bnQ6bWF4Q291bnRdOwotICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLQotICAgIEVYUEVDVF9FUSg1VSwg
W2ZpbmREZWxlZ2F0ZSBtYXRjaGVzQ291bnRdKTsKLSAgICBFWFBFQ1RfRVEoMSwgW2ZpbmREZWxl
Z2F0ZSBtYXRjaEluZGV4XSk7Ci0gICAgRVhQRUNUX0ZBTFNFKFtmaW5kRGVsZWdhdGUgZGlkRmFp
bF0pOwotICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3RlZFN0cmluZywgW2ZpbmREZWxlZ2F0ZSBm
aW5kU3RyaW5nXSk7Ci0KLSAgICBpc0RvbmUgPSBOTzsKLSAgICBbd2ViVmlldyBfZmluZFN0cmlu
ZzpleHBlY3RlZFN0cmluZyBvcHRpb25zOl9XS0ZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZlIHwg
X1dLRmluZE9wdGlvbnNCYWNrd2FyZHMgbWF4Q291bnQ6bWF4Q291bnRdOwotICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLQotICAgIEVYUEVDVF9FUSg1VSwgW2ZpbmREZWxl
Z2F0ZSBtYXRjaGVzQ291bnRdKTsKLSAgICBFWFBFQ1RfRVEoMCwgW2ZpbmREZWxlZ2F0ZSBtYXRj
aEluZGV4XSk7Ci0gICAgRVhQRUNUX0ZBTFNFKFtmaW5kRGVsZWdhdGUgZGlkRmFpbF0pOwotICAg
IEVYUEVDVF9XS19TVFJFUShleHBlY3RlZFN0cmluZywgW2ZpbmREZWxlZ2F0ZSBmaW5kU3RyaW5n
XSk7Ci19Ci0KLVRFU1QoV0tQREZWaWV3LCBGaW5kU3RyaW5nQmFja3dhcmQpCi17Ci0gICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdF0pOwotICAgIGF1dG8g
ZmluZERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RGaW5kRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsK
LSAgICBsb2FkV2ViVmlldyh3ZWJWaWV3LmdldCgpLCBmaW5kRGVsZWdhdGUuZ2V0KCkpOwotCi0g
ICAgTlNTdHJpbmcgKmV4cGVjdGVkU3RyaW5nID0gQCJ0IjsKLSAgICBbd2ViVmlldyBfZmluZFN0
cmluZzpleHBlY3RlZFN0cmluZyBvcHRpb25zOl9XS0ZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZl
IHwgX1dLRmluZE9wdGlvbnNCYWNrd2FyZHMgbWF4Q291bnQ6bWF4Q291bnRdOwotICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLQotICAgIEVYUEVDVF9FUSg1VSwgW2ZpbmRE
ZWxlZ2F0ZSBtYXRjaGVzQ291bnRdKTsKLSAgICBFWFBFQ1RfRVEoNCwgW2ZpbmREZWxlZ2F0ZSBt
YXRjaEluZGV4XSk7Ci0gICAgRVhQRUNUX0ZBTFNFKFtmaW5kRGVsZWdhdGUgZGlkRmFpbF0pOwot
ICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3RlZFN0cmluZywgW2ZpbmREZWxlZ2F0ZSBmaW5kU3Ry
aW5nXSk7Ci0KLSAgICBpc0RvbmUgPSBOTzsKLSAgICBbd2ViVmlldyBfZmluZFN0cmluZzpleHBl
Y3RlZFN0cmluZyBvcHRpb25zOl9XS0ZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZlIHwgX1dLRmlu
ZE9wdGlvbnNCYWNrd2FyZHMgbWF4Q291bnQ6bWF4Q291bnRdOwotICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKLQotICAgIEVYUEVDVF9FUSg1VSwgW2ZpbmREZWxlZ2F0ZSBt
YXRjaGVzQ291bnRdKTsKLSAgICBFWFBFQ1RfRVEoMywgW2ZpbmREZWxlZ2F0ZSBtYXRjaEluZGV4
XSk7Ci0gICAgRVhQRUNUX0ZBTFNFKFtmaW5kRGVsZWdhdGUgZGlkRmFpbF0pOwotICAgIEVYUEVD
VF9XS19TVFJFUShleHBlY3RlZFN0cmluZywgW2ZpbmREZWxlZ2F0ZSBmaW5kU3RyaW5nXSk7Ci0K
LSAgICBpc0RvbmUgPSBOTzsKLSAgICBbd2ViVmlldyBfZmluZFN0cmluZzpleHBlY3RlZFN0cmlu
ZyBvcHRpb25zOl9XS0ZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZlIG1heENvdW50Om1heENvdW50
XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0KLSAgICBFWFBFQ1Rf
RVEoNVUsIFtmaW5kRGVsZWdhdGUgbWF0Y2hlc0NvdW50XSk7Ci0gICAgRVhQRUNUX0VRKDQsIFtm
aW5kRGVsZWdhdGUgbWF0Y2hJbmRleF0pOwotICAgIEVYUEVDVF9GQUxTRShbZmluZERlbGVnYXRl
IGRpZEZhaWxdKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWRTdHJpbmcsIFtmaW5kRGVs
ZWdhdGUgZmluZFN0cmluZ10pOwotfQotCi1URVNUKFdLUERGVmlldywgRmluZFN0cmluZ1Bhc3RF
bmQpCi17Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dF0pOwotICAgIGF1dG8gZmluZERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RGaW5kRGVsZWdhdGUg
YWxsb2NdIGluaXRdKTsKLSAgICBsb2FkV2ViVmlldyh3ZWJWaWV3LmdldCgpLCBmaW5kRGVsZWdh
dGUuZ2V0KCkpOwotCi0gICAgTlNTdHJpbmcgKmV4cGVjdGVkU3RyaW5nID0gQCJ0d28iOwotICAg
IFt3ZWJWaWV3IF9maW5kU3RyaW5nOmV4cGVjdGVkU3RyaW5nIG9wdGlvbnM6X1dLRmluZE9wdGlv
bnNDYXNlSW5zZW5zaXRpdmUgbWF4Q291bnQ6bWF4Q291bnRdOwotICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKLQotICAgIEVYUEVDVF9FUSgyVSwgW2ZpbmREZWxlZ2F0ZSBt
YXRjaGVzQ291bnRdKTsKLSAgICBFWFBFQ1RfRVEoMCwgW2ZpbmREZWxlZ2F0ZSBtYXRjaEluZGV4
XSk7Ci0gICAgRVhQRUNUX0ZBTFNFKFtmaW5kRGVsZWdhdGUgZGlkRmFpbF0pOwotICAgIEVYUEVD
VF9XS19TVFJFUShleHBlY3RlZFN0cmluZywgW2ZpbmREZWxlZ2F0ZSBmaW5kU3RyaW5nXSk7Ci0K
LSAgICBpc0RvbmUgPSBOTzsKLSAgICBbd2ViVmlldyBfZmluZFN0cmluZzpleHBlY3RlZFN0cmlu
ZyBvcHRpb25zOl9XS0ZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZlIG1heENvdW50Om1heENvdW50
XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0KLSAgICBFWFBFQ1Rf
RVEoMlUsIFtmaW5kRGVsZWdhdGUgbWF0Y2hlc0NvdW50XSk7Ci0gICAgRVhQRUNUX0VRKDEsIFtm
aW5kRGVsZWdhdGUgbWF0Y2hJbmRleF0pOwotICAgIEVYUEVDVF9GQUxTRShbZmluZERlbGVnYXRl
IGRpZEZhaWxdKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWRTdHJpbmcsIFtmaW5kRGVs
ZWdhdGUgZmluZFN0cmluZ10pOwotCi0gICAgaXNEb25lID0gTk87Ci0gICAgW3dlYlZpZXcgX2Zp
bmRTdHJpbmc6ZXhwZWN0ZWRTdHJpbmcgb3B0aW9uczpfV0tGaW5kT3B0aW9uc0Nhc2VJbnNlbnNp
dGl2ZSBtYXhDb3VudDptYXhDb3VudF07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZp
c0RvbmUpOwotCi0gICAgRVhQRUNUX1RSVUUoW2ZpbmREZWxlZ2F0ZSBkaWRGYWlsXSk7Ci0gICAg
RVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVkU3RyaW5nLCBbZmluZERlbGVnYXRlIGZpbmRTdHJpbmdd
KTsKLX0KLQotVEVTVChXS1BERlZpZXcsIEZpbmRTdHJpbmdCYWNrd2FyZFBhc3RTdGFydCkKLXsK
LSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0XSk7Ci0g
ICAgYXV0byBmaW5kRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEZpbmREZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOwotICAgIGxvYWRXZWJWaWV3KHdlYlZpZXcuZ2V0KCksIGZpbmREZWxlZ2F0ZS5nZXQo
KSk7Ci0KLSAgICBOU1N0cmluZyAqZXhwZWN0ZWRTdHJpbmcgPSBAInR3byI7Ci0gICAgW3dlYlZp
ZXcgX2ZpbmRTdHJpbmc6ZXhwZWN0ZWRTdHJpbmcgb3B0aW9uczpfV0tGaW5kT3B0aW9uc0Nhc2VJ
bnNlbnNpdGl2ZSB8IF9XS0ZpbmRPcHRpb25zQmFja3dhcmRzIG1heENvdW50Om1heENvdW50XTsK
LSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0KLSAgICBFWFBFQ1RfRVEo
MlUsIFtmaW5kRGVsZWdhdGUgbWF0Y2hlc0NvdW50XSk7Ci0gICAgRVhQRUNUX0VRKDEsIFtmaW5k
RGVsZWdhdGUgbWF0Y2hJbmRleF0pOwotICAgIEVYUEVDVF9GQUxTRShbZmluZERlbGVnYXRlIGRp
ZEZhaWxdKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWRTdHJpbmcsIFtmaW5kRGVsZWdh
dGUgZmluZFN0cmluZ10pOwotCi0gICAgaXNEb25lID0gTk87Ci0gICAgW3dlYlZpZXcgX2ZpbmRT
dHJpbmc6ZXhwZWN0ZWRTdHJpbmcgb3B0aW9uczpfV0tGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2
ZSB8IF9XS0ZpbmRPcHRpb25zQmFja3dhcmRzIG1heENvdW50Om1heENvdW50XTsKLSAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0KLSAgICBFWFBFQ1RfRVEoMlUsIFtmaW5k
RGVsZWdhdGUgbWF0Y2hlc0NvdW50XSk7Ci0gICAgRVhQRUNUX0VRKDAsIFtmaW5kRGVsZWdhdGUg
bWF0Y2hJbmRleF0pOwotICAgIEVYUEVDVF9GQUxTRShbZmluZERlbGVnYXRlIGRpZEZhaWxdKTsK
LSAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWRTdHJpbmcsIFtmaW5kRGVsZWdhdGUgZmluZFN0
cmluZ10pOwotCi0gICAgaXNEb25lID0gTk87Ci0gICAgW3dlYlZpZXcgX2ZpbmRTdHJpbmc6ZXhw
ZWN0ZWRTdHJpbmcgb3B0aW9uczpfV0tGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSB8IF9XS0Zp
bmRPcHRpb25zQmFja3dhcmRzIG1heENvdW50Om1heENvdW50XTsKLSAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShbZmluZERlbGVnYXRlIGRp
ZEZhaWxdKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWRTdHJpbmcsIFtmaW5kRGVsZWdh
dGUgZmluZFN0cmluZ10pOwotfQotCi0jZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>