<?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>132417</bug_id>
          
          <creation_ts>2014-04-30 17:57:57 -0700</creation_ts>
          <short_desc>[iOS WebKit2] Swipe snapshots should be taken asynchronously</short_desc>
          <delta_ts>2014-05-05 09:31:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>aestes</cc>
    
    <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>psolanki</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1005615</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-30 17:57:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/16535921&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005622</commentid>
    <comment_count>1</comment_count>
      <attachid>230552</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-30 18:31:23 -0700</bug_when>
    <thetext>Created attachment 230552
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005623</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-30 18:32:58 -0700</bug_when>
    <thetext>Attachment 230552 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/mac/ViewSnapshotStore.mm:73:  Missing space before {  [whitespace/braces] [5]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1006084</commentid>
    <comment_count>3</comment_count>
      <attachid>230552</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-05-02 12:16:45 -0700</bug_when>
    <thetext>Comment on attachment 230552
patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:495
&gt; +- (void)_takeViewSnapshot:(WebKit::ViewSnapshot&amp;)snapshot

I think this should return a ViewSnapshot instead.

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:3040
&gt; +- (void)_takeViewSnapshot:(ViewSnapshot&amp;)snapshot

I think this should return a ViewSnapshot.

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:3074
&gt; +    RetainPtr&lt;CGImageRef&gt; croppedSnapshotImage = adoptCF(CGImageCreateWithImageInRect(windowSnapshotImage.get(), NSRectToCGRect([window convertRectToBacking:croppedImageRect])));

auto?

&gt; Source/WebKit2/UIProcess/API/mac/WKViewInternal.h:41
&gt; +struct KeypressCommand;

I think structs should come after the classes.

&gt; Source/WebKit2/UIProcess/WebMemoryPressureHandler.cpp:40
&gt; +    NeverDestroyed&lt;WebMemoryPressureHandler&gt; memoryPressureHandler;

This should be static.

&gt; Source/WebKit2/UIProcess/WebMemoryPressureHandler.cpp:48
&gt; +WebMemoryPressureHandler::WebMemoryPressureHandler()
&gt; +{
&gt; +    memoryPressureHandler().setLowMemoryHandler(handleLowMemory);
&gt; +    memoryPressureHandler().install();
&gt; +}

How does this interact with WebKit1 and coexistence on iOS?

&gt; Source/WebKit2/UIProcess/WebMemoryPressureHandler.h:33
&gt; +    static WebMemoryPressureHandler&amp; ensureSharedHandler();

I think this should just be called shared().

&gt; Source/WebKit2/UIProcess/WebMemoryPressureHandler.h:37
&gt; +    static void handleLowMemory(bool);

This can probably be a lambda.

&gt; Source/WebKit2/UIProcess/mac/ViewSnapshotStore.h:48
&gt; +    uint32_t slot;

I think this should be called slotID. If you want you can just assign = 0 here and not bother with the constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1006568</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-05-05 00:38:43 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/168260</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1006649</commentid>
    <comment_count>5</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-05-05 09:31:36 -0700</bug_when>
    <thetext>Build fixes landed in r168276 and r168289.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230552</attachid>
            <date>2014-04-30 18:31:23 -0700</date>
            <delta_ts>2014-05-02 12:16:44 -0700</delta_ts>
            <desc>patch</desc>
            <filename>snapshot.diff</filename>
            <type>text/plain</type>
            <size>38589</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3MjdkZTAxLi41Y2ZlODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTAg
QEAKKzIwMTQtMDQtMzAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW2lPUyBXZWJLaXQyXSBTd2lwZSBzbmFwc2hvdHMgc2hvdWxkIGJlIHRha2VuIGFz
eW5jaHJvbm91c2x5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzI0MTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2NTM1OTIxPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlb3JnYW5pemUgdGFrZVZp
ZXdTbmFwc2hvdCB0byBwdXNoIHRoZSBWaWV3U25hcHNob3QgZG93biBmcm9tIHRoZQorICAgICAg
ICBWaWV3U25hcHNob3RTdG9yZSwgYW5kIHBsYWNlIHRoZSBpbWFnZSAoc3VyZmFjZSBvciBzbG90
KSBkaXJlY3RseSBpbnRvIGl0LgorCisgICAgICAgIE1ha2UgVmlld1NuYXBzaG90U3RvcmUgdXNl
IGEgZml4ZWQgc2l6ZSBpbnN0ZWFkIG9mIGNvdW50IGZvciB0aGUgc25hcHNob3QgY2FjaGUuCisg
ICAgICAgIGlPUyBkb2Vzbid0IHVzZSBwdXJnZWFibGUgc25hcHNob3RzLCBzbyBtYWtlIHRoZSBj
YWNoZSBtdWNoIHNtYWxsZXIgdGhlcmUuCisKKyAgICAgICAgVXNlIENBUmVuZGVyU2VydmVyQ2Fw
dHVyZUxheWVyV2l0aFRyYW5zZm9ybSB0byBhY2hpZXZlIGFzeW5jIHNuYXBzaG90dGluZy4KKwor
ICAgICAgICBSZW5hbWUgV2ViS2l0OjpWaWV3U25hcHNob3RTdG9yZTo6U25hcHNob3QgdG8gV2Vi
S2l0OjpWaWV3U25hcHNob3Qgc28gdGhhdAorICAgICAgICBpdCBjYW4gYmUgZm9yd2FyZC1kZWNs
YXJlZCBpbiBhIGJ1bmNoIG9mIHBsYWNlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rha2VWaWV3U25hcHNob3Q6
XSk6CisgICAgICAgIFVzZSBDQVJlbmRlclNlcnZlckNhcHR1cmVMYXllcldpdGhUcmFuc2Zvcm0u
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlSU9T
dXJmYWNlRnJvbUltYWdlKToKKyAgICAgICAgKC1bV0tWaWV3IF90YWtlVmlld1NuYXBzaG90Ol0p
OgorICAgICAgICBBZGp1c3QgdG8gdGhlIG5ldyBwdXNoIG1vZGVsLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFn
ZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRha2VWaWV3U25hcHNob3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnRha2VWaWV3U25hcHNob3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50
SW1wbDo6dGFrZVZpZXdTbmFwc2hvdCk6CisgICAgICAgIFBsdW1iaW5nLgorCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXZWJL
aXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUpOgorICAgICAgICAo
V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZFN3aXBlR2VzdHVyZSk6CisgICAgICAg
IFJlYWxpemUgYW4gb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgYXMgdGhlIGxheWVyIGNvbnRlbnRz
IGZyb20gdGhlIHNsb3QgSUQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpzaGFyZWRIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVtb3J5UHJlc3N1cmVIYW5k
bGVyOjpXZWJNZW1vcnlQcmVzc3VyZUhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OmhhbmRsZUxvd01lbW9yeSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYk1lbW9yeVByZXNzdXJlSGFuZGxlci5oOgorICAgICAgICBBZGQgYSBtZW1vcnkgcHJlc3N1
cmUgaGFuZGxlciBmb3IgdGhlIFVJIHByb2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcu
bW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3Rha2VWaWV3U25hcHNob3RdKTogRGVsZXRl
ZC4KKyAgICAgICAgR2V0IHJpZCBvZiBhbiB1bm5lY2Vzc2FyeSBib3VuY2UgdGhyb3VnaCBXS0Nv
bnRlbnRWaWV3LgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmV0cmll
dmVTbmFwc2hvdEZvckl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OmVuZFN3aXBlR2VzdHVyZSk6CisgICAgICAgIFVzZSB0aGUgbmV3IG5hbWUsIFZpZXdTbmFw
c2hvdC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUuaDoKKyAg
ICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90OjpWaWV3U25hcHNob3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdT
bmFwc2hvdFN0b3JlOjpWaWV3U25hcHNob3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdT
bmFwc2hvdFN0b3JlOjp+Vmlld1NuYXBzaG90U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3
U25hcHNob3RTdG9yZTo6c25hcHNob3R0aW5nQ29udGV4dCk6CisgICAgICAgIFVzZSBhIGN1c3Rv
bSBDQUNvbnRleHQgZm9yIHNuYXBzaG90dGluZyBzbyB0aGF0IHNuYXBzaG90cyBkb24ndAorICAg
ICAgICBkaXNhcHBlYXIgd2hlbiB0aGUgbWFpbiBjb250ZXh0IGlzIGRlc3Ryb3llZCBvbiBoaWJl
cm5hdGlvbi4KKworICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3RTdG9yZTo6cmVtb3ZlU25h
cHNob3RJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjpwcnVuZVNu
YXBzaG90cyk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjpyZWNvcmRTbmFw
c2hvdCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjpnZXRTbmFwc2hvdCk6
CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjpkaXNjYXJkU25hcHNob3RzKToK
KyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90OjpjbGVhckltYWdlKToKKyAgICAgICAgKFdl
YktpdDo6Vmlld1NuYXBzaG90OjpoYXNJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZUlP
U3VyZmFjZUZyb21JbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hv
dFN0b3JlOjpTbmFwc2hvdDo6Y2xlYXJJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlZpZXdTbmFwc2hvdFN0b3JlOjpTbmFwc2hvdDo6aGFzSW1hZ2UpOiBEZWxldGVkLgorICAgICAg
ICBDYWNoZSBieSBpbWFnZSBzaXplIGluc3RlYWQgb2YgY291bnRzLgorCisgICAgICAgICogV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE0LTA0LTI5ICBUaW0gSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMDRm
NTRjNy4uNWIzNzBjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIlJlbW90ZU9iamVjdFJl
Z2lzdHJ5TWVzc2FnZXMuaCIKICNpbXBvcnQgIlVJRGVsZWdhdGUuaCIKICNpbXBvcnQgIlZpZXdH
ZXN0dXJlQ29udHJvbGxlci5oIgorI2ltcG9ydCAiVmlld1NuYXBzaG90U3RvcmUuaCIKICNpbXBv
cnQgIldLQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQmFja0ZvcndhcmRM
aXN0SXRlbUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVy
bmFsLmgiCkBAIC01NCw2ICs1NSw3IEBACiAjaW1wb3J0ICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIK
ICNpbXBvcnQgIldlYkNvbnRleHQuaCIKICNpbXBvcnQgIldlYkZvcm1TdWJtaXNzaW9uTGlzdGVu
ZXJQcm94eS5oIgorI2ltcG9ydCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJX
ZWJQYWdlR3JvdXAuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJv
Y2Vzc1Byb3h5LmgiCkBAIC02OSw2ICs3MSw4IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdDb250ZW50
UHJvdmlkZXJSZWdpc3RyeS5oIgogI2ltcG9ydCA8Q29yZUdyYXBoaWNzL0NHRmxvYXQuaD4KICNp
bXBvcnQgPFVJS2l0L1VJUGVyaXBoZXJhbEhvc3RfUHJpdmF0ZS5oPgorI2ltcG9ydCA8UXVhcnR6
Q29yZS9DQVJlbmRlclNlcnZlci5oPgorI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlUHJp
dmF0ZS5oPgogCiBAaW50ZXJmYWNlIFVJU2Nyb2xsVmlldyAoVUlTY3JvbGxWaWV3SW50ZXJuYWwp
CiAtICh2b2lkKV9hZGp1c3RGb3JBdXRvbWF0aWNLZXlib2FyZEluZm86KE5TRGljdGlvbmFyeSop
aW5mbyBhbmltYXRlZDooQk9PTClhbmltYXRlZCBsYXN0QWRqdXN0bWVudDooQ0dGbG9hdCopbGFz
dEFkanVzdG1lbnQ7CkBAIC00ODgsMTQgKzQ5MiwxOSBAQCBzdGF0aWMgQ0dGbG9hdCBjb250ZW50
Wm9vbVNjYWxlKFdLV2ViVmlldyogd2ViVmlldykKICAgICB9CiB9CiAKLS0gKFJldGFpblB0cjxD
R0ltYWdlUmVmPilfdGFrZVZpZXdTbmFwc2hvdAorLSAodm9pZClfdGFrZVZpZXdTbmFwc2hvdDoo
V2ViS2l0OjpWaWV3U25hcHNob3QmKXNuYXBzaG90CiB7Ci0gICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBiZSBhYmxlIHRvIHVzZSBhY3F1aXJlIGFuIElPU3VyZmFjZSBkaXJlY3RseSwgaW5zdGVhZCBv
ZiBnb2luZyB0byBDR0ltYWdlIGhlcmUgYW5kIGJhY2sgaW4gVmlld1NuYXBzaG90U3RvcmUuCi0g
ICAgVUlHcmFwaGljc0JlZ2luSW1hZ2VDb250ZXh0V2l0aE9wdGlvbnMoc2VsZi5ib3VuZHMuc2l6
ZSwgWUVTLCBzZWxmLndpbmRvdy5zY3JlZW4uc2NhbGUpOwotICAgIFtzZWxmIGRyYXdWaWV3SGll
cmFyY2h5SW5SZWN0OltzZWxmIGJvdW5kc10gYWZ0ZXJTY3JlZW5VcGRhdGVzOk5PXTsKLSAgICBV
SUltYWdlICppbWFnZSA9IFVJR3JhcGhpY3NHZXRJbWFnZUZyb21DdXJyZW50SW1hZ2VDb250ZXh0
KCk7Ci0gICAgVUlHcmFwaGljc0VuZEltYWdlQ29udGV4dCgpOwotICAgIHJldHVybiBpbWFnZS5D
R0ltYWdlOworICAgIGZsb2F0IGRldmljZVNjYWxlID0gd2tHZXRTY3JlZW5TY2FsZUZhY3Rvcigp
OworICAgIENHU2l6ZSBzbmFwc2hvdFNpemUgPSBzZWxmLmJvdW5kcy5zaXplOworICAgIHNuYXBz
aG90U2l6ZS53aWR0aCAqPSBkZXZpY2VTY2FsZTsKKyAgICBzbmFwc2hvdFNpemUuaGVpZ2h0ICo9
IGRldmljZVNjYWxlOworCisgICAgc25hcHNob3Quc2xvdCA9IFtXZWJLaXQ6OlZpZXdTbmFwc2hv
dFN0b3JlOjpzbmFwc2hvdHRpbmdDb250ZXh0KCkgY3JlYXRlSW1hZ2VTbG90OnNuYXBzaG90U2l6
ZSBoYXNBbHBoYTpZRVNdOworCisgICAgQ0FUcmFuc2Zvcm0zRCB0cmFuc2Zvcm0gPSBDQVRyYW5z
Zm9ybTNETWFrZVNjYWxlKGRldmljZVNjYWxlLCBkZXZpY2VTY2FsZSwgMSk7CisgICAgQ0FSZW5k
ZXJTZXJ2ZXJDYXB0dXJlTGF5ZXJXaXRoVHJhbnNmb3JtKE1BQ0hfUE9SVF9OVUxMLCBzZWxmLmxh
eWVyLmNvbnRleHQuY29udGV4dElkLCAodWludDY0X3Qpc2VsZi5sYXllciwgc25hcHNob3Quc2xv
dCwgMCwgMCwgJnRyYW5zZm9ybSk7CisKKyAgICBzbmFwc2hvdC5pbWFnZVNpemVJbkJ5dGVzID0g
c25hcHNob3RTaXplLndpZHRoICogc25hcHNob3RTaXplLmhlaWdodCAqIDQ7CiB9CiAKIC0gKHZv
aWQpX3pvb21Ub1BvaW50OihXZWJDb3JlOjpGbG9hdFBvaW50KXBvaW50IGF0U2NhbGU6KGRvdWJs
ZSlzY2FsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDVlNjY5ZmEuLmYxZWVkNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgK
QEAgLTQ2LDYgKzQ2LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlUHJv
eHk7CitzdHJ1Y3QgVmlld1NuYXBzaG90OwogfQogCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAoKSBX
S19XRUJfVklFV19QUk9UT0NPTFMgewpAQCAtNjEsNyArNjIsNyBAQCBjbGFzcyBXZWJQYWdlUHJv
eHk7CiAKIC0gKHZvaWQpX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZUNoYW5nZWRUYXJnZXRUb1NjYWxl
Oihkb3VibGUpbmV3U2NhbGUgcG9zaXRpb246KENHUG9pbnQpbmV3U2Nyb2xsUG9zaXRpb247CiAK
LS0gKFJldGFpblB0cjxDR0ltYWdlUmVmPilfdGFrZVZpZXdTbmFwc2hvdDsKKy0gKHZvaWQpX3Rh
a2VWaWV3U25hcHNob3Q6KFdlYktpdDo6Vmlld1NuYXBzaG90JilzbmFwc2hvdDsKIAogLSAodm9p
ZClfc2Nyb2xsVG9Db250ZW50T2Zmc2V0OihXZWJDb3JlOjpGbG9hdFBvaW50KWNvbnRlbnRPZmZz
ZXQ7CiAtIChCT09MKV9zY3JvbGxUb1JlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjdCl0YXJnZXRSZWN0
IG9yaWdpbjooV2ViQ29yZTo6RmxvYXRQb2ludClvcmlnaW4gbWluaW11bVNjcm9sbERpc3RhbmNl
OihmbG9hdCltaW5pbXVtU2Nyb2xsRGlzdGFuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0KaW5kZXggNjk4MDk0MC4uODQ0OGFlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtMzAyNCwxMiArMzAyNCwyNSBAQCBz
dGF0aWMgdm9pZCBjcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQoTlNQYXN0ZWJv
YXJkICpwYXN0ZWJvYXJkLCBTYW5kYgogICAgIHJldHVybiBfZGF0YS0+X3Jvb3RMYXllci5nZXQo
KTsKIH0KIAotLSAoUmV0YWluUHRyPENHSW1hZ2VSZWY+KV90YWtlVmlld1NuYXBzaG90CitzdGF0
aWMgUmVmUHRyPElPU3VyZmFjZT4gY3JlYXRlSU9TdXJmYWNlRnJvbUltYWdlKENHSW1hZ2VSZWYg
aW1hZ2UpCit7CisgICAgc2l6ZV90IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlKTsKKyAg
ICBzaXplX3QgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZSk7CisKKyAgICBSZWZQdHI8
SU9TdXJmYWNlPiBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6ZSh3aWR0aCwgaGVp
Z2h0KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4g
c3VyZmFjZUNvbnRleHQgPSBzdXJmYWNlLT5lbnN1cmVQbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBD
R0NvbnRleHREcmF3SW1hZ2Uoc3VyZmFjZUNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwg
d2lkdGgsIGhlaWdodCksIGltYWdlKTsKKyAgICBDR0NvbnRleHRGbHVzaChzdXJmYWNlQ29udGV4
dC5nZXQoKSk7CisKKyAgICByZXR1cm4gc3VyZmFjZTsKK30KKworLSAodm9pZClfdGFrZVZpZXdT
bmFwc2hvdDooVmlld1NuYXBzaG90JilzbmFwc2hvdAogewogICAgIE5TV2luZG93ICp3aW5kb3cg
PSBzZWxmLndpbmRvdzsKIAogICAgIGlmICghW3dpbmRvdyB3aW5kb3dOdW1iZXJdKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIHVzZSBDR1dpbmRvd0xpc3RDcmVhdGVJbWFnZSBvbmNlIDxyZGFyOi8vcHJvYmxlbS8x
NTcwOTY0Nj4gaXMgcmVzb2x2ZWQuCiAgICAgQ0dTV2luZG93SUQgd2luZG93SUQgPSBbd2luZG93
IHdpbmRvd051bWJlcl07CkBAIC0zMDU4LDcgKzMwNzEsOSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVT
YW5kYm94RXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBT
YW5kYgogICAgIE5TUmVjdCBjcm9wcGVkSW1hZ2VSZWN0ID0gd2luZG93Q2FwdHVyZVJlY3Q7CiAg
ICAgY3JvcHBlZEltYWdlUmVjdC5vcmlnaW4ueSA9IHdpbmRvd1NjcmVlblJlY3Quc2l6ZS5oZWln
aHQgLSB3aW5kb3dDYXB0dXJlU2NyZWVuUmVjdC5zaXplLmhlaWdodCAtIE5TTWluWSh3aW5kb3dD
YXB0dXJlUmVjdCk7CiAKLSAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdl
SW5SZWN0KHdpbmRvd1NuYXBzaG90SW1hZ2UuZ2V0KCksIE5TUmVjdFRvQ0dSZWN0KFt3aW5kb3cg
Y29udmVydFJlY3RUb0JhY2tpbmc6Y3JvcHBlZEltYWdlUmVjdF0pKSk7CisgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IGNyb3BwZWRTbmFwc2hvdEltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRl
V2l0aEltYWdlSW5SZWN0KHdpbmRvd1NuYXBzaG90SW1hZ2UuZ2V0KCksIE5TUmVjdFRvQ0dSZWN0
KFt3aW5kb3cgY29udmVydFJlY3RUb0JhY2tpbmc6Y3JvcHBlZEltYWdlUmVjdF0pKSk7CisgICAg
c25hcHNob3Quc3VyZmFjZSA9IGNyZWF0ZUlPU3VyZmFjZUZyb21JbWFnZShjcm9wcGVkU25hcHNo
b3RJbWFnZS5nZXQoKSk7CisgICAgc25hcHNob3QuaW1hZ2VTaXplSW5CeXRlcyA9IHNuYXBzaG90
LnN1cmZhY2UtPnRvdGFsQnl0ZXMoKTsKIH0KIAogLSAodm9pZClfd2hlZWxFdmVudFdhc05vdEhh
bmRsZWRCeVdlYkNvcmU6KE5TRXZlbnQgKilldmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKaW5kZXggZjhhNjNjOS4uNjBiODZkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJu
YWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5h
bC5oCkBAIC0zNCwxMyArMzQsMTMgQEAKIEBjbGFzcyBXS1dlYlZpZXdDb25maWd1cmF0aW9uOwog
CiBuYW1lc3BhY2UgSVBDIHsKLSAgICBjbGFzcyBEYXRhUmVmZXJlbmNlOworY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIHN0cnVjdCBLZXlwcmVzc0Nv
bW1hbmQ7Ci0gICAgY2xhc3MgSW1hZ2U7Ci0gICAgY2xhc3MgU2hhcmVkQnVmZmVyOworc3RydWN0
IEtleXByZXNzQ29tbWFuZDsKK2NsYXNzIEltYWdlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgTGF5ZXJUcmVlQ29u
dGV4dDsKIGNsYXNzIFdlYkNvbnRleHQ7CiBzdHJ1Y3QgQ29sb3JTcGFjZURhdGE7CiBzdHJ1Y3Qg
RWRpdG9yU3RhdGU7CitzdHJ1Y3QgVmlld1NuYXBzaG90Owogc3RydWN0IFdlYlBhZ2VDb25maWd1
cmF0aW9uOwogfQogCkBAIC04Miw3ICs4Myw3IEBAIHN0cnVjdCBXZWJQYWdlQ29uZmlndXJhdGlv
bjsKIC0gKHZvaWQpX3NldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyOihDQUxh
eWVyICopcm9vdExheWVyOwogLSAoQ0FMYXllciAqKV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZVJvb3RMYXllcjsKIAotLSAoUmV0YWluUHRyPENHSW1hZ2VSZWY+KV90YWtlVmlld1NuYXBzaG90
OworLSAodm9pZClfdGFrZVZpZXdTbmFwc2hvdDooV2ViS2l0OjpWaWV3U25hcHNob3QmKXNuYXBz
aG90OwogLSAodm9pZClfd2hlZWxFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmU6KE5TRXZlbnQg
KilldmVudDsKIAogLSAodm9pZClfc2V0QWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlbjooTlNE
YXRhICopZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDIzOTdj
OGIuLmVjNGJiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDYs
OCArNDYsOCBAQCBPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKICNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgQ3Vyc29yOwotICAgIHN0cnVjdCBWaWV3cG9ydEF0
dHJpYnV0ZXM7CitjbGFzcyBDdXJzb3I7CitzdHJ1Y3QgVmlld3BvcnRBdHRyaWJ1dGVzOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb247CiBjbGFzcyBXZWJDb250ZXh0TWVudVByb3h5OwogY2xhc3MgV2ViRWRp
dENvbW1hbmRQcm94eTsKIGNsYXNzIFdlYlBvcHVwTWVudVByb3h5Oworc3RydWN0IFZpZXdTbmFw
c2hvdDsKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiBjbGFzcyBOYXRpdmVXZWJUb3VjaEV2
ZW50OwpAQCAtMTc2LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbWFrZUZp
cnN0UmVzcG9uZGVyKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nUm9vdExheWVyKExheWVyT3JWaWV3ICopID0gMDsKICAgICB2aXJ0dWFsIExheWVyT3JW
aWV3ICphY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHRha2VWaWV3U25hcHNob3QoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHRha2VWaWV3U25hcHNob3QoVmlld1NuYXBzaG90JikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB3aGVlbEV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVX
ZWJXaGVlbEV2ZW50JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckN1c3RvbVN3aXBlVmll
d3MoKSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApp
bmRleCAyOGE4NDg0Li5lMzI0NjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHQuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiV2ViS2V5VmFsdWVTdG9yYWdlTWFu
YWdlci5oIgogI2luY2x1ZGUgIldlYktpdDJJbml0aWFsaXplLmgiCiAjaW5jbHVkZSAiV2ViTWVk
aWFDYWNoZU1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYk1lbW9yeVByZXNzdXJlSGFuZGxl
ci5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUg
IldlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgpA
QCAtMjA3LDYgKzIwOCw4IEBAIFdlYkNvbnRleHQ6OldlYkNvbnRleHQoY29uc3QgU3RyaW5nJiBp
bmplY3RlZEJ1bmRsZVBhdGgpCiAjZW5kaWYKIAogICAgIG1fc3RvcmFnZU1hbmFnZXItPnNldExv
Y2FsU3RvcmFnZURpcmVjdG9yeShsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7CisKKyAgICBXZWJL
aXQ6OldlYk1lbW9yeVByZXNzdXJlSGFuZGxlcjo6ZW5zdXJlU2hhcmVkSGFuZGxlcigpOwogfQog
CiAjaWYgIVBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYk1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5lNGQwNTkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYk1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTAsMCArMSw1NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuaCIKKworI2luY2x1ZGUgIlZpZXdTbmFwc2hvdFN0b3JlLmgiCisjaW5jbHVkZSAi
V2ViQ29udGV4dC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViTWVtb3J5UHJlc3N1cmVIYW5kbGVyJiBX
ZWJNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmVuc3VyZVNoYXJlZEhhbmRsZXIoKQoreworICAgIE5l
dmVyRGVzdHJveWVkPFdlYk1lbW9yeVByZXNzdXJlSGFuZGxlcj4gbWVtb3J5UHJlc3N1cmVIYW5k
bGVyOworICAgIHJldHVybiBtZW1vcnlQcmVzc3VyZUhhbmRsZXI7Cit9CisKK1dlYk1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6V2ViTWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkKK3sKKyAgICBtZW1vcnlQ
cmVzc3VyZUhhbmRsZXIoKS5zZXRMb3dNZW1vcnlIYW5kbGVyKGhhbmRsZUxvd01lbW9yeSk7Cisg
ICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkuaW5zdGFsbCgpOworfQorCit2b2lkIFdlYk1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6aGFuZGxlTG93TWVtb3J5KGJvb2wpCit7CisgICAgVmlld1NuYXBz
aG90U3RvcmU6OnNoYXJlZCgpLmRpc2NhcmRTbmFwc2hvdHMoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVtb3J5
UHJlc3N1cmVIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWEzMGI0
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJNZW1vcnlQcmVzc3VyZUhhbmRsZXJfaAorI2RlZmluZSBXZWJNZW1vcnlQcmVzc3VyZUhhbmRs
ZXJfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViTWVtb3J5UHJlc3N1cmVIYW5k
bGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV2ViTWVtb3J5UHJlc3N1cmVIYW5kbGVyJiBlbnN1
cmVTaGFyZWRIYW5kbGVyKCk7CisgICAgV2ViTWVtb3J5UHJlc3N1cmVIYW5kbGVyKCk7CisKK3By
aXZhdGU6CisgICAgc3RhdGljIHZvaWQgaGFuZGxlTG93TWVtb3J5KGJvb2wpOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJDb250ZXh0X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggY2QyNDVlOC4uYWEyMDRiMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTQ3MTMsOSArNDcx
Myw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3Qg
ZGljdGF0aW9uQ29udGV4dCwgVmVjdG9yPFN0cmluCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi1SZXRhaW5QdHI8Q0dJbWFnZVJlZj4gV2ViUGFnZVByb3h5
Ojp0YWtlVmlld1NuYXBzaG90KCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp0YWtlVmlld1NuYXBzaG90
KFZpZXdTbmFwc2hvdCYgc25hcHNob3QpCiB7Ci0gICAgcmV0dXJuIG1fcGFnZUNsaWVudC50YWtl
Vmlld1NuYXBzaG90KCk7CisgICAgcmV0dXJuIG1fcGFnZUNsaWVudC50YWtlVmlld1NuYXBzaG90
KHNuYXBzaG90KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggY2I4ZDMxMi4uMWIyOTE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtMTY3LDYgKzE2Nyw3IEBAIHN0cnVjdCBFZGl0aW5nUmFuZ2U7CiBz
dHJ1Y3QgRWRpdG9yU3RhdGU7CiBzdHJ1Y3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhOwogc3RydWN0
IFByaW50SW5mbzsKK3N0cnVjdCBWaWV3U25hcHNob3Q7CiBzdHJ1Y3QgV2ViUG9wdXBJdGVtOwog
CiAjaWYgRU5BQkxFKFZJQlJBVElPTikKQEAgLTEwNTIsNyArMTA1Myw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlY29yZE5hdmlnYXRpb25TbmFwc2hvdCgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHRha2VWaWV3U25hcHNob3QoKTsKKyAgICB2b2lk
IHRha2VWaWV3U25hcHNob3QoVmlld1NuYXBzaG90Jik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShT
VUJUTEVfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oCmluZGV4IDc1N2E1MzguLmE0MjM0NDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xMDAsNyArMTAwLDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIExheWVyT3JWaWV3ICphY2NlbGVyYXRlZENvbXBvc2l0
aW5nUm9vdExheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBMYXllckhvc3RpbmdN
b2RlIHZpZXdMYXllckhvc3RpbmdNb2RlKCkgb3ZlcnJpZGUgeyByZXR1cm4gTGF5ZXJIb3N0aW5n
TW9kZTo6T3V0T2ZQcm9jZXNzOyB9CiAKLSAgICB2aXJ0dWFsIFJldGFpblB0cjxDR0ltYWdlUmVm
PiB0YWtlVmlld1NuYXBzaG90KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHRha2VWaWV3
U25hcHNob3QoVmlld1NuYXBzaG90Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdoZWVs
RXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDdXN0b21Td2lwZVZpZXdzKCkgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tCmluZGV4IDY1N2IwMTIuLjMwNjgwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtMzQzLDkgKzM0Myw5IEBAIExh
eWVyT3JWaWV3ICpQYWdlQ2xpZW50SW1wbDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXll
cigpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJldGFpblB0cjxDR0ltYWdlUmVm
PiBQYWdlQ2xpZW50SW1wbDo6dGFrZVZpZXdTbmFwc2hvdCgpCit2b2lkIFBhZ2VDbGllbnRJbXBs
Ojp0YWtlVmlld1NuYXBzaG90KFZpZXdTbmFwc2hvdCYgc25hcHNob3QpCiB7Ci0gICAgcmV0dXJu
IFttX2NvbnRlbnRWaWV3IF90YWtlVmlld1NuYXBzaG90XTsKKyAgICByZXR1cm4gW21fd2ViVmll
dyBfdGFrZVZpZXdTbmFwc2hvdDpzbmFwc2hvdF07CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6
OndoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZl
bnQmIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQppbmRleCBkOTBiNDI0Li5lZDVjNWQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJv
bGxlcklPUy5tbQpAQCAtMzcsNyArMzcsNyBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAj
aW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+
Ci0jaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPFF1YXJ0ekNvcmUv
UXVhcnR6Q29yZVByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJU2NyZWVuRWRnZVBhbkdlc3R1
cmVSZWNvZ25pemVyLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVZpZXdDb250cm9sbGVyVHJhbnNpdGlv
bmluZ19Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJl
Y29nbml6ZXIuaD4KQEAgLTE1NCwxOSArMTU0LDEyIEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9s
bGVyOjpiZWdpblN3aXBlR2VzdHVyZShfVUlOYXZpZ2F0aW9uSW50ZXJhY3RpdmVUcmFuc2l0aW9u
CiAgICAgUmV0YWluUHRyPFVJVmlld0NvbnRyb2xsZXI+IHNuYXBzaG90Vmlld0NvbnRyb2xsZXIg
PSBhZG9wdE5TKFtbVUlWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF0pOwogICAgIG1fc25hcHNo
b3RWaWV3ID0gYWRvcHROUyhbW1VJVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbbV9saXZlU3dp
cGVWaWV3IGZyYW1lXV0pOwogCi0gICAgVmlld1NuYXBzaG90U3RvcmU6OlNuYXBzaG90IHNuYXBz
aG90OwotICAgIGlmIChWaWV3U25hcHNob3RTdG9yZTo6c2hhcmVkKCkuZ2V0U25hcHNob3QodGFy
Z2V0SXRlbSwgc25hcHNob3QpKSB7Ci0jaWYgVVNFKElPU1VSRkFDRSkKLSAgICAgICAgaWYgKHNu
YXBzaG90LnN1cmZhY2UtPnNldElzVm9sYXRpbGUoZmFsc2UpID09IElPU3VyZmFjZTo6U3VyZmFj
ZVN0YXRlOjpWYWxpZCkgewotICAgICAgICAgICAgW21fc25hcHNob3RWaWV3IGxheWVyXS5jb250
ZW50cyA9IChpZClzbmFwc2hvdC5zdXJmYWNlLT5zdXJmYWNlKCk7Ci0gICAgICAgICAgICBtX2N1
cnJlbnRTd2lwZVNuYXBzaG90U3VyZmFjZSA9IHNuYXBzaG90LnN1cmZhY2U7Ci0gICAgICAgIH0K
LSNlbHNlCi0gICAgICAgIFttX3NuYXBzaG90VmlldyBsYXllcl0uY29udGVudHMgPSAoaWQpc25h
cHNob3QuaW1hZ2UuZ2V0KCk7Ci0jZW5kaWYKLSAgICB9CisgICAgVmlld1NuYXBzaG90IHNuYXBz
aG90OworICAgIGlmIChWaWV3U25hcHNob3RTdG9yZTo6c2hhcmVkKCkuZ2V0U25hcHNob3QodGFy
Z2V0SXRlbSwgc25hcHNob3QpICYmIHNuYXBzaG90Lmhhc0ltYWdlKCkpCisgICAgICAgIFttX3Nu
YXBzaG90VmlldyBsYXllcl0uY29udGVudHMgPSBbQ0FDb250ZXh0IG9iamVjdEZvclNsb3Q6c25h
cHNob3Quc2xvdF07CisKICAgICBbbV9zbmFwc2hvdFZpZXcgc2V0QmFja2dyb3VuZENvbG9yOltV
SUNvbG9yIHdoaXRlQ29sb3JdXTsKLSAgICBbbV9zbmFwc2hvdFZpZXcgbGF5ZXJdLmNvbnRlbnRz
R3Jhdml0eSA9IEAidG9wTGVmdCI7CisgICAgW21fc25hcHNob3RWaWV3IGxheWVyXS5jb250ZW50
c0dyYXZpdHkgPSBrQ0FHcmF2aXR5VG9wTGVmdDsKICAgICBbbV9zbmFwc2hvdFZpZXcgbGF5ZXJd
LmNvbnRlbnRzU2NhbGUgPSBtX2xpdmVTd2lwZVZpZXcud2luZG93LnNjcmVlbi5zY2FsZTsKICAg
ICBbc25hcHNob3RWaWV3Q29udHJvbGxlciBzZXRWaWV3Om1fc25hcHNob3RWaWV3LmdldCgpXTsK
IApAQCAtMjI0LDcgKzIxNyw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRTd2lw
ZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIFZpZXdTbmFwc2hvdFN0b3JlOjpTbmFwc2hvdCBzbmFwc2hvdDsK
KyAgICBWaWV3U25hcHNob3Qgc25hcHNob3Q7CiAgICAgbV90YXJnZXRSZW5kZXJUcmVlU2l6ZSA9
IDA7CiAgICAgaWYgKFZpZXdTbmFwc2hvdFN0b3JlOjpzaGFyZWQoKS5nZXRTbmFwc2hvdCh0YXJn
ZXRJdGVtLCBzbmFwc2hvdCkpCiAgICAgICAgIG1fdGFyZ2V0UmVuZGVyVHJlZVNpemUgPSBzbmFw
c2hvdC5yZW5kZXJUcmVlU2l6ZSAqIHN3aXBlU25hcHNob3RSZW1vdmFsUmVuZGVyVHJlZVNpemVU
YXJnZXRGcmFjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3LmgKaW5kZXggZDQ1Mjc0NS4uYjM4YjEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgKQEAgLTc4LDcgKzc4LDYgQEAgc3RydWN0IFdlYlBhZ2VD
b25maWd1cmF0aW9uOwogCiAtICh2b2lkKV9kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVl
c3RGcm9tT3JpZ2luOihXZWJLaXQ6OldlYlNlY3VyaXR5T3JpZ2luJilvcmlnaW4gZnJhbWU6KFdl
YktpdDo6V2ViRnJhbWVQcm94eSYpZnJhbWUgcmVxdWVzdDooV2ViS2l0OjpHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0UHJveHkmKXBlcm1pc3Npb25SZXF1ZXN0OwogCi0tIChSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4pX3Rha2VWaWV3U25hcHNob3Q7CiAtICh2b2lkKV9zZXRBY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuOihOU0RhdGEgKilkYXRhOwogCiAtIChCT09MKV9zY3JvbGxUb1JlY3Q6
KENHUmVjdCl0YXJnZXRSZWN0IHdpdGhPcmlnaW46KENHUG9pbnQpb3JpZ2luIG1pbmltdW1TY3Jv
bGxEaXN0YW5jZTooQ0dGbG9hdCltaW5pbXVtU2Nyb2xsRGlzdGFuY2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KaW5kZXggNjY3M2FiOC4uYjJmMTQ2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpA
QCAtNDQwLDExICs0NDAsNiBAQCBzdGF0aWMgaW5saW5lIEZsb2F0UmVjdCBmaXhlZFBvc2l0aW9u
UmVjdEZyb21FeHBvc2VkUmVjdChDR1JlY3QgdW5vYnNjdXJlZFJlY3QsCiAgICAgW1t3cmFwcGVy
KF9wYWdlLT5wcm9jZXNzKCkuY29udGV4dCgpKSBfZ2VvbG9jYXRpb25Qcm92aWRlcl0gZGVjaWRl
UG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjp0b0FQSSgmb3JpZ2luKSBmcmFt
ZTp0b0FQSSgmZnJhbWUpIHJlcXVlc3Q6dG9BUEkoJnBlcm1pc3Npb25SZXF1ZXN0KSB3aW5kb3c6
W3NlbGYgd2luZG93XV07CiB9CiAKLS0gKFJldGFpblB0cjxDR0ltYWdlUmVmPilfdGFrZVZpZXdT
bmFwc2hvdAotewotICAgIHJldHVybiBbX3dlYlZpZXcgX3Rha2VWaWV3U25hcHNob3RdOwotfQot
CiAtIChCT09MKV9zY3JvbGxUb1JlY3Q6KENHUmVjdCl0YXJnZXRSZWN0IHdpdGhPcmlnaW46KENH
UG9pbnQpb3JpZ2luIG1pbmltdW1TY3JvbGxEaXN0YW5jZTooQ0dGbG9hdCltaW5pbXVtU2Nyb2xs
RGlzdGFuY2UKIHsKICAgICByZXR1cm4gW193ZWJWaWV3IF9zY3JvbGxUb1JlY3Q6dGFyZ2V0UmVj
dCBvcmlnaW46b3JpZ2luIG1pbmltdW1TY3JvbGxEaXN0YW5jZTptaW5pbXVtU2Nyb2xsRGlzdGFu
Y2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCmlu
ZGV4IDQ2MDk2OGEuLjI5YTI4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsLmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKTsKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4
dCYpOwogCi0gICAgdmlydHVhbCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gdGFrZVZpZXdTbmFwc2hv
dCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB0YWtlVmlld1NuYXBzaG90KFZpZXdTbmFw
c2hvdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50V2FzTm90SGFuZGxl
ZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50Jikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIGNsZWFyQ3VzdG9tU3dpcGVWaWV3cygpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQppbmRleCA4MWMxOWM3Li5l
NWYwMzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGwubW0KQEAgLTQ5OCw5ICs0OTgsOSBAQCBDQUxheWVyICpQYWdlQ2xpZW50SW1wbDo6YWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fd2tWaWV3Ll9h
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllcjsKIH0KIAotUmV0YWluUHRyPENHSW1h
Z2VSZWY+IFBhZ2VDbGllbnRJbXBsOjp0YWtlVmlld1NuYXBzaG90KCkKK3ZvaWQgUGFnZUNsaWVu
dEltcGw6OnRha2VWaWV3U25hcHNob3QoVmlld1NuYXBzaG90JiBzbmFwc2hvdCkKIHsKLSAgICBy
ZXR1cm4gW21fd2tWaWV3IF90YWtlVmlld1NuYXBzaG90XTsKKyAgICByZXR1cm4gW21fd2tWaWV3
IF90YWtlVmlld1NuYXBzaG90OnNuYXBzaG90XTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6
d2hlZWxFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVu
dCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmll
d0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCmluZGV4IDU1NmFlMjQuLmRhNDIwMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9s
bGVyTWFjLm1tCkBAIC00NTMsNyArNDUzLDcgQEAgQ0FMYXllciAqVmlld0dlc3R1cmVDb250cm9s
bGVyOjpkZXRlcm1pbmVMYXllckFkamFjZW50VG9TbmFwc2hvdEZvclBhcmVudChTd2lwZUQKIAog
SU9TdXJmYWNlKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJldHJpZXZlU25hcHNob3RGb3JJdGVt
KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0sIEZsb2F0U2l6ZSBzd2lwZUxheWVy
U2l6ZSwgZmxvYXQgdG9wQ29udGVudEluc2V0KQogewotICAgIFZpZXdTbmFwc2hvdFN0b3JlOjpT
bmFwc2hvdCBzbmFwc2hvdDsKKyAgICBWaWV3U25hcHNob3Qgc25hcHNob3Q7CiAgICAgaWYgKCFW
aWV3U25hcHNob3RTdG9yZTo6c2hhcmVkKCkuZ2V0U25hcHNob3QodGFyZ2V0SXRlbSwgc25hcHNo
b3QpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNjMyLDcgKzYzMiw3IEBAIHZvaWQg
Vmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRTd2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSogdGFyZ2V0SXRlbSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZpZXdTbmFw
c2hvdFN0b3JlOjpTbmFwc2hvdCBzbmFwc2hvdDsKKyAgICBWaWV3U25hcHNob3Qgc25hcHNob3Q7
CiAgICAgdWludDY0X3QgcmVuZGVyVHJlZVNpemUgPSAwOwogICAgIGlmIChWaWV3U25hcHNob3RT
dG9yZTo6c2hhcmVkKCkuZ2V0U25hcHNob3QodGFyZ2V0SXRlbSwgc25hcHNob3QpKQogICAgICAg
ICByZW5kZXJUcmVlU2l6ZSA9IHNuYXBzaG90LnJlbmRlclRyZWVTaXplOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5oCmluZGV4IDgwNzk2MWMu
LjU1ODRmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1Nu
YXBzaG90U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFw
c2hvdFN0b3JlLmgKQEAgLTMzLDExICszMywzNiBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorT0JKQ19DTEFTUyBDQUNvbnRl
eHQ7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
OwogY2xhc3MgV2ViUGFnZVByb3h5OwogCitzdHJ1Y3QgVmlld1NuYXBzaG90IHsKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgUmVmUHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gc3VyZmFjZTsKKyNlbmRp
ZgorI2lmIFBMQVRGT1JNKElPUykKKyAgICB1aW50MzJfdCBzbG90OworI2VuZGlmCisKKyAgICBz
dGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjp0aW1lX3BvaW50IGNyZWF0aW9uVGltZTsKKyAgICB1
aW50NjRfdCByZW5kZXJUcmVlU2l6ZTsKKyAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcjsKKyAg
ICBzaXplX3QgaW1hZ2VTaXplSW5CeXRlczsKKworICAgIHZvaWQgY2xlYXJJbWFnZSgpOworICAg
IGJvb2wgaGFzSW1hZ2UoKSBjb25zdDsKKworICAgIFZpZXdTbmFwc2hvdCgpCisjaWYgUExBVEZP
Uk0oSU9TKQorICAgICAgICA6IHNsb3QoMCkKKyNlbmRpZgorICAgIHsgfQorfTsKKwogY2xhc3Mg
Vmlld1NuYXBzaG90U3RvcmUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFZpZXdTbmFwc2hv
dFN0b3JlKTsKIHB1YmxpYzoKQEAgLTQ2LDM0ICs3MSwyNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgVmlld1NuYXBzaG90U3RvcmUmIHNoYXJlZCgpOwogCi0gICAgc3RydWN0IFNuYXBzaG90IHsK
LSNpZiBVU0UoSU9TVVJGQUNFKQotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBz
dXJmYWNlOwotI2Vsc2UKLSAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlOwotI2Vu
ZGlmCi0KLSAgICAgICAgc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6dGltZV9wb2ludCBjcmVh
dGlvblRpbWU7Ci0gICAgICAgIHVpbnQ2NF90IHJlbmRlclRyZWVTaXplOwotICAgICAgICBmbG9h
dCBkZXZpY2VTY2FsZUZhY3RvcjsKLQotICAgICAgICB2b2lkIGNsZWFySW1hZ2UoKTsKLSAgICAg
ICAgYm9vbCBoYXNJbWFnZSgpIGNvbnN0OwotICAgIH07Ci0KICAgICB2b2lkIHJlY29yZFNuYXBz
aG90KFdlYlBhZ2VQcm94eSYpOwotICAgIGJvb2wgZ2V0U25hcHNob3QoV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSosIFNuYXBzaG90Jik7CisgICAgYm9vbCBnZXRTbmFwc2hvdChXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtKiwgVmlld1NuYXBzaG90Jik7CiAKICAgICB2b2lkIGRpc2FibGVTbmFwc2hvdHRp
bmcoKSB7IG1fZW5hYmxlZCA9IGZhbHNlOyB9CiAgICAgdm9pZCBlbmFibGVTbmFwc2hvdHRpbmco
KSB7IG1fZW5hYmxlZCA9IHRydWU7IH0KIAorICAgIHZvaWQgZGlzY2FyZFNuYXBzaG90cygpOwor
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHN0YXRpYyBDQUNvbnRleHQgKnNuYXBzaG90dGluZ0Nv
bnRleHQoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgcHJ1bmVTbmFwc2hvdHMoV2Vi
UGFnZVByb3h5Jik7CisgICAgdm9pZCByZW1vdmVTbmFwc2hvdEltYWdlKFZpZXdTbmFwc2hvdCYp
OwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIFNuYXBzaG90PiBtX3NuYXBzaG90TWFwOworICAgIEhh
c2hNYXA8U3RyaW5nLCBWaWV3U25hcHNob3Q+IG1fc25hcHNob3RNYXA7CiAKICAgICBib29sIG1f
ZW5hYmxlZDsKLSAgICB1bnNpZ25lZCBtX3NuYXBzaG90c1dpdGhJbWFnZXNDb3VudDsKKyAgICBz
aXplX3QgbV9zbmFwc2hvdENhY2hlU2l6ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9y
ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW0K
aW5kZXggMTRkYWE2ZC4uMGQ5NGEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlLm1tCkBAIC0zMiwyMCArMzIsMzAgQEAKICNpbXBvcnQg
PFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VVSUQuaD4KIAorI2lmIFBM
QVRGT1JNKElPUykKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZVByaXZhdGUuaD4KKyNl
bmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIGNvbnN0IGludCBtYXhp
bXVtU25hcHNob3RDb3VudCA9IDIwOworI2lmIFBMQVRGT1JNKE1BQykKK3N0YXRpYyBjb25zdCBz
aXplX3QgbWF4aW11bVNuYXBzaG90Q2FjaGVTaXplID0gNDAwICogKDEwMjQgKiAxMDI0KTsKKyNl
bGlmIFBMQVRGT1JNKElPUykKKy8vIEJlY2F1c2Ugc25hcHNob3RzIGFyZSBub3QgcHVyZ2VhYmxl
LCB3ZSBzaG91bGQga2VlcCBmZXdlciBhcm91bmQuCitzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGlt
dW1TbmFwc2hvdENhY2hlU2l6ZSA9IDUwICogKDEwMjQgKiAxMDI0KTsKKyNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogVmlld1NuYXBzaG90U3RvcmU6OlZpZXdTbmFwc2hvdFN0b3JlKCkK
ICAgICA6IG1fZW5hYmxlZCh0cnVlKQotICAgICwgbV9zbmFwc2hvdHNXaXRoSW1hZ2VzQ291bnQo
MCkKKyAgICAsIG1fc25hcHNob3RDYWNoZVNpemUoMCkKIHsKIH0KIAogVmlld1NuYXBzaG90U3Rv
cmU6On5WaWV3U25hcHNob3RTdG9yZSgpCiB7CisgICAgZGlzY2FyZFNuYXBzaG90cygpOwogfQog
CiBWaWV3U25hcHNob3RTdG9yZSYgVmlld1NuYXBzaG90U3RvcmU6OnNoYXJlZCgpCkBAIC01NCw5
ICs2NCwzNiBAQCBWaWV3U25hcHNob3RTdG9yZSYgVmlld1NuYXBzaG90U3RvcmU6OnNoYXJlZCgp
CiAgICAgcmV0dXJuIHN0b3JlOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQorQ0FDb250ZXh0ICpW
aWV3U25hcHNob3RTdG9yZTo6c25hcHNob3R0aW5nQ29udGV4dCgpCit7CisgICAgc3RhdGljIENB
Q29udGV4dCAqY29udGV4dDsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsK
KyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIE5TRGljdGlvbmFyeSAq
b3B0aW9ucyA9IEB7CisgICAgICAgICAgICBrQ0FDb250ZXh0RGlzcGxheU5hbWU6IEAiV2ViS2l0
U25hcHNob3R0aW5nIiwKKyAgICAgICAgICAgIGtDQUNvbnRleHRJZ25vcmVzSGl0VGVzdDogQFlF
UywKKyAgICAgICAgICAgIGtDQUNvbnRleHREaXNwbGF5SWQgOiBAMjAwMDAKKyAgICAgICAgfTsK
KyAgICAgICAgY29udGV4dCA9IFtbQ0FDb250ZXh0IHJlbW90ZUNvbnRleHRXaXRoT3B0aW9uczpv
cHRpb25zXSByZXRhaW5dOworICAgIH0pOworCisgICAgcmV0dXJuIGNvbnRleHQ7Cit9CisjZW5k
aWYKKwordm9pZCBWaWV3U25hcHNob3RTdG9yZTo6cmVtb3ZlU25hcHNob3RJbWFnZShWaWV3U25h
cHNob3QmIHNuYXBzaG90KQoreworICAgIGlmICghc25hcHNob3QuaGFzSW1hZ2UoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9zbmFwc2hvdENhY2hlU2l6ZSAtPSBzbmFwc2hvdC5pbWFnZVNp
emVJbkJ5dGVzOworICAgIHNuYXBzaG90LmNsZWFySW1hZ2UoKTsKK30KKwogdm9pZCBWaWV3U25h
cHNob3RTdG9yZTo6cHJ1bmVTbmFwc2hvdHMoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkpCiB7
Ci0gICAgaWYgKG1fc25hcHNob3RzV2l0aEltYWdlc0NvdW50IDw9IG1heGltdW1TbmFwc2hvdENv
dW50KQorICAgIGlmIChtX3NuYXBzaG90Q2FjaGVTaXplIDw9IG1heGltdW1TbmFwc2hvdENhY2hl
U2l6ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdWludDMyX3QgY3VycmVudEluZGV4ID0gd2Vi
UGFnZVByb3h5LmJhY2tGb3J3YXJkTGlzdCgpLmN1cnJlbnRJbmRleCgpOwpAQCAtODksOCArMTI2
LDcgQEAgdm9pZCBWaWV3U25hcHNob3RTdG9yZTo6cHJ1bmVTbmFwc2hvdHMoV2ViUGFnZVByb3h5
JiB3ZWJQYWdlUHJveHkpCiAgICAgfQogCiAgICAgaWYgKG1vc3REaXN0YW50U25hcHNob3RJdGVy
ICE9IG1fc25hcHNob3RNYXAuZW5kKCkpIHsKLSAgICAgICAgbW9zdERpc3RhbnRTbmFwc2hvdEl0
ZXItPnZhbHVlLmNsZWFySW1hZ2UoKTsKLSAgICAgICAgbV9zbmFwc2hvdHNXaXRoSW1hZ2VzQ291
bnQtLTsKKyAgICAgICAgcmVtb3ZlU25hcHNob3RJbWFnZShtb3N0RGlzdGFudFNuYXBzaG90SXRl
ci0+dmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDcsMjQgKzE0Myw4IEBA
IHZvaWQgVmlld1NuYXBzaG90U3RvcmU6OnBydW5lU25hcHNob3RzKFdlYlBhZ2VQcm94eSYgd2Vi
UGFnZVByb3h5KQogICAgIH0KIAogICAgIGNvbnN0IGF1dG8mIHNuYXBzaG90SXRlciA9IG1fc25h
cHNob3RNYXAuZmluZChvbGRlc3RTbmFwc2hvdFVVSUQpOwotICAgIHNuYXBzaG90SXRlci0+dmFs
dWUuY2xlYXJJbWFnZSgpOwotICAgIG1fc25hcHNob3RzV2l0aEltYWdlc0NvdW50LS07Ci19Ci0K
LSNpZiBVU0UoSU9TVVJGQUNFKQotc3RhdGljIFJlZlB0cjxJT1N1cmZhY2U+IGNyZWF0ZUlPU3Vy
ZmFjZUZyb21JbWFnZShDR0ltYWdlUmVmIGltYWdlKQotewotICAgIHNpemVfdCB3aWR0aCA9IENH
SW1hZ2VHZXRXaWR0aChpbWFnZSk7Ci0gICAgc2l6ZV90IGhlaWdodCA9IENHSW1hZ2VHZXRIZWln
aHQoaW1hZ2UpOwotCi0gICAgUmVmUHRyPElPU3VyZmFjZT4gc3VyZmFjZSA9IElPU3VyZmFjZTo6
Y3JlYXRlKEludFNpemUod2lkdGgsIGhlaWdodCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAg
IFJldGFpblB0cjxDR0NvbnRleHRSZWY+IHN1cmZhY2VDb250ZXh0ID0gc3VyZmFjZS0+ZW5zdXJl
UGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKHN1cmZhY2VDb250ZXh0
LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIHdpZHRoLCBoZWlnaHQpLCBpbWFnZSk7Ci0gICAgQ0dD
b250ZXh0Rmx1c2goc3VyZmFjZUNvbnRleHQuZ2V0KCkpOwotCi0gICAgcmV0dXJuIHN1cmZhY2U7
CisgICAgcmVtb3ZlU25hcHNob3RJbWFnZShzbmFwc2hvdEl0ZXItPnZhbHVlKTsKIH0KLSNlbmRp
ZgogCiB2b2lkIFZpZXdTbmFwc2hvdFN0b3JlOjpyZWNvcmRTbmFwc2hvdChXZWJQYWdlUHJveHkm
IHdlYlBhZ2VQcm94eSkKIHsKQEAgLTEzNiw0MyArMTU2LDMxIEBAIHZvaWQgVmlld1NuYXBzaG90
U3RvcmU6OnJlY29yZFNuYXBzaG90KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQogICAgIGlm
ICghaXRlbSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHNu
YXBzaG90SW1hZ2UgPSB3ZWJQYWdlUHJveHkudGFrZVZpZXdTbmFwc2hvdCgpOwotICAgIGlmICgh
c25hcHNob3RJbWFnZSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgcHJ1bmVTbmFwc2hvdHMod2Vi
UGFnZVByb3h5KTsKIAogICAgIFN0cmluZyBvbGRTbmFwc2hvdFVVSUQgPSBpdGVtLT5zbmFwc2hv
dFVVSUQoKTsKICAgICBpZiAoIW9sZFNuYXBzaG90VVVJRC5pc0VtcHR5KCkpIHsKICAgICAgICAg
Y29uc3QgYXV0byYgb2xkU25hcHNob3RJdGVyID0gbV9zbmFwc2hvdE1hcC5maW5kKG9sZFNuYXBz
aG90VVVJRCk7CiAgICAgICAgIGlmIChvbGRTbmFwc2hvdEl0ZXIgIT0gbV9zbmFwc2hvdE1hcC5l
bmQoKSkgewotICAgICAgICAgICAgaWYgKG9sZFNuYXBzaG90SXRlci0+dmFsdWUuaGFzSW1hZ2Uo
KSkKLSAgICAgICAgICAgICAgICBtX3NuYXBzaG90c1dpdGhJbWFnZXNDb3VudC0tOworICAgICAg
ICAgICAgcmVtb3ZlU25hcHNob3RJbWFnZShvbGRTbmFwc2hvdEl0ZXItPnZhbHVlKTsKICAgICAg
ICAgICAgIG1fc25hcHNob3RNYXAucmVtb3ZlKG9sZFNuYXBzaG90SXRlcik7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBpdGVtLT5zZXRTbmFwc2hvdFVVSUQoY3JlYXRlQ2Fub25pY2FsVVVJRFN0
cmluZygpKTsKICAgICAKLSAgICBTbmFwc2hvdCBzbmFwc2hvdDsKKyAgICBWaWV3U25hcHNob3Qg
c25hcHNob3Q7CiAgICAgc25hcHNob3QuY3JlYXRpb25UaW1lID0gc3RkOjpjaHJvbm86OnN0ZWFk
eV9jbG9jazo6bm93KCk7CiAgICAgc25hcHNob3QucmVuZGVyVHJlZVNpemUgPSB3ZWJQYWdlUHJv
eHkucmVuZGVyVHJlZVNpemUoKTsKICAgICBzbmFwc2hvdC5kZXZpY2VTY2FsZUZhY3RvciA9IHdl
YlBhZ2VQcm94eS5kZXZpY2VTY2FsZUZhY3RvcigpOwogCi0jaWYgVVNFKElPU1VSRkFDRSkKLSAg
ICBzbmFwc2hvdC5zdXJmYWNlID0gY3JlYXRlSU9TdXJmYWNlRnJvbUltYWdlKHNuYXBzaG90SW1h
Z2UuZ2V0KCkpOwotICAgIHNuYXBzaG90LnN1cmZhY2UtPnNldElzVm9sYXRpbGUodHJ1ZSk7Ci0j
ZWxzZQotICAgIHNuYXBzaG90LmltYWdlID0gc25hcHNob3RJbWFnZTsKLSNlbmRpZgorICAgIHdl
YlBhZ2VQcm94eS50YWtlVmlld1NuYXBzaG90KHNuYXBzaG90KTsKIAogICAgIG1fc25hcHNob3RN
YXAuYWRkKGl0ZW0tPnNuYXBzaG90VVVJRCgpLCBzbmFwc2hvdCk7Ci0KLSAgICBpZiAoc25hcHNo
b3QuaGFzSW1hZ2UoKSkKLSAgICAgICAgbV9zbmFwc2hvdHNXaXRoSW1hZ2VzQ291bnQrKzsKKyAg
ICBtX3NuYXBzaG90Q2FjaGVTaXplICs9IHNuYXBzaG90LmltYWdlU2l6ZUluQnl0ZXM7CiB9CiAK
LWJvb2wgVmlld1NuYXBzaG90U3RvcmU6OmdldFNuYXBzaG90KFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0qIGl0ZW0sIFZpZXdTbmFwc2hvdFN0b3JlOjpTbmFwc2hvdCYgc25hcHNob3QpCitib29sIFZp
ZXdTbmFwc2hvdFN0b3JlOjpnZXRTbmFwc2hvdChXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVt
LCBWaWV3U25hcHNob3QmIHNuYXBzaG90KQogewogICAgIGlmIChpdGVtLT5zbmFwc2hvdFVVSUQo
KS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4NCwyMiArMTkyLDI3IEBA
IGJvb2wgVmlld1NuYXBzaG90U3RvcmU6OmdldFNuYXBzaG90KFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0qIGl0ZW0sIFZpZXdTbmFwc2hvdFN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgVmll
d1NuYXBzaG90U3RvcmU6OlNuYXBzaG90OjpjbGVhckltYWdlKCkKK3ZvaWQgVmlld1NuYXBzaG90
U3RvcmU6OmRpc2NhcmRTbmFwc2hvdHMoKQogewotI2lmIFVTRShJT1NVUkZBQ0UpCi0gICAgc3Vy
ZmFjZSA9IG51bGxwdHI7Ci0jZWxzZQotICAgIGltYWdlID0gbnVsbHB0cjsKLSNlbmRpZgorICAg
IGZvciAoYXV0byYgc25hcHNob3QgOiBtX3NuYXBzaG90TWFwLnZhbHVlcygpKQorICAgICAgICBy
ZW1vdmVTbmFwc2hvdEltYWdlKHNuYXBzaG90KTsKIH0KIAotYm9vbCBWaWV3U25hcHNob3RTdG9y
ZTo6U25hcHNob3Q6Omhhc0ltYWdlKCkgY29uc3QKK2Jvb2wgVmlld1NuYXBzaG90OjpoYXNJbWFn
ZSgpIGNvbnN0CiB7Ci0jaWYgVVNFKElPU1VSRkFDRSkKLSAgICByZXR1cm4gc3VyZmFjZTsKLSNl
bHNlCi0gICAgcmV0dXJuIGltYWdlOworICAgIHJldHVybiBpbWFnZVNpemVJbkJ5dGVzOworfQor
Cit2b2lkIFZpZXdTbmFwc2hvdDo6Y2xlYXJJbWFnZSgpCit7CisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIHN1cmZhY2UgPSBudWxscHRyOworI2VsaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChzbG90
KQorICAgICAgICBbVmlld1NuYXBzaG90U3RvcmU6OnNuYXBzaG90dGluZ0NvbnRleHQoKSBkZWxl
dGVTbG90OnNsb3RdOworICAgIHNsb3QgPSAwOwogI2VuZGlmCisgICAgaW1hZ2VTaXplSW5CeXRl
cyA9IDA7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBhOGI0YjkuLjE0ZmM5MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTUxNCw2ICs1MTQsOCBAQAogCQkyRDQ3QjU2RDE4MTA3MTRFMDAzQTNBRUUgLyogUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJENDdCNTZCMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5oICovOyB9OwogCQkyRDZCMzcxQjE4QTk2N0FEMDA0MkFFODAgLyogX1dLVGh1bWJu
YWlsVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkQ2QjM3MTkxOEE5NjdBRDAwNDJBRTgwIC8qIF9XS1RodW1ibmFpbFZpZXcuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDZCMzcxQzE4QTk2N0FE
MDA0MkFFODAgLyogX1dLVGh1bWJuYWlsVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENkIzNzFBMThBOTY3QUQwMDQyQUU4MCAvKiBfV0tUaHVt
Ym5haWxWaWV3Lm1tICovOyB9OworCQkyRDZDODUwNTE5MTE5N0RDMDA2QzU5QzggLyogV2ViTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJENkM4NTAzMTkxMTk3REMwMDZDNTlDOCAvKiBXZWJNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuY3BwICovOyB9OworCQkyRDZDODUwNjE5MTE5N0RDMDA2QzU5QzggLyogV2ViTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRDZDODUwNDE5MTE5N0RDMDA2QzU5QzggLyogV2ViTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmggKi87IH07CiAJCTJENkNEMTE5MTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNo
b3RTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkQ2Q0QxMTcxODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLmggKi87IH07CiAJ
CTJENkNEMTFBMTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9yZS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENkNEMTE4MTg5MDU4QTUw
MEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9yZS5tbSAqLzsgfTsKIAkJMkQ3QUFGRDMxOEM4NjQw
NjAwQTdBQ0Q0IC8qIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ3QUFGRDIxOEM4NjQwNjAwQTdBQ0Q0IC8q
IFdLV2ViVmlld0NvbnRlbnRQcm92aWRlci5oICovOyB9OwpAQCAtMjMzMiw2ICsyMzM0LDggQEAK
IAkJMkQ0N0I1NkIxODEwNzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENkIzNzE5MThBOTY3QUQwMDQyQUU4
MCAvKiBfV0tUaHVtYm5haWxWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IF9XS1RodW1ibmFpbFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2QjM3
MUExOEE5NjdBRDAwNDJBRTgwIC8qIF9XS1RodW1ibmFpbFZpZXcubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tUaHVtYm5haWxWaWV3Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyRDZDODUwMzE5MTE5N0RDMDA2QzU5QzggLyogV2ViTWVtb3J5
UHJlc3N1cmVIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYk1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTJENkM4NTA0MTkxMTk3REMwMDZDNTlDOCAvKiBXZWJNZW1vcnlQcmVzc3VyZUhhbmRsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENkNEMTE3MTg5MDU4QTUwMEU1
QTRBMCAvKiBWaWV3U25hcHNob3RTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWaWV3U25hcHNob3RTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
RDZDRDExODE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWV3U25hcHNob3RTdG9yZS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ3MEFCMTMxOEExRDUxQTAwMDI2RDZFIC8qIElu
Zm8taU9TLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5wbGlzdC54bWw7IHBhdGggPSAiSW5mby1pT1MucGxpc3QiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTQ5MCw2ICs1NDk0LDggQEAKIAkJCQkzM0QzQTNCNzEzMzk2
MDYyMDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5jcHAgKi8sCiAJCQkJMzNE
M0EzQjgxMzM5NjA2MjAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkuaCAqLywK
IAkJCQkzM0QzQTNCOTEzMzk2MDYyMDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94
eS5tZXNzYWdlcy5pbiAqLywKKwkJCQkyRDZDODUwMzE5MTE5N0RDMDA2QzU5QzggLyogV2ViTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmNwcCAqLywKKwkJCQkyRDZDODUwNDE5MTE5N0RDMDA2QzU5Qzgg
LyogV2ViTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmggKi8sCiAJCQkJQkMxREZFQTMxMkIzMUY4NzAw
NURGNzMwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwICovLAogCQkJCUJD
MURGRUEyMTJCMzFGODcwMDVERjczMCAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5
LmggKi8sCiAJCQkJNzU1NDIyQkYxODA2MkJFNDAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5h
Z2VyUHJveHkuaCAqLywKQEAgLTY2NjMsNiArNjY2OSw3IEBACiAJCQkJMUY3NTA2QjMxODU5MTY0
NTAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTM3N0VBRDQ1MTdFMkM1MUEwMDJEMTkzRCAvKiBXS0RlY2xhcmF0aW9uU3BlY2lmaWVy
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUZCMDBBQzcxODVGNzY0NjAwMTkxNDJFIC8qIFdLV2Vi
UHJvY2Vzc1BsdWdJblBhZ2VHcm91cC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQ2Qzg1MDYxOTEx
OTdEQzAwNkM1OUM4IC8qIFdlYk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzc3RUFENDkxN0UyQzc3QjAwMkQxOTNEIC8qIFdLVXNlclNjcmlwdEluamVjdGlvblRp
bWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2MzE3MkNGMThCNDY5NDkwMDY1QjlDMyAvKiBOYXRp
dmVXZWJUb3VjaEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxRjc1MDZCMjE4NTkxNjNFMDBF
QzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8s
CkBAIC04NzA3LDYgKzg3MTQsNyBAQAogCQkJCTc1OUNDRDU4MTgwOEYxNjQwMDc4RThBOCAvKiBX
ZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBNUIxQzUwMTg5ODYwNkYwMDRGQ0Y5QiAvKiBXS05hdmlnYXRpb24ubW0gaW4gU291cmNl
cyAqLywKIAkJCQlCQzQwNzVGNzEyNEZGMDI3MDA2OEYyMEEgLyogV0tEYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTJENkM4NTA1MTkxMTk3REMwMDZDNTlDOCAvKiBXZWJNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjYyQTc2NjExMkIxQUJFRDAwMDVGMUI2
IC8qIFdLRGF0YWJhc2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NUY5MTI0
RkYwMjcwMDY4RjIwQSAvKiBXS0RpY3Rpb25hcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMw
MTdEMDgxNjI2MEZGNDAwNzA1NEY1IC8qIFdLRE9NRG9jdW1lbnQubW0gaW4gU291cmNlcyAqLywK
</data>
<flag name="review"
          id="254930"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>