<?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>184356</bug_id>
          
          <creation_ts>2018-04-06 04:52:05 -0700</creation_ts>
          <short_desc>Tighten ImageSource to have BitmapImage pointer instead of Image</short_desc>
          <delta_ts>2018-04-06 09:29:59 -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>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>japhet</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1412337</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-04-06 04:52:05 -0700</bug_when>
    <thetext>ImageSource is an implementation detail of BitmapImage, not a generic type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412338</commentid>
    <comment_count>1</comment_count>
      <attachid>337356</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-04-06 05:36:33 -0700</bug_when>
    <thetext>Created attachment 337356
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412339</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-06 05:37:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/39236223&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412346</commentid>
    <comment_count>3</comment_count>
      <attachid>337360</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-04-06 06:18:30 -0700</bug_when>
    <thetext>Created attachment 337360
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412351</commentid>
    <comment_count>4</comment_count>
      <attachid>337360</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-04-06 07:26:21 -0700</bug_when>
    <thetext>Comment on attachment 337360
patch

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

&gt; Source/WebCore/loader/ImageLoader.cpp:422
&gt; -    if (!image-&gt;isBitmapImage()) {
&gt; +    if (!is&lt;BitmapImage&gt;(image)) {

There are places of the code which use isBitmapImage() and others use is&lt;BitmapImage&gt;(). I do not know the rule here and I don&apos;t know which way is more preferable. But I think we should be consistent and use one way or the other all over the code.

&gt; Source/WebCore/platform/graphics/BitmapImage.h:142
&gt; +    void decode(WTF::Function&lt;void()&gt;&amp;&amp;);

I think we can remove WTF:: here.

&gt; Source/WebCore/platform/graphics/Image.h:-142
&gt; -    virtual void decode(WTF::Function&lt;void()&gt;&amp;&amp;) { }
&gt; -    virtual void imageFrameAvailableAtIndex(size_t) { }
&gt; -

Shouldn&apos;t we do the same thing for the other methods which are related to multi-frame images only?

    virtual NativeImagePtr nativeImageForCurrentFrame(const GraphicsContext* = nullptr) { return nullptr; }
    virtual ImageOrientation orientationForCurrentFrame() const { return ImageOrientation(); }
    virtual Vector&lt;NativeImagePtr&gt; framesNativeImages() { return { }; }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412353</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-04-06 07:43:10 -0700</bug_when>
    <thetext>&gt; There are places of the code which use isBitmapImage() and others use
&gt; is&lt;BitmapImage&gt;(). I do not know the rule here and I don&apos;t know which way is
&gt; more preferable. But I think we should be consistent and use one way or the
&gt; other all over the code.

I think it is good to always use is&lt;&gt; when paired with downcast&lt;&gt;. The safety of the code is then immediately obvious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412361</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-04-06 08:05:34 -0700</bug_when>
    <thetext>&gt; Shouldn&apos;t we do the same thing for the other methods which are related to
&gt; multi-frame images only?
&gt; 
&gt;     virtual NativeImagePtr nativeImageForCurrentFrame(const GraphicsContext*
&gt; = nullptr) { return nullptr; }
&gt;     virtual ImageOrientation orientationForCurrentFrame() const { return
&gt; ImageOrientation(); }
&gt;     virtual Vector&lt;NativeImagePtr&gt; framesNativeImages() { return { }; }


nativeImageForCurrentFrame has SVGImage implementation too. Did the rest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412364</commentid>
    <comment_count>7</comment_count>
      <attachid>337365</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-04-06 08:35:43 -0700</bug_when>
    <thetext>Created attachment 337365
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412381</commentid>
    <comment_count>8</comment_count>
      <attachid>337365</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-06 09:29:57 -0700</bug_when>
    <thetext>Comment on attachment 337365
patch

Clearing flags on attachment: 337365

Committed r230334: &lt;https://trac.webkit.org/changeset/230334&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412382</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-06 09:29:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337356</attachid>
            <date>2018-04-06 05:36:33 -0700</date>
            <delta_ts>2018-04-06 06:18:30 -0700</delta_ts>
            <desc>patch</desc>
            <filename>imagesource-tighten-3.patch</filename>
            <type>text/plain</type>
            <size>8323</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMDMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE4LTA0LTA2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUaWdodGVuIEltYWdlU291cmNl
IHRvIGhhdmUgQml0bWFwSW1hZ2UgcG9pbnRlciBpbnN0ZWFkIG9mIEltYWdlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQzNTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbWFnZVNvdXJjZSBpcyBhbiBp
bXBsZW1lbnRhdGlvbiBkZXRhaWwgb2YgQml0bWFwSW1hZ2UsIG5vdCBhIGdlbmVyaWMgdHlwZS4K
KworICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUxvYWRlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZTo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
OjppbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleCk6IERlbGV0ZWQuCisKKyAgICAgICAgQWxzbyBt
YWtlIHNvbWUgQml0bWFwSW1hZ2Ugc3BlY2lmaWMgZnVuY3Rpb25zIG5vbi12aXJ0dWFsIGFuZCBy
ZW1vdmUgdGhlbSBmcm9tIEltYWdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisKIDIwMTgtMDQtMDUg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04g
KHIyMzAyMjMpOiBMYXlvdXRUZXN0IGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvY3NzLWRp
c3BsYXktbm9uZS1vdmVyZmxvd3MtcnVsZS1kYXRhLTEuaHRtbCBpcyBjcmFzaGluZwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMjk5NzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw2ICsyMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VMb2FkZXIu
aCIKIAorI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlUmVxdWVzdC5oIgpAQCAtNDE4LDEyICs0MTksMTMgQEAgdm9pZCBJbWFnZUxvYWRlcjo6ZGVj
b2RlKCkKICAgICB9CiAKICAgICBJbWFnZSogaW1hZ2UgPSBtX2ltYWdlLT5pbWFnZSgpOwotICAg
IGlmICghaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSkgeworICAgIGlmICghaXM8Qml0bWFwSW1hZ2U+
KGltYWdlKSkgewogICAgICAgICBkZWNvZGVFcnJvcigiSW52YWxpZCBpbWFnZSB0eXBlLiIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIGltYWdlLT5kZWNvZGUoW3Byb21pc2Vz
ID0gV1RGTW92ZShtX2RlY29kaW5nUHJvbWlzZXMpXSgpIG11dGFibGUgeworCisgICAgYXV0byYg
Yml0bWFwSW1hZ2UgPSBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKTsKKyAgICBiaXRtYXBJ
bWFnZS5kZWNvZGUoW3Byb21pc2VzID0gV1RGTW92ZShtX2RlY29kaW5nUHJvbWlzZXMpXSgpIG11
dGFibGUgewogICAgICAgICBmb3IgKGF1dG8mIHByb21pc2UgOiBwcm9taXNlcykKICAgICAgICAg
ICAgIHByb21pc2UtPnJlc29sdmUoKTsKICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkocmV2aXNpb24gMjI5OTczKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMTM4LDYgKzEzOCw5IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8TmF0aXZlSW1hZ2VQ
dHI+IGZyYW1lc05hdGl2ZUltYWdlcygpIG92ZXJyaWRlOwogI2VuZGlmCiAKKyAgICB2b2lkIGlt
YWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCk7CisgICAgdm9pZCBkZWNvZGUoV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYpOworCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgQml0
bWFwSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJiwgSW1hZ2VPYnNlcnZlciogPSBudWxscHRyKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwpA
QCAtMTk3LDkgKzIwMCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERh
dGEoKTsKICAgICB2b2lkIHNldEN1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzSWZOZWNlc3Nhcnko
RGVjb2RpbmdTdGF0dXMpOwogICAgIGJvb2wgaXNCaXRtYXBJbWFnZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIGRlY29kZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYWxsRGVjb2RpbmdDYWxsYmFja3MoKTsKLSAgICB2b2lk
IGltYWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
dW1wKFdURjo6VGV4dFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gQW5pbWF0ZWQg
aW1hZ2VzIG92ZXIgYSBjZXJ0YWluIHNpemUgYXJlIGNvbnNpZGVyZWQgbGFyZ2UgZW5vdWdoIHRo
YXQgd2UnbGwgb25seSBoYW5nIG9uIHRvIG9uZSBmcmFtZSBhdCBhIHRpbWUuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgJKHJldmlzaW9uIDIyOTk3MykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEzNyw5ICsxMzcsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQW5pbWF0aW5n
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGFuaW1hdGlvblBlbmRpbmcoKSBj
b25zdCB7IHJldHVybiBtX2FuaW1hdGlvblN0YXJ0VGltZXIuaXNBY3RpdmUoKTsgfQogCi0gICAg
dmlydHVhbCB2b2lkIGRlY29kZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCkgeyB9Ci0KICAgICAv
LyBUeXBpY2FsbHkgdGhlIENhY2hlZEltYWdlIHRoYXQgb3ducyB1cy4KICAgICBJbWFnZU9ic2Vy
dmVyKiBpbWFnZU9ic2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZU9ic2VydmVyOyB9CiAg
ICAgdm9pZCBzZXRJbWFnZU9ic2VydmVyKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKSB7IG1faW1h
Z2VPYnNlcnZlciA9IG9ic2VydmVyOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCShyZXZpc2lvbiAyMjk5NzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbWFn
ZVNvdXJjZS5oIgogCi0jaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJCaXRtYXBJbWFnZS5o
IgogI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0zOCw3ICszOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdlKiBpbWFnZSwgQWxwaGFPcHRp
b24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQorSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEJpdG1hcEltYWdlKiBpbWFn
ZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogbV9pbWFnZShpbWFnZSkKICAgICAsIG1f
YWxwaGFPcHRpb24oYWxwaGFPcHRpb24pCiAgICAgLCBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCShyZXZpc2lvbiAyMjk5NzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSwxOSArMzUsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBC
aXRtYXBJbWFnZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIEltYWdlOwogY2xhc3Mg
SW1hZ2VEZWNvZGVyOwogY2xhc3MgVVJMOwogCiBjbGFzcyBJbWFnZVNvdXJjZSA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZVNvdXJjZT4gewogICAgIGZyaWVuZCBjbGFzcyBCaXRt
YXBJbWFnZTsKIHB1YmxpYzoKLSAgICBJbWFnZVNvdXJjZShJbWFnZSosIEFscGhhT3B0aW9uID0g
QWxwaGFPcHRpb246OlByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID0g
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb246OkFwcGxpZWQpOwotICAgIEltYWdlU291cmNlKE5h
dGl2ZUltYWdlUHRyJiYpOwogICAgIH5JbWFnZVNvdXJjZSgpOwogCi0gICAgc3RhdGljIFJlZjxJ
bWFnZVNvdXJjZT4gY3JlYXRlKEltYWdlKiBpbWFnZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24g
PSBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24g
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6
QXBwbGllZCkKKyAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoQml0bWFwSW1hZ2Uq
IGltYWdlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiA9IEFscGhhT3B0aW9uOjpQcmVtdWx0aXBs
aWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biA9IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpBcHBsaWVkKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VTb3VyY2UoaW1hZ2UsIGFscGhhT3B0aW9uLCBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgIH0KQEAgLTEyMyw2ICsxMjEsOSBAQCBwdWJs
aWM6CiAgICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwogCiBw
cml2YXRlOgorICAgIEltYWdlU291cmNlKEJpdG1hcEltYWdlKiwgQWxwaGFPcHRpb24gPSBBbHBo
YU9wdGlvbjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6QXBwbGllZCk7CisgICAgSW1hZ2VTb3VyY2UoTmF0aXZl
SW1hZ2VQdHImJik7CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBUIChJbWFnZURlY29kZXI6
OipmdW5jdG9yKSgpIGNvbnN0PgogICAgIFQgbWV0YWRhdGEoY29uc3QgVCYgZGVmYXVsdFZhbHVl
LCBzdGQ6Om9wdGlvbmFsPFQ+KiBjYWNoZWRWYWx1ZSA9IG51bGxwdHIpOwogCkBAIC0xNTUsNyAr
MTU2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZHVtcChUZXh0U3RyZWFtJik7CiAKLSAgICBJ
bWFnZSogbV9pbWFnZSB7IG51bGxwdHIgfTsKKyAgICBCaXRtYXBJbWFnZSogbV9pbWFnZSB7IG51
bGxwdHIgfTsKICAgICBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBtX2RlY29kZXI7CiAgICAgQWxwaGFP
cHRpb24gbV9hbHBoYU9wdGlvbiB7IEFscGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVkIH07CiAgICAg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiB7
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpBcHBsaWVkIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHQzRENHLmNwcAkocmV2aXNpb24gMjI5OTczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
NSwxMiArMzI1LDEyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjoK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGJvb2wgaGFzQWxwaGEgPSAhbV9pbWFnZS0+Y3Vy
cmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCk7CiAgICAgaWYgKChpZ25vcmVHYW1tYUFuZENvbG9y
UHJvZmlsZSB8fCAoaGFzQWxwaGEgJiYgIXByZW11bHRpcGx5QWxwaGEpKSAmJiBtX2ltYWdlLT5k
YXRhKCkpIHsKLSAgICAgICAgSW1hZ2VTb3VyY2Ugc291cmNlKG51bGxwdHIsIEFscGhhT3B0aW9u
OjpOb3RQcmVtdWx0aXBsaWVkLCBpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSA/IEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVkIDogR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb246
OkFwcGxpZWQpOwotICAgICAgICBzb3VyY2Uuc2V0RGF0YShtX2ltYWdlLT5kYXRhKCksIHRydWUp
OwotICAgICAgICBpZiAoIXNvdXJjZS5mcmFtZUNvdW50KCkpCisgICAgICAgIGF1dG8gc291cmNl
ID0gSW1hZ2VTb3VyY2U6OmNyZWF0ZShudWxscHRyLCBBbHBoYU9wdGlvbjo6Tm90UHJlbXVsdGlw
bGllZCwgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgPyBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbjo6SWdub3JlZCA6IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpBcHBsaWVkKTsKKyAg
ICAgICAgc291cmNlLT5zZXREYXRhKG1faW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7CisgICAgICAgIGlm
ICghc291cmNlLT5mcmFtZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAgICAgbV9kZWNvZGVkSW1hZ2UgPSBzb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7
CisgICAgICAgIG1fZGVjb2RlZEltYWdlID0gc291cmNlLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRl
eCgwKTsKICAgICAgICAgbV9jZ0ltYWdlID0gbV9kZWNvZGVkSW1hZ2U7CiAgICAgfSBlbHNlCiAg
ICAgICAgIG1fY2dJbWFnZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337360</attachid>
            <date>2018-04-06 06:18:30 -0700</date>
            <delta_ts>2018-04-06 08:35:43 -0700</delta_ts>
            <desc>patch</desc>
            <filename>imagesource-tighten-4.patch</filename>
            <type>text/plain</type>
            <size>9843</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMDMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE4LTA0LTA2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUaWdodGVuIEltYWdlU291cmNl
IHRvIGhhdmUgQml0bWFwSW1hZ2UgcG9pbnRlciBpbnN0ZWFkIG9mIEltYWdlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQzNTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbWFnZVNvdXJjZSBpcyBhbiBp
bXBsZW1lbnRhdGlvbiBkZXRhaWwgb2YgQml0bWFwSW1hZ2UsIG5vdCBhIGdlbmVyaWMgdHlwZS4K
KworICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUxvYWRlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZTo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
OjppbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleCk6IERlbGV0ZWQuCisKKyAgICAgICAgQWxzbyBt
YWtlIHNvbWUgQml0bWFwSW1hZ2Ugc3BlY2lmaWMgZnVuY3Rpb25zIG5vbi12aXJ0dWFsIGFuZCBy
ZW1vdmUgdGhlbSBmcm9tIEltYWdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisKIDIwMTgtMDQtMDUg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04g
KHIyMzAyMjMpOiBMYXlvdXRUZXN0IGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvY3NzLWRp
c3BsYXktbm9uZS1vdmVyZmxvd3MtcnVsZS1kYXRhLTEuaHRtbCBpcyBjcmFzaGluZwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyMzAzMjkpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw2ICsyMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VMb2FkZXIu
aCIKIAorI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlUmVxdWVzdC5oIgpAQCAtNDE4LDEyICs0MTksMTMgQEAgdm9pZCBJbWFnZUxvYWRlcjo6ZGVj
b2RlKCkKICAgICB9CiAKICAgICBJbWFnZSogaW1hZ2UgPSBtX2ltYWdlLT5pbWFnZSgpOwotICAg
IGlmICghaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSkgeworICAgIGlmICghaXM8Qml0bWFwSW1hZ2U+
KGltYWdlKSkgewogICAgICAgICBkZWNvZGVFcnJvcigiSW52YWxpZCBpbWFnZSB0eXBlLiIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIGltYWdlLT5kZWNvZGUoW3Byb21pc2Vz
ID0gV1RGTW92ZShtX2RlY29kaW5nUHJvbWlzZXMpXSgpIG11dGFibGUgeworCisgICAgYXV0byYg
Yml0bWFwSW1hZ2UgPSBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKTsKKyAgICBiaXRtYXBJ
bWFnZS5kZWNvZGUoW3Byb21pc2VzID0gV1RGTW92ZShtX2RlY29kaW5nUHJvbWlzZXMpXSgpIG11
dGFibGUgewogICAgICAgICBmb3IgKGF1dG8mIHByb21pc2UgOiBwcm9taXNlcykKICAgICAgICAg
ICAgIHByb21pc2UtPnJlc29sdmUoKTsKICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkocmV2aXNpb24gMjMwMzI5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMTM4LDYgKzEzOCw5IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8TmF0aXZlSW1hZ2VQ
dHI+IGZyYW1lc05hdGl2ZUltYWdlcygpIG92ZXJyaWRlOwogI2VuZGlmCiAKKyAgICB2b2lkIGlt
YWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCk7CisgICAgdm9pZCBkZWNvZGUoV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYpOworCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgQml0
bWFwSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJiwgSW1hZ2VPYnNlcnZlciogPSBudWxscHRyKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwpA
QCAtMTk3LDkgKzIwMCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERh
dGEoKTsKICAgICB2b2lkIHNldEN1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzSWZOZWNlc3Nhcnko
RGVjb2RpbmdTdGF0dXMpOwogICAgIGJvb2wgaXNCaXRtYXBJbWFnZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIGRlY29kZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYWxsRGVjb2RpbmdDYWxsYmFja3MoKTsKLSAgICB2b2lk
IGltYWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
dW1wKFdURjo6VGV4dFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gQW5pbWF0ZWQg
aW1hZ2VzIG92ZXIgYSBjZXJ0YWluIHNpemUgYXJlIGNvbnNpZGVyZWQgbGFyZ2UgZW5vdWdoIHRo
YXQgd2UnbGwgb25seSBoYW5nIG9uIHRvIG9uZSBmcmFtZSBhdCBhIHRpbWUuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgJKHJldmlzaW9uIDIzMDMyOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEzNyw5ICsxMzcsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQW5pbWF0aW5n
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGFuaW1hdGlvblBlbmRpbmcoKSBj
b25zdCB7IHJldHVybiBtX2FuaW1hdGlvblN0YXJ0VGltZXIuaXNBY3RpdmUoKTsgfQogCi0gICAg
dmlydHVhbCB2b2lkIGRlY29kZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGVBdEluZGV4KHNpemVfdCkgeyB9Ci0KICAgICAv
LyBUeXBpY2FsbHkgdGhlIENhY2hlZEltYWdlIHRoYXQgb3ducyB1cy4KICAgICBJbWFnZU9ic2Vy
dmVyKiBpbWFnZU9ic2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZU9ic2VydmVyOyB9CiAg
ICAgdm9pZCBzZXRJbWFnZU9ic2VydmVyKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKSB7IG1faW1h
Z2VPYnNlcnZlciA9IG9ic2VydmVyOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCShyZXZpc2lvbiAyMzAzMjkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbWFn
ZVNvdXJjZS5oIgogCi0jaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJCaXRtYXBJbWFnZS5o
IgogI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0zOCw3ICszOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdlKiBpbWFnZSwgQWxwaGFPcHRp
b24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQorSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEJpdG1hcEltYWdlKiBpbWFn
ZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogbV9pbWFnZShpbWFnZSkKICAgICAsIG1f
YWxwaGFPcHRpb24oYWxwaGFPcHRpb24pCiAgICAgLCBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCShyZXZpc2lvbiAyMzAzMjkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSwxOSArMzUsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBC
aXRtYXBJbWFnZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIEltYWdlOwogY2xhc3Mg
SW1hZ2VEZWNvZGVyOwogY2xhc3MgVVJMOwogCiBjbGFzcyBJbWFnZVNvdXJjZSA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZVNvdXJjZT4gewogICAgIGZyaWVuZCBjbGFzcyBCaXRt
YXBJbWFnZTsKIHB1YmxpYzoKLSAgICBJbWFnZVNvdXJjZShJbWFnZSosIEFscGhhT3B0aW9uID0g
QWxwaGFPcHRpb246OlByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID0g
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb246OkFwcGxpZWQpOwotICAgIEltYWdlU291cmNlKE5h
dGl2ZUltYWdlUHRyJiYpOwogICAgIH5JbWFnZVNvdXJjZSgpOwogCi0gICAgc3RhdGljIFJlZjxJ
bWFnZVNvdXJjZT4gY3JlYXRlKEltYWdlKiBpbWFnZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24g
PSBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24g
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6
QXBwbGllZCkKKyAgICBzdGF0aWMgUmVmPEltYWdlU291cmNlPiBjcmVhdGUoQml0bWFwSW1hZ2Uq
IGltYWdlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiA9IEFscGhhT3B0aW9uOjpQcmVtdWx0aXBs
aWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biA9IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpBcHBsaWVkKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VTb3VyY2UoaW1hZ2UsIGFscGhhT3B0aW9uLCBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgIH0KQEAgLTEyMyw2ICsxMjEsOSBAQCBwdWJs
aWM6CiAgICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwogCiBw
cml2YXRlOgorICAgIEltYWdlU291cmNlKEJpdG1hcEltYWdlKiwgQWxwaGFPcHRpb24gPSBBbHBo
YU9wdGlvbjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6QXBwbGllZCk7CisgICAgSW1hZ2VTb3VyY2UoTmF0aXZl
SW1hZ2VQdHImJik7CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBUIChJbWFnZURlY29kZXI6
OipmdW5jdG9yKSgpIGNvbnN0PgogICAgIFQgbWV0YWRhdGEoY29uc3QgVCYgZGVmYXVsdFZhbHVl
LCBzdGQ6Om9wdGlvbmFsPFQ+KiBjYWNoZWRWYWx1ZSA9IG51bGxwdHIpOwogCkBAIC0xNTUsNyAr
MTU2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZHVtcChUZXh0U3RyZWFtJik7CiAKLSAgICBJ
bWFnZSogbV9pbWFnZSB7IG51bGxwdHIgfTsKKyAgICBCaXRtYXBJbWFnZSogbV9pbWFnZSB7IG51
bGxwdHIgfTsKICAgICBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBtX2RlY29kZXI7CiAgICAgQWxwaGFP
cHRpb24gbV9hbHBoYU9wdGlvbiB7IEFscGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVkIH07CiAgICAg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiB7
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpBcHBsaWVkIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHQzRENhaXJvLmNwcAkocmV2aXNpb24gMjMwMzI5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDE0ICs0OCwxNCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJ
bWFnZUV4dHJhY3Rvcjo6CiAgICAgLy8gV2UgbmVlZCB0aGlzIHRvIHN0YXkgaW4gc2NvcGUgYmVj
YXVzZSB0aGUgbmF0aXZlIGltYWdlIGlzIGp1c3QgYSBzaGFsbG93IGNvcHkgb2YgdGhlIGRhdGEu
CiAgICAgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24gPSBwcmVtdWx0aXBseUFscGhhID8gQWxwaGFP
cHRpb246OlByZW11bHRpcGxpZWQgOiBBbHBoYU9wdGlvbjo6Tm90UHJlbXVsdGlwbGllZDsKICAg
ICBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiA9
IGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID8gR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb246
Oklnbm9yZWQgOiBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6QXBwbGllZDsKLSAgICBJbWFn
ZVNvdXJjZSBzb3VyY2UobnVsbHB0ciwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKTsKKyAgICBhdXRvIHNvdXJjZSA9IEltYWdlU291cmNlOjpjcmVhdGUobnVsbHB0ciwg
YWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICBtX2FscGhhT3Ag
PSBBbHBoYURvTm90aGluZzsKIAogICAgIGlmIChtX2ltYWdlLT5kYXRhKCkpIHsKLSAgICAgICAg
c291cmNlLnNldERhdGEobV9pbWFnZS0+ZGF0YSgpLCB0cnVlKTsKLSAgICAgICAgaWYgKCFzb3Vy
Y2UuZnJhbWVDb3VudCgpKQorICAgICAgICBzb3VyY2UtPnNldERhdGEobV9pbWFnZS0+ZGF0YSgp
LCB0cnVlKTsKKyAgICAgICAgaWYgKCFzb3VyY2UtPmZyYW1lQ291bnQoKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBzb3VyY2UuY3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoMCk7CisgICAgICAgIG1faW1hZ2VTdXJmYWNlID0gc291cmNlLT5jcmVh
dGVGcmFtZUltYWdlQXRJbmRleCgwKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2ltYWdlU3Vy
ZmFjZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgICAgIC8v
IDEuIEZvciB0ZXhJbWFnZTJEIHdpdGggSFRNTFZpZGVvRWxtZW50IGlucHV0LCBhc3N1bWUgbm8g
UHJlbXVsdGlwbHlBbHBoYSBoYWQgYmVlbiBhcHBsaWVkIGFuZCB0aGUgYWxwaGEgdmFsdWUgaXMg
MHhGRiBmb3IgZWFjaCBwaXhlbCwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCShyZXZpc2lv
biAyMzAzMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHQzRENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDEyICszMjUsMTIgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OgogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgYm9vbCBoYXNBbHBoYSA9ICFtX2ltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVP
cGFxdWUoKTsKICAgICBpZiAoKGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlIHx8IChoYXNBbHBo
YSAmJiAhcHJlbXVsdGlwbHlBbHBoYSkpICYmIG1faW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBJ
bWFnZVNvdXJjZSBzb3VyY2UobnVsbHB0ciwgQWxwaGFPcHRpb246Ok5vdFByZW11bHRpcGxpZWQs
IGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID8gR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb246
Oklnbm9yZWQgOiBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6QXBwbGllZCk7Ci0gICAgICAg
IHNvdXJjZS5zZXREYXRhKG1faW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7Ci0gICAgICAgIGlmICghc291
cmNlLmZyYW1lQ291bnQoKSkKKyAgICAgICAgYXV0byBzb3VyY2UgPSBJbWFnZVNvdXJjZTo6Y3Jl
YXRlKG51bGxwdHIsIEFscGhhT3B0aW9uOjpOb3RQcmVtdWx0aXBsaWVkLCBpZ25vcmVHYW1tYUFu
ZENvbG9yUHJvZmlsZSA/IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVkIDogR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb246OkFwcGxpZWQpOworICAgICAgICBzb3VyY2UtPnNldERh
dGEobV9pbWFnZS0+ZGF0YSgpLCB0cnVlKTsKKyAgICAgICAgaWYgKCFzb3VyY2UtPmZyYW1lQ291
bnQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBtX2RlY29kZWRJbWFn
ZSA9IHNvdXJjZS5jcmVhdGVGcmFtZUltYWdlQXRJbmRleCgwKTsKKyAgICAgICAgbV9kZWNvZGVk
SW1hZ2UgPSBzb3VyY2UtPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApOwogICAgICAgICBtX2Nn
SW1hZ2UgPSBtX2RlY29kZWRJbWFnZTsKICAgICB9IGVsc2UKICAgICAgICAgbV9jZ0ltYWdlID0g
bV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsK
</data>
<flag name="review"
          id="355774"
          type_id="1"
          status="+"
          setter="sabouhallawa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337365</attachid>
            <date>2018-04-06 08:35:43 -0700</date>
            <delta_ts>2018-04-06 09:29:57 -0700</delta_ts>
            <desc>patch</desc>
            <filename>imagesource-tighten-6.patch</filename>
            <type>text/plain</type>
            <size>12695</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMDMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE4LTA0LTA2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUaWdodGVuIEltYWdlU291cmNl
IHRvIGhhdmUgQml0bWFwSW1hZ2UgcG9pbnRlciBpbnN0ZWFkIG9mIEltYWdlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQzNTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBTYWlkIEFib3UtSGFsbGF3YS4KKworICAgICAgICBJbWFnZVNvdXJjZSBpcyBh
biBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgb2YgQml0bWFwSW1hZ2UsIG5vdCBhIGdlbmVyaWMgdHlw
ZS4KKworICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUxvYWRlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleCk6IERlbGV0ZWQuCisKKyAgICAgICAgQWxz
byBtYWtlIHNvbWUgQml0bWFwSW1hZ2Ugc3BlY2lmaWMgZnVuY3Rpb25zIG5vbi12aXJ0dWFsIGFu
ZCByZW1vdmUgdGhlbSBmcm9tIEltYWdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291
cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZSk6CisKKyAgICAgICAgTWFrZSBjb25zdHJ1
Y3RvcnMgcHJpdmF0ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Oklt
YWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorCiAyMDE4LTA0LTA1ICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjMwMjIzKTogTGF5
b3V0VGVzdCBodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2Nzcy1kaXNwbGF5LW5vbmUtb3Zl
cmZsb3dzLXJ1bGUtZGF0YS0xLmh0bWwgaXMgY3Jhc2hpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9JbWFnZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ltYWdlTG9hZGVyLmNwcAkocmV2aXNpb24gMjMwMzI5KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ltYWdlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkltYWdlTG9hZGVyLmgiCiAKKyNpbmNsdWRl
ICJCaXRtYXBJbWFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIK
QEAgLTQxOCwxMiArNDE5LDEzIEBAIHZvaWQgSW1hZ2VMb2FkZXI6OmRlY29kZSgpCiAgICAgfQog
CiAgICAgSW1hZ2UqIGltYWdlID0gbV9pbWFnZS0+aW1hZ2UoKTsKLSAgICBpZiAoIWltYWdlLT5p
c0JpdG1hcEltYWdlKCkpIHsKKyAgICBpZiAoIWlzPEJpdG1hcEltYWdlPihpbWFnZSkpIHsKICAg
ICAgICAgZGVjb2RlRXJyb3IoIkludmFsaWQgaW1hZ2UgdHlwZS4iKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICAKLSAgICBpbWFnZS0+ZGVjb2RlKFtwcm9taXNlcyA9IFdURk1vdmUobV9k
ZWNvZGluZ1Byb21pc2VzKV0oKSBtdXRhYmxlIHsKKworICAgIGF1dG8mIGJpdG1hcEltYWdlID0g
ZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSk7CisgICAgYml0bWFwSW1hZ2UuZGVjb2RlKFtw
cm9taXNlcyA9IFdURk1vdmUobV9kZWNvZGluZ1Byb21pc2VzKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgZm9yIChhdXRvJiBwcm9taXNlIDogcHJvbWlzZXMpCiAgICAgICAgICAgICBwcm9taXNlLT5y
ZXNvbHZlKCk7CiAgICAgfSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgJKHJldmlzaW9uIDIzMDMyOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcg
Kzk5LDcgQEAgcHVibGljOgogCiAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY3VycmVudEZyYW1lOyB9CiAgICAgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFx
dWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhZnJhbWVIYXNBbHBoYUF0SW5kZXgoY3VycmVu
dEZyYW1lKCkpOyB9Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkZvckN1cnJlbnRG
cmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZyYW1lT3JpZW50YXRpb25BdEluZGV4KGN1
cnJlbnRGcmFtZSgpKTsgfQorICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25Gb3JDdXJy
ZW50RnJhbWUoKSBjb25zdCB7IHJldHVybiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChjdXJyZW50
RnJhbWUoKSk7IH0KICAgICBib29sIGNhbkFuaW1hdGUoKSBjb25zdDsKIAogICAgIGJvb2wgc2hv
dWxkVXNlQXN5bmNEZWNvZGluZ0ZvckFuaW1hdGVkSW1hZ2VzRm9yVGVzdGluZygpIGNvbnN0IHsg
cmV0dXJuIG1fZnJhbWVEZWNvZGluZ0R1cmF0aW9uRm9yVGVzdGluZyA+IDBfczsgfQpAQCAtMTM1
LDkgKzEzNSwxMiBAQCBwdWJsaWM6CiAgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwog
I2lmIFVTRShDRykKICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJ
bnRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwotICAg
IFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gZnJhbWVzTmF0aXZlSW1hZ2VzKCkgb3ZlcnJpZGU7Cisg
ICAgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBmcmFtZXNOYXRpdmVJbWFnZXMoKTsKICNlbmRpZgog
CisgICAgdm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRleChzaXplX3QpOworICAgIHZvaWQg
ZGVjb2RlKEZ1bmN0aW9uPHZvaWQoKT4mJik7CisKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VY
UE9SVCBCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmLCBJbWFnZU9ic2VydmVyKiA9IG51bGxw
dHIpOwogICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqID0gbnVs
bHB0cik7CkBAIC0xOTcsOSArMjAwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGNhbkRlc3Ryb3lE
ZWNvZGVkRGF0YSgpOwogICAgIHZvaWQgc2V0Q3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXNJZk5l
Y2Vzc2FyeShEZWNvZGluZ1N0YXR1cyk7CiAgICAgYm9vbCBpc0JpdG1hcEltYWdlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgZGVjb2RlKFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNhbGxEZWNvZGluZ0NhbGxiYWNrcygpOwot
ICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZUF0SW5kZXgoc2l6ZV90KSBvdmVycmlkZTsKICAg
ICB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBB
bmltYXRlZCBpbWFnZXMgb3ZlciBhIGNlcnRhaW4gc2l6ZSBhcmUgY29uc2lkZXJlZCBsYXJnZSBl
bm91Z2ggdGhhdCB3ZSdsbCBvbmx5IGhhbmcgb24gdG8gb25lIGZyYW1lIGF0IGEgdGltZS4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAkocmV2aXNpb24gMjMw
MzI5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM3LDkgKzEzNyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNB
bmltYXRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgYW5pbWF0aW9uUGVu
ZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9uU3RhcnRUaW1lci5pc0FjdGl2ZSgpOyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVjb2RlKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZUF0SW5kZXgoc2l6ZV90KSB7IH0K
LQogICAgIC8vIFR5cGljYWxseSB0aGUgQ2FjaGVkSW1hZ2UgdGhhdCBvd25zIHVzLgogICAgIElt
YWdlT2JzZXJ2ZXIqIGltYWdlT2JzZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlT2JzZXJ2
ZXI7IH0KICAgICB2b2lkIHNldEltYWdlT2JzZXJ2ZXIoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIp
IHsgbV9pbWFnZU9ic2VydmVyID0gb2JzZXJ2ZXI7IH0KQEAgLTE1Miw4ICsxNDksNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGlj
c0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgTmF0
aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBO
YXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0Nv
bnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgSW1hZ2VP
cmllbnRhdGlvbiBvcmllbnRhdGlvbkZvckN1cnJlbnRGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIElt
YWdlT3JpZW50YXRpb24oKTsgfQotICAgIHZpcnR1YWwgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBm
cmFtZXNOYXRpdmVJbWFnZXMoKSB7IHJldHVybiB7IH07IH0KIAogICAgIC8vIEFjY2Vzc29ycyBm
b3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAJKHJldmlzaW9uIDIzMDMyOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklt
YWdlU291cmNlLmgiCiAKLSNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkJpdG1hcEltYWdl
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTM4LDcgKzM4LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1JbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoSW1hZ2UqIGltYWdlLCBBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCitJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoQml0bWFwSW1hZ2UqIGlt
YWdlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24g
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgOiBtX2ltYWdlKGltYWdlKQogICAgICwg
bV9hbHBoYU9wdGlvbihhbHBoYU9wdGlvbikKICAgICAsIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24oZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgJKHJldmlzaW9uIDIzMDMyOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDE5ICszNSwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IEJpdG1hcEltYWdlOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xhc3MgSW1hZ2U7CiBjbGFz
cyBJbWFnZURlY29kZXI7CiBjbGFzcyBVUkw7CiAKIGNsYXNzIEltYWdlU291cmNlIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlU291cmNlPiB7CiAgICAgZnJpZW5kIGNsYXNzIEJp
dG1hcEltYWdlOwogcHVibGljOgotICAgIEltYWdlU291cmNlKEltYWdlKiwgQWxwaGFPcHRpb24g
PSBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24g
PSBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6QXBwbGllZCk7Ci0gICAgSW1hZ2VTb3VyY2Uo
TmF0aXZlSW1hZ2VQdHImJik7CiAgICAgfkltYWdlU291cmNlKCk7CiAKLSAgICBzdGF0aWMgUmVm
PEltYWdlU291cmNlPiBjcmVhdGUoSW1hZ2UqIGltYWdlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlv
biA9IEFscGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiA9IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
OjpBcHBsaWVkKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VTb3VyY2U+IGNyZWF0ZShCaXRtYXBJbWFn
ZSogaW1hZ2UsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uID0gQWxwaGFPcHRpb246OlByZW11bHRp
cGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uID0gR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb246OkFwcGxpZWQpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZVNvdXJjZShpbWFnZSwgYWxwaGFPcHRpb24sIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAgICAgfQpAQCAtMTIzLDYgKzEyMSw5IEBAIHB1
YmxpYzoKICAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7CiAK
IHByaXZhdGU6CisgICAgSW1hZ2VTb3VyY2UoQml0bWFwSW1hZ2UqLCBBbHBoYU9wdGlvbiA9IEFs
cGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiA9IEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpBcHBsaWVkKTsKKyAgICBJbWFnZVNvdXJjZShOYXRp
dmVJbWFnZVB0ciYmKTsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFQgKEltYWdlRGVjb2Rl
cjo6KmZ1bmN0b3IpKCkgY29uc3Q+CiAgICAgVCBtZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0VmFs
dWUsIHN0ZDo6b3B0aW9uYWw8VD4qIGNhY2hlZFZhbHVlID0gbnVsbHB0cik7CiAKQEAgLTE1NSw3
ICsxNTYsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0mKTsKIAotICAg
IEltYWdlKiBtX2ltYWdlIHsgbnVsbHB0ciB9OworICAgIEJpdG1hcEltYWdlKiBtX2ltYWdlIHsg
bnVsbHB0ciB9OwogICAgIFJlZlB0cjxJbWFnZURlY29kZXI+IG1fZGVjb2RlcjsKICAgICBBbHBo
YU9wdGlvbiBtX2FscGhhT3B0aW9uIHsgQWxwaGFPcHRpb246OlByZW11bHRpcGxpZWQgfTsKICAg
ICBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
IHsgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb246OkFwcGxpZWQgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCShyZXZpc2lvbiAyMzAzMjkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDgsMTQgKzQ4LDE0IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6
OkltYWdlRXh0cmFjdG9yOjoKICAgICAvLyBXZSBuZWVkIHRoaXMgdG8gc3RheSBpbiBzY29wZSBi
ZWNhdXNlIHRoZSBuYXRpdmUgaW1hZ2UgaXMganVzdCBhIHNoYWxsb3cgY29weSBvZiB0aGUgZGF0
YS4KICAgICBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiA9IHByZW11bHRpcGx5QWxwaGEgPyBBbHBo
YU9wdGlvbjo6UHJlbXVsdGlwbGllZCA6IEFscGhhT3B0aW9uOjpOb3RQcmVtdWx0aXBsaWVkOwog
ICAgIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
ID0gaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgPyBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bjo6SWdub3JlZCA6IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpBcHBsaWVkOwotICAgIElt
YWdlU291cmNlIHNvdXJjZShudWxscHRyLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOworICAgIGF1dG8gc291cmNlID0gSW1hZ2VTb3VyY2U6OmNyZWF0ZShudWxscHRy
LCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIG1fYWxwaGFP
cCA9IEFscGhhRG9Ob3RoaW5nOwogCiAgICAgaWYgKG1faW1hZ2UtPmRhdGEoKSkgewotICAgICAg
ICBzb3VyY2Uuc2V0RGF0YShtX2ltYWdlLT5kYXRhKCksIHRydWUpOwotICAgICAgICBpZiAoIXNv
dXJjZS5mcmFtZUNvdW50KCkpCisgICAgICAgIHNvdXJjZS0+c2V0RGF0YShtX2ltYWdlLT5kYXRh
KCksIHRydWUpOworICAgICAgICBpZiAoIXNvdXJjZS0+ZnJhbWVDb3VudCgpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IHNvdXJjZS5jcmVhdGVG
cmFtZUltYWdlQXRJbmRleCgwKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBzb3VyY2UtPmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1faW1hZ2VT
dXJmYWNlID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAg
Ly8gMS4gRm9yIHRleEltYWdlMkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBu
byBQcmVtdWx0aXBseUFscGhhIGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBp
cyAweEZGIGZvciBlYWNoIHBpeGVsLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAJKHJldmlz
aW9uIDIzMDMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dDNEQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsMTIgKzMyNSwxMiBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBib29sIGhhc0FscGhhID0gIW1faW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9C
ZU9wYXF1ZSgpOwogICAgIGlmICgoaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgfHwgKGhhc0Fs
cGhhICYmICFwcmVtdWx0aXBseUFscGhhKSkgJiYgbV9pbWFnZS0+ZGF0YSgpKSB7Ci0gICAgICAg
IEltYWdlU291cmNlIHNvdXJjZShudWxscHRyLCBBbHBoYU9wdGlvbjo6Tm90UHJlbXVsdGlwbGll
ZCwgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgPyBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bjo6SWdub3JlZCA6IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpBcHBsaWVkKTsKLSAgICAg
ICAgc291cmNlLnNldERhdGEobV9pbWFnZS0+ZGF0YSgpLCB0cnVlKTsKLSAgICAgICAgaWYgKCFz
b3VyY2UuZnJhbWVDb3VudCgpKQorICAgICAgICBhdXRvIHNvdXJjZSA9IEltYWdlU291cmNlOjpj
cmVhdGUobnVsbHB0ciwgQWxwaGFPcHRpb246Ok5vdFByZW11bHRpcGxpZWQsIGlnbm9yZUdhbW1h
QW5kQ29sb3JQcm9maWxlID8gR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb246Oklnbm9yZWQgOiBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6QXBwbGllZCk7CisgICAgICAgIHNvdXJjZS0+c2V0
RGF0YShtX2ltYWdlLT5kYXRhKCksIHRydWUpOworICAgICAgICBpZiAoIXNvdXJjZS0+ZnJhbWVD
b3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIG1fZGVjb2RlZElt
YWdlID0gc291cmNlLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApOworICAgICAgICBtX2RlY29k
ZWRJbWFnZSA9IHNvdXJjZS0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7CiAgICAgICAgIG1f
Y2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlOwogICAgIH0gZWxzZQogICAgICAgICBtX2NnSW1hZ2Ug
PSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQkocmV2aXNpb24g
MjMwMzI5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsOSArMTA1LDcgQEAgQ0ZEYXRhUmVmIEJpdG1hcElt
YWdlOjp0aWZmUmVwcmVzZW50YXRpbwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIG1f
dGlmZlJlcCA9IGRhdGE7Ci0gICAgcmV0dXJuIG1fdGlmZlJlcC5nZXQoKTsKLQotICAgIAorICAg
IHJldHVybiBtX3RpZmZSZXAuZ2V0KCk7ICAgIAogfQogCiAjaWYgVVNFKEFQUEtJVCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCShy
ZXZpc2lvbiAyMzAzMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAi
UmVuZGVyTGF5ZXJCYWNraW5nLmgiCiAKKyNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgogI2luY2x1
ZGUgIkNTU0FuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgpAQCAtMjE4OSwxMCArMjE5
MCwxMCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6aXNEaXJlY3RseUNvbXBvCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgYXV0byogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+
aW1hZ2VGb3JSZW5kZXJlcigmaW1hZ2VSZW5kZXJlcik7Ci0gICAgICAgIGlmICghaW1hZ2UtPmlz
Qml0bWFwSW1hZ2UoKSkKKyAgICAgICAgaWYgKCFpczxCaXRtYXBJbWFnZT4oaW1hZ2UpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmIChpbWFnZS0+b3JpZW50YXRpb25G
b3JDdXJyZW50RnJhbWUoKSAhPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikKKyAgICAgICAgaWYg
KGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2UpLm9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1l
KCkgIT0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICNpZiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>