<?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>90949</bug_id>
          
          <creation_ts>2012-07-11 01:06:31 -0700</creation_ts>
          <short_desc>Optimizing blend filter to ARM-NEON with intrinsics</short_desc>
          <delta_ts>2017-05-11 04:46:50 -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>SVG</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gabor Rapcsanyi">rgabor</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>rahul.g</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>666490</commentid>
    <comment_count>0</comment_count>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2012-07-11 01:06:31 -0700</bug_when>
    <thetext>Fasten up the blending filter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667468</commentid>
    <comment_count>1</comment_count>
      <attachid>151874</attachid>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2012-07-12 00:46:25 -0700</bug_when>
    <thetext>Created attachment 151874
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667542</commentid>
    <comment_count>2</comment_count>
      <attachid>151874</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-07-12 02:10:38 -0700</bug_when>
    <thetext>Comment on attachment 151874
patch

Nice patch! Few comments:

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        The feBlend SVG filter modes can be greatly fasten up with ARM-NEON since
&gt; +        we are able to calculate with 2 pixels (8 channels) at the same time.
&gt; +        The code is written with NEON intrinsics and it doesn&apos;t affect the
&gt; +        general - it has the same behaviour as the original algorithm.

Please mention the speedup of this patch somewhere.

&gt; Source/WebCore/platform/graphics/filters/FEBlend.cpp:159
&gt; +    if (pixelArrayLength &gt; 4)
&gt; +        platformApplyNEON(srcPixelArrayA, srcPixelArrayB, dstPixelArray, pixelArrayLength);
&gt; +    else
&gt; +        platformApplyGeneric(srcPixelArrayA, srcPixelArrayB, dstPixelArray, pixelArrayLength);

I think a single pixel case is rare, and would not worth to include the object code of the generic just because of this. It would be better to create an array with 2 pixels, copy there the one pixel, perform the algorithm and copy back the result.

&gt; Source/WebCore/platform/graphics/filters/arm/FEBlendNEON.h:39
&gt; +static inline uint16x8_t div255(uint16x8_t num, uint16x8_t sixteenConst255, uint16x8_t sixteenConstOne)

I don&apos;t like introducing global symbols like these. Can\t we simply move them inside the body of the function or define them as part of FEBlend?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668937</commentid>
    <comment_count>3</comment_count>
      <attachid>152235</attachid>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2012-07-13 06:08:04 -0700</bug_when>
    <thetext>Created attachment 152235
patch2

(In reply to comment #2)
&gt; (From update of attachment 151874 [details])
&gt; Nice patch! Few comments:
&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=151874&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        The feBlend SVG filter modes can be greatly fasten up with ARM-NEON since
&gt; &gt; +        we are able to calculate with 2 pixels (8 channels) at the same time.
&gt; &gt; +        The code is written with NEON intrinsics and it doesn&apos;t affect the
&gt; &gt; +        general - it has the same behaviour as the original algorithm.
&gt; 
&gt; Please mention the speedup of this patch somewhere.
&gt; 

With this NEON optimization the blending is ~4.5 times faster for each mode.

&gt; &gt; Source/WebCore/platform/graphics/filters/FEBlend.cpp:159
&gt; &gt; +    if (pixelArrayLength &gt; 4)
&gt; &gt; +        platformApplyNEON(srcPixelArrayA, srcPixelArrayB, dstPixelArray, pixelArrayLength);
&gt; &gt; +    else
&gt; &gt; +        platformApplyGeneric(srcPixelArrayA, srcPixelArrayB, dstPixelArray, pixelArrayLength);
&gt; 
&gt; I think a single pixel case is rare, and would not worth to include the object code of the generic just because of this. It would be better to create an array with 2 pixels, copy there the one pixel, perform the algorithm and copy back the result.
&gt; 

Ok I solved that case with platformApplyNEON as well.

&gt; &gt; Source/WebCore/platform/graphics/filters/arm/FEBlendNEON.h:39
&gt; &gt; +static inline uint16x8_t div255(uint16x8_t num, uint16x8_t sixteenConst255, uint16x8_t sixteenConstOne)
&gt; 
&gt; I don&apos;t like introducing global symbols like these. Can\t we simply move them inside the body of the function or define them as part of FEBlend?

I wrapped the div255 and the others into FEBlendUtilitiesNEON class so they are not global symbols anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669043</commentid>
    <comment_count>4</comment_count>
      <attachid>152235</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-07-13 08:07:46 -0700</bug_when>
    <thetext>Comment on attachment 152235
patch2

r=me

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        The feBlend SVG filter modes can be greatly fasten up with ARM-NEON since
&gt; +        we are able to calculate with 2 pixels (8 channels) at the same time.
&gt; +        The code is written with NEON intrinsics and it doesn&apos;t affect the
&gt; +        general - it has the same behaviour as the original algorithm.

Please mention the speedup.

&gt; Source/WebCore/platform/graphics/filters/FEBlend.cpp:157
&gt; +    else { // if there is just one pixel

Please use full sentences for comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669069</commentid>
    <comment_count>5</comment_count>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2012-07-13 08:35:30 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 152235 [details])
&gt; r=me
&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=152235&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        The feBlend SVG filter modes can be greatly fasten up with ARM-NEON since
&gt; &gt; +        we are able to calculate with 2 pixels (8 channels) at the same time.
&gt; &gt; +        The code is written with NEON intrinsics and it doesn&apos;t affect the
&gt; &gt; +        general - it has the same behaviour as the original algorithm.
&gt; 
&gt; Please mention the speedup.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/FEBlend.cpp:157
&gt; &gt; +    else { // if there is just one pixel
&gt; 
&gt; Please use full sentences for comments.

I corrected those, thanks for the review.
Patch landed: http://trac.webkit.org/changeset/122582</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669825</commentid>
    <comment_count>6</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-07-14 06:37:39 -0700</bug_when>
    <thetext>Could the same be written using the generic GCC vector functions, so that it would work on more than one platform?

What test-case are you using to tests speed-up?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669847</commentid>
    <comment_count>7</comment_count>
      <attachid>152427</attachid>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2012-07-14 10:41:13 -0700</bug_when>
    <thetext>Created attachment 152427
test case

(In reply to comment #6)
&gt; Could the same be written using the generic GCC vector functions, so that it would work on more than one platform?
&gt; 

I&apos;m not very familiar with GCC vector functions but I think it could work as well.

&gt; What test-case are you using to tests speed-up?

I uploaded the test case which I used. But I&apos;ve just measured platformApplyGeneric() and platformApplyNEON() itself inside WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307236</commentid>
    <comment_count>8</comment_count>
      <attachid>309706</attachid>
    <who name="Rahul Gupta">rahul.g</who>
    <bug_when>2017-05-11 04:45:46 -0700</bug_when>
    <thetext>Created attachment 309706
SVG test case for ARM_NEON</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307237</commentid>
    <comment_count>9</comment_count>
    <who name="Rahul Gupta">rahul.g</who>
    <bug_when>2017-05-11 04:46:50 -0700</bug_when>
    <thetext>ARM_NEON_INTRINSICS Optimization causes WebkitWebProcess to crash, if  pixelArrayLength is not in multiple of 8, i.e pixelArray contains ODD NUMBER of pixels.

Please find attached test case (SVG test case for ARM_NEON).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151874</attachid>
            <date>2012-07-12 00:46:25 -0700</date>
            <delta_ts>2012-07-13 06:08:04 -0700</delta_ts>
            <desc>patch</desc>
            <filename>blend_intrinsics.patch</filename>
            <type>text/plain</type>
            <size>19282</size>
            <attacher name="Gabor Rapcsanyi">rgabor</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjI1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDEyLTA3LTEyICBHYWJvciBS
YXBjc2FueWkgIDxyZ2Fib3JAd2Via2l0Lm9yZz4KKworICAgICAgICBPcHRpbWl6aW5nIGJsZW5k
IGZpbHRlciB0byBBUk0tTkVPTiB3aXRoIGludHJpbnNpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwOTQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGZlQmxlbmQgU1ZHIGZpbHRlciBtb2RlcyBj
YW4gYmUgZ3JlYXRseSBmYXN0ZW4gdXAgd2l0aCBBUk0tTkVPTiBzaW5jZQorICAgICAgICB3ZSBh
cmUgYWJsZSB0byBjYWxjdWxhdGUgd2l0aCAyIHBpeGVscyAoOCBjaGFubmVscykgYXQgdGhlIHNh
bWUgdGltZS4KKyAgICAgICAgVGhlIGNvZGUgaXMgd3JpdHRlbiB3aXRoIE5FT04gaW50cmluc2lj
cyBhbmQgaXQgZG9lc24ndCBhZmZlY3QgdGhlCisgICAgICAgIGdlbmVyYWwgLSBpdCBoYXMgdGhl
IHNhbWUgYmVoYXZpb3VyIGFzIHRoZSBvcmlnaW5hbCBhbGdvcml0aG0uCisKKyAgICAgICAgRXhp
c3RpbmcgdGVzdHMgY292ZXIgdGhpcyBpc3N1ZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5R2VuZXJpYyk6CisgICAgICAgIChXZWJD
b3JlOjpGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmg6CisgICAgICAg
IChGRUJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9GRUJs
ZW5kTkVPTi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
ZGl2MjU1KTogaW50ZWdlciBkaXZpc29uIHdpdGggMjU1CisgICAgICAgIChXZWJDb3JlOjpub3Jt
YWxORU9OKTogY2FsY3VsYXRlIG5vcm1hbCBtb2RlIGJsZW5kaW5nIGZvciB0d28gcGl4ZWxzCisg
ICAgICAgIChXZWJDb3JlOjptdWx0aXBseU5FT04pOiBjYWxjdWxhdGUgbXVsdGlwbHkgbW9kZSBi
bGVuZGluZyBmb3IgdHdvIHBpeGVscworICAgICAgICAoV2ViQ29yZTo6c2NyZWVuTkVPTik6IGNh
bGN1bGF0ZSBzY3JlZW4gbW9kZSBibGVuZGluZyBmb3IgdHdvIHBpeGVscworICAgICAgICAoV2Vi
Q29yZTo6ZGFya2VuTkVPTik6IGNhbGN1bGF0ZSBkYXJrZW4gbW9kZSBibGVuZGluZyBmb3IgdHdv
IHBpeGVscworICAgICAgICAoV2ViQ29yZTo6bGlnaHRlbk5FT04pOiBjYWxjdWxhdGUgbGlnaHRl
biBtb2RlIGJsZW5kaW5nIGZvciB0d28gcGl4ZWxzCisgICAgICAgIChXZWJDb3JlOjpGRUJsZW5k
OjpwbGF0Zm9ybUFwcGx5TkVPTik6CisKIDIwMTItMDctMTAgIFJheW1vbmQgVG95ICA8cnRveUBn
b29nbGUuY29tPgogCiAgICAgICAgIEF1ZGlvRklGTyBub3QgY29ycmVjdGx5IHdyYXBwaW5nIHRo
ZSB3cml0ZSBpbmRleCBvbiBwdXNoCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24g
MTIyMjU0KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEyNDIsNiArMTI0Miw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL2FybS9ORU9OSGVscGVycy5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9hcm0vRkVCbGVuZE5FT04uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL0ZF
Q29tcG9zaXRlQXJpdGhtZXRpY05FT04uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
YXJtL0ZFR2F1c3NpYW5CbHVyTkVPTi5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9h
cm0vRkVMaWdodGluZ05FT04uY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0J
KHJldmlzaW9uIDEyMjI1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0J
KHdvcmtpbmcgY29weSkKQEAgLTMyODUsNiArMzI4NSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3Vy
Y2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RM
aWdodFNvdXJjZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L2FybS9ORU9OSGVscGVycy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL2FybS9GRUJsZW5kTkVPTi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL2FybS9GRUNvbXBvc2l0ZUFyaXRobWV0aWNORU9OLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL0ZFR2F1c3NpYW5CbHVyTkVPTi5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9GRUxpZ2h0
aW5nTkVPTi5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMjIyNTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0yMjc0LDYgKzIyNzQsNyBA
QCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhh
LmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9ORU9OSGVscGVycy5oIFwKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9GRUJsZW5kTkVPTi5oIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL2FybS9GRUNvbXBvc2l0ZUFyaXRobWV0aWNORU9OLmggXAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL0ZFR2F1c3NpYW5CbHVyTkVPTi5oIFwKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9GRUxpZ2h0aW5nTkVPTi5oIFwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEyMjI1NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzcwOSw2ICszNzA5LDcgQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL05FT05IZWxwZXJzLmgnLAorICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL0ZFQmxlbmRORU9OLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL0ZFQ29tcG9zaXRlQXJp
dGhtZXRpY05FT04uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9h
cm0vRkVHYXVzc2lhbkJsdXJORU9OLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvYXJtL0ZFTGlnaHRpbmdORU9OLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMTIyMjU0KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkK
QEAgLTMxNTQ1LDYgKzMxNTQ1LDEwIEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZp
bGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xhcm1c
RkVCbGVuZE5FT04uaCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQogCQkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXEZFQ29sb3JNYXRyaXgu
Y3BwIgogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjIyNTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMzI2LDYgKzEwMzI2LDcgQEAKIAkJOTM4MTkyMDQwRjg3RTFFQzAwRDUzNTJB
IC8qIEJpbmFyeVByb3BlcnR5TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBCaW5hcnlQcm9wZXJ0eUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM4
MkFBQjEwRDhDMzg2MTAwRjM1N0E2IC8qIE5vZGVXaXRoSW5kZXguaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTm9kZVdpdGhJbmRleC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5MzgyREY1NzEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFjZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvclNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzOEM0OTY4MTVBRDY3RTMwMEZDQjJFMSAvKiBGRUJsZW5kTkVPTi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGRUJsZW5kTkVPTi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5MzhFNjVGMDA5RjA5ODQwMDA4QTQ4RUMgLyogSlNIVE1MRWxl
bWVudFdyYXBwZXJGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTM4RTY1RjYwOUYwOTg1RDAwOEE0OEVDIC8qIEpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9y
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MRWxlbWVu
dFdyYXBwZXJGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM4RTY2
MjUwOUYwOTk1NjAwOEE0OEVDIC8qIEhUTUxDYW52YXNFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBIVE1MQ2FudmFzRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNTExNyw2ICsxNTExOCw3IEBACiAJCTQ5RUNFQjVDMTQ5OTc5MEQwMENERDNBNCAv
KiBhcm0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTkz
OEM0OTY4MTVBRDY3RTMwMEZDQjJFMSAvKiBGRUJsZW5kTkVPTi5oICovLAogCQkJCTQ5RUNFQjVF
MTQ5OTc5MEQwMENERDNBNCAvKiBGRUNvbXBvc2l0ZUFyaXRobWV0aWNORU9OLmggKi8sCiAJCQkJ
NDlFQ0VCNjAxNDk5NzkwRDAwQ0REM0E0IC8qIEZFR2F1c3NpYW5CbHVyTkVPTi5oICovLAogCQkJ
CTkzMDA2MkQ3MTU5QjQ1QjYwMEFDRDQ4QSAvKiBORU9OSGVscGVycy5oICovLApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQu
Y3BwCShyZXZpc2lvbiAxMjIyNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQmxlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAK
ICNpZiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJGRUJsZW5kLmgiCisjaW5jbHVkZSAiRkVC
bGVuZE5FT04uaCIKIAogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQu
aCIKQEAgLTg2LDI2ICs4NywxMiBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgbGlnaHRl
bih1bnNpCiAgICAgcmV0dXJuICgoc3RkOjptYXgoKDI1NSAtIGFscGhhQSkgKiBjb2xvckIgKyBj
b2xvckEgKiAyNTUsICgyNTUgLSBhbHBoYUIpICogY29sb3JBICsgY29sb3JCICogMjU1KSkgLyAy
NTUpOwogfQogCi12b2lkIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZF
QmxlbmQ6OnBsYXRmb3JtQXBwbHlHZW5lcmljKFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+
IHBpeGVsQXJyYXlBLCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwaXhlbEFycmF5QiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVWludDhDbGFtcGVkQXJyYXkqIGRz
dFBpeGVsQXJyYXksIHVuc2lnbmVkIHBpeGVsQXJyYXlMZW5ndGgpCiB7Ci0gICAgRmlsdGVyRWZm
ZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwotICAgIEZpbHRlckVmZmVjdCogaW4yID0gaW5wdXRF
ZmZlY3QoMSk7Ci0KLSAgICBBU1NFUlQobV9tb2RlID4gRkVCTEVORF9NT0RFX1VOS05PV04pOwot
ICAgIEFTU0VSVChtX21vZGUgPD0gRkVCTEVORF9NT0RFX0xJR0hURU4pOworICAgIFJlZlB0cjxV
aW50OENsYW1wZWRBcnJheT4gc3JjUGl4ZWxBcnJheUEgPSBwaXhlbEFycmF5QTsKKyAgICBSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IHNyY1BpeGVsQXJyYXlCID0gcGl4ZWxBcnJheUI7CiAKLSAg
ICBVaW50OENsYW1wZWRBcnJheSogZHN0UGl4ZWxBcnJheSA9IGNyZWF0ZVByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdCgpOwotICAgIGlmICghZHN0UGl4ZWxBcnJheSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgSW50UmVjdCBlZmZlY3RBRHJhd2luZ1JlY3QgPSByZXF1ZXN0ZWRSZWdpb25PZklucHV0
SW1hZ2VEYXRhKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKLSAgICBSZWZQdHI8VWludDhDbGFt
cGVkQXJyYXk+IHNyY1BpeGVsQXJyYXlBID0gaW4tPmFzUHJlbXVsdGlwbGllZEltYWdlKGVmZmVj
dEFEcmF3aW5nUmVjdCk7Ci0KLSAgICBJbnRSZWN0IGVmZmVjdEJEcmF3aW5nUmVjdCA9IHJlcXVl
c3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKLSAg
ICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHNyY1BpeGVsQXJyYXlCID0gaW4yLT5hc1ByZW11
bHRpcGxpZWRJbWFnZShlZmZlY3RCRHJhd2luZ1JlY3QpOwotCi0gICAgdW5zaWduZWQgcGl4ZWxB
cnJheUxlbmd0aCA9IHNyY1BpeGVsQXJyYXlBLT5sZW5ndGgoKTsKLSAgICBBU1NFUlQocGl4ZWxB
cnJheUxlbmd0aCA9PSBzcmNQaXhlbEFycmF5Qi0+bGVuZ3RoKCkpOwogICAgIGZvciAodW5zaWdu
ZWQgcGl4ZWxPZmZzZXQgPSAwOyBwaXhlbE9mZnNldCA8IHBpeGVsQXJyYXlMZW5ndGg7IHBpeGVs
T2Zmc2V0ICs9IDQpIHsKICAgICAgICAgdW5zaWduZWQgY2hhciBhbHBoYUEgPSBzcmNQaXhlbEFy
cmF5QS0+aXRlbShwaXhlbE9mZnNldCArIDMpOwogICAgICAgICB1bnNpZ25lZCBjaGFyIGFscGhh
QiA9IHNyY1BpeGVsQXJyYXlCLT5pdGVtKHBpeGVsT2Zmc2V0ICsgMyk7CkBAIC0xNDMsNiArMTMw
LDM4IEBAIHZvaWQgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICB9CiB9CiAK
K3ZvaWQgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3sKKyAgICBGaWx0ZXJFZmZl
Y3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CisgICAgRmlsdGVyRWZmZWN0KiBpbjIgPSBpbnB1dEVm
ZmVjdCgxKTsKKworICAgIEFTU0VSVChtX21vZGUgPiBGRUJMRU5EX01PREVfVU5LTk9XTik7Cisg
ICAgQVNTRVJUKG1fbW9kZSA8PSBGRUJMRU5EX01PREVfTElHSFRFTik7CisKKyAgICBVaW50OENs
YW1wZWRBcnJheSogZHN0UGl4ZWxBcnJheSA9IGNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3Vs
dCgpOworICAgIGlmICghZHN0UGl4ZWxBcnJheSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSW50
UmVjdCBlZmZlY3RBRHJhd2luZ1JlY3QgPSByZXF1ZXN0ZWRSZWdpb25PZklucHV0SW1hZ2VEYXRh
KGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+
IHNyY1BpeGVsQXJyYXlBID0gaW4tPmFzUHJlbXVsdGlwbGllZEltYWdlKGVmZmVjdEFEcmF3aW5n
UmVjdCk7CisKKyAgICBJbnRSZWN0IGVmZmVjdEJEcmF3aW5nUmVjdCA9IHJlcXVlc3RlZFJlZ2lv
bk9mSW5wdXRJbWFnZURhdGEoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKKyAgICBSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IHNyY1BpeGVsQXJyYXlCID0gaW4yLT5hc1ByZW11bHRpcGxpZWRJ
bWFnZShlZmZlY3RCRHJhd2luZ1JlY3QpOworCisgICAgdW5zaWduZWQgcGl4ZWxBcnJheUxlbmd0
aCA9IHNyY1BpeGVsQXJyYXlBLT5sZW5ndGgoKTsKKyAgICBBU1NFUlQocGl4ZWxBcnJheUxlbmd0
aCA9PSBzcmNQaXhlbEFycmF5Qi0+bGVuZ3RoKCkpOworCisjaWYgSEFWRShBUk1fTkVPTl9JTlRS
SU5TSUNTKQorICAgIC8vIGlmIGp1c3Qgb25lIHBpeGVsIHRoZW4gZmFsbGluZyBiYWNrIHRvIGdl
bmVyaWMKKyAgICBpZiAocGl4ZWxBcnJheUxlbmd0aCA+IDQpCisgICAgICAgIHBsYXRmb3JtQXBw
bHlORU9OKHNyY1BpeGVsQXJyYXlBLCBzcmNQaXhlbEFycmF5QiwgZHN0UGl4ZWxBcnJheSwgcGl4
ZWxBcnJheUxlbmd0aCk7CisgICAgZWxzZQorICAgICAgICBwbGF0Zm9ybUFwcGx5R2VuZXJpYyhz
cmNQaXhlbEFycmF5QSwgc3JjUGl4ZWxBcnJheUIsIGRzdFBpeGVsQXJyYXksIHBpeGVsQXJyYXlM
ZW5ndGgpOworI2Vsc2UKKyAgICBwbGF0Zm9ybUFwcGx5R2VuZXJpYyhzcmNQaXhlbEFycmF5QSwg
c3JjUGl4ZWxBcnJheUIsIGRzdFBpeGVsQXJyYXksIHBpeGVsQXJyYXlMZW5ndGgpOworI2VuZGlm
Cit9CisKIHZvaWQgRkVCbGVuZDo6ZHVtcCgpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAkocmV2aXNpb24gMTIy
MjU0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5k
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDExIEBAIHB1YmxpYzoKICAgICBCbGVuZE1v
ZGVUeXBlIGJsZW5kTW9kZSgpIGNvbnN0OwogICAgIGJvb2wgc2V0QmxlbmRNb2RlKEJsZW5kTW9k
ZVR5cGUpOwogCisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5R2VuZXJpYyhQYXNzUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBwaXhlbEFycmF5QSwgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
cGl4ZWxBcnJheUIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVaW50OENsYW1wZWRB
cnJheSogZHN0UGl4ZWxBcnJheSwgdW5zaWduZWQgcGl4ZWxBcnJheUxlbmd0aCk7CisgICAgdm9p
ZCBwbGF0Zm9ybUFwcGx5TkVPTihQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwaXhlbEFy
cmF5QSwgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcGl4ZWxBcnJheUIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVaW50OENsYW1wZWRBcnJheSogZHN0UGl4ZWxBcnJheSwgdW5z
aWduZWQgY29sb3JBcnJheUxlbmd0aCk7CisKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBs
eVNvZnR3YXJlKCk7CiAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9hcm0vRkVCbGVuZE5FT04uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9GRUJs
ZW5kTkVPTi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9hcm0vRkVCbGVuZE5FT04uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNzUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHYWJvciBSYXBjc2FueWkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFVOSVZFUlNJVFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVU5JVkVSU0lUWSBPRiBTWkVHRUQgT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZFQmxlbmRO
RU9OX2gKKyNkZWZpbmUgRkVCbGVuZE5FT05faAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CisKKyNpZiBFTkFCTEUoRklMVEVSUykgJiYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQorCisj
aW5jbHVkZSAiRkVCbGVuZC5oIgorI2luY2x1ZGUgPGFybV9uZW9uLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RhdGljIGlubGluZSB1aW50MTZ4OF90IGRpdjI1NSh1aW50MTZ4OF90IG51
bSwgdWludDE2eDhfdCBzaXh0ZWVuQ29uc3QyNTUsIHVpbnQxNng4X3Qgc2l4dGVlbkNvbnN0T25l
KQoreworICAgIHVpbnQxNng4X3QgcXVvdGllbnQgPSB2c2hycV9uX3UxNihudW0sIDgpOworICAg
IHVpbnQxNng4X3QgcmVtYWluZGVyID0gdmFkZHFfdTE2KHZzdWJxX3UxNihudW0sIHZtdWxxX3Ux
NihzaXh0ZWVuQ29uc3QyNTUsIHF1b3RpZW50KSksIHNpeHRlZW5Db25zdE9uZSk7CisgICAgcmV0
dXJuIHZhZGRxX3UxNihxdW90aWVudCwgdnNocnFfbl91MTYocmVtYWluZGVyLCA4KSk7Cit9CisK
K3N0YXRpYyBpbmxpbmUgdWludDE2eDhfdCBub3JtYWxORU9OKHVpbnQxNng4X3QgcGl4ZWxBLCB1
aW50MTZ4OF90IHBpeGVsQiwgdWludDE2eDhfdCBhbHBoYUEsIHVpbnQxNng4X3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZ4OF90IHNpeHRlZW5Db25zdDI1NSwg
dWludDE2eDhfdCBzaXh0ZWVuQ29uc3RPbmUpCit7CisgICAgdWludDE2eDhfdCB0bXAxID0gdnN1
YnFfdTE2KHNpeHRlZW5Db25zdDI1NSwgYWxwaGFBKTsKKyAgICB1aW50MTZ4OF90IHRtcDIgPSB2
bXVscV91MTYodG1wMSwgcGl4ZWxCKTsKKyAgICB1aW50MTZ4OF90IHRtcDMgPSBkaXYyNTUodG1w
Miwgc2l4dGVlbkNvbnN0MjU1LCBzaXh0ZWVuQ29uc3RPbmUpOworICAgIHJldHVybiB2YWRkcV91
MTYodG1wMywgcGl4ZWxBKTsKK30KKworc3RhdGljIGlubGluZSB1aW50MTZ4OF90IG11bHRpcGx5
TkVPTih1aW50MTZ4OF90IHBpeGVsQSwgdWludDE2eDhfdCBwaXhlbEIsIHVpbnQxNng4X3QgYWxw
aGFBLCB1aW50MTZ4OF90IGFscGhhQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDE2eDhfdCBzaXh0ZWVuQ29uc3QyNTUsIHVpbnQxNng4X3Qgc2l4dGVlbkNvbnN0
T25lKQoreworICAgIHVpbnQxNng4X3QgdG1wMSA9IHZzdWJxX3UxNihzaXh0ZWVuQ29uc3QyNTUs
IGFscGhhQSk7CisgICAgdWludDE2eDhfdCB0bXAyID0gdm11bHFfdTE2KHRtcDEsIHBpeGVsQik7
CisgICAgdWludDE2eDhfdCB0bXAzID0gdmFkZHFfdTE2KHZzdWJxX3UxNihzaXh0ZWVuQ29uc3Qy
NTUsIHBpeGVsQiksIHBpeGVsQik7CisgICAgdWludDE2eDhfdCB0bXA0ID0gdm11bHFfdTE2KHRt
cDMsIHBpeGVsQSk7CisgICAgdWludDE2eDhfdCB0bXA1ID0gdmFkZHFfdTE2KHRtcDIsIHRtcDQp
OworICAgIHJldHVybiBkaXYyNTUodG1wNSwgc2l4dGVlbkNvbnN0MjU1LCBzaXh0ZWVuQ29uc3RP
bmUpOworfQorCitzdGF0aWMgaW5saW5lIHVpbnQxNng4X3Qgc2NyZWVuTkVPTih1aW50MTZ4OF90
IHBpeGVsQSwgdWludDE2eDhfdCBwaXhlbEIsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZ4OF90IHNpeHRlZW5Db25zdDI1
NSwgdWludDE2eDhfdCBzaXh0ZWVuQ29uc3RPbmUpCit7CisgICAgdWludDE2eDhfdCB0bXAxID0g
dmFkZHFfdTE2KHBpeGVsQSwgcGl4ZWxCKTsKKyAgICB1aW50MTZ4OF90IHRtcDIgPSB2bXVscV91
MTYocGl4ZWxBLCBwaXhlbEIpOworICAgIHVpbnQxNng4X3QgdG1wMyA9IGRpdjI1NSh0bXAyLCBz
aXh0ZWVuQ29uc3QyNTUsIHNpeHRlZW5Db25zdE9uZSk7CisgICAgcmV0dXJuIHZzdWJxX3UxNih0
bXAxLCB0bXAzKTsKK30KKworc3RhdGljIGlubGluZSB1aW50MTZ4OF90IGRhcmtlbk5FT04odWlu
dDE2eDhfdCBwaXhlbEEsIHVpbnQxNng4X3QgcGl4ZWxCLCB1aW50MTZ4OF90IGFscGhhQSwgdWlu
dDE2eDhfdCBhbHBoYUIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MTZ4OF90IHNpeHRlZW5Db25zdDI1NSwgdWludDE2eDhfdCBzaXh0ZWVuQ29uc3RPbmUpCit7Cisg
ICAgdWludDE2eDhfdCB0bXAxID0gdnN1YnFfdTE2KHNpeHRlZW5Db25zdDI1NSwgYWxwaGFBKTsK
KyAgICB1aW50MTZ4OF90IHRtcDIgPSB2bXVscV91MTYodG1wMSwgcGl4ZWxCKTsKKyAgICB1aW50
MTZ4OF90IHRtcDMgPSBkaXYyNTUodG1wMiwgc2l4dGVlbkNvbnN0MjU1LCBzaXh0ZWVuQ29uc3RP
bmUpOworICAgIHVpbnQxNng4X3QgdG1wNCA9IHZhZGRxX3UxNih0bXAzLCBwaXhlbEEpOworCisg
ICAgdWludDE2eDhfdCB0bXA1ID0gdnN1YnFfdTE2KHNpeHRlZW5Db25zdDI1NSwgYWxwaGFCKTsK
KyAgICB1aW50MTZ4OF90IHRtcDYgPSB2bXVscV91MTYodG1wNSwgcGl4ZWxBKTsKKyAgICB1aW50
MTZ4OF90IHRtcDcgPSBkaXYyNTUodG1wNiwgc2l4dGVlbkNvbnN0MjU1LCBzaXh0ZWVuQ29uc3RP
bmUpOworICAgIHVpbnQxNng4X3QgdG1wOCA9IHZhZGRxX3UxNih0bXA3LCBwaXhlbEIpOworCisg
ICAgcmV0dXJuIHZtaW5xX3UxNih0bXA0LCB0bXA4KTsKK30KKworc3RhdGljIGlubGluZSB1aW50
MTZ4OF90IGxpZ2h0ZW5ORU9OKHVpbnQxNng4X3QgcGl4ZWxBLCB1aW50MTZ4OF90IHBpeGVsQiwg
dWludDE2eDhfdCBhbHBoYUEsIHVpbnQxNng4X3QgYWxwaGFCLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQxNng4X3Qgc2l4dGVlbkNvbnN0MjU1LCB1aW50MTZ4OF90
IHNpeHRlZW5Db25zdE9uZSkKK3sKKyAgICB1aW50MTZ4OF90IHRtcDEgPSB2c3VicV91MTYoc2l4
dGVlbkNvbnN0MjU1LCBhbHBoYUEpOworICAgIHVpbnQxNng4X3QgdG1wMiA9IHZtdWxxX3UxNih0
bXAxLCBwaXhlbEIpOworICAgIHVpbnQxNng4X3QgdG1wMyA9IGRpdjI1NSh0bXAyLCBzaXh0ZWVu
Q29uc3QyNTUsIHNpeHRlZW5Db25zdE9uZSk7CisgICAgdWludDE2eDhfdCB0bXA0ID0gdmFkZHFf
dTE2KHRtcDMsIHBpeGVsQSk7CisKKyAgICB1aW50MTZ4OF90IHRtcDUgPSB2c3VicV91MTYoc2l4
dGVlbkNvbnN0MjU1LCBhbHBoYUIpOworICAgIHVpbnQxNng4X3QgdG1wNiA9IHZtdWxxX3UxNih0
bXA1LCBwaXhlbEEpOworICAgIHVpbnQxNng4X3QgdG1wNyA9IGRpdjI1NSh0bXA2LCBzaXh0ZWVu
Q29uc3QyNTUsIHNpeHRlZW5Db25zdE9uZSk7CisgICAgdWludDE2eDhfdCB0bXA4ID0gdmFkZHFf
dTE2KHRtcDcsIHBpeGVsQik7CisKKyAgICByZXR1cm4gdm1heHFfdTE2KHRtcDQsIHRtcDgpOwor
fQorCit2b2lkIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlORU9OKFBhc3NSZWZQdHI8VWludDhDbGFt
cGVkQXJyYXk+IHBpeGVsQXJyYXlBLCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwaXhl
bEFycmF5QiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVWludDhDbGFtcGVkQXJy
YXkqIGRzdFBpeGVsQXJyYXksIHVuc2lnbmVkIGNvbG9yQXJyYXlMZW5ndGgpCit7CisgICAgUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBzcmNQaXhlbEFycmF5QSA9IHBpeGVsQXJyYXlBOworICAg
IFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3JjUGl4ZWxBcnJheUIgPSBwaXhlbEFycmF5QjsK
KworICAgIHVpbnQ4X3QqIHNvdXJjZVBpeGVsQSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+
KHNyY1BpeGVsQXJyYXlBLT5kYXRhKCkpOworICAgIHVpbnQ4X3QqIHNvdXJjZVBpeGVsQiA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHNyY1BpeGVsQXJyYXlCLT5kYXRhKCkpOworICAgIHVp
bnQ4X3QqIGRlc3RpbmF0aW9uUGl4ZWwgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkc3RQ
aXhlbEFycmF5LT5kYXRhKCkpOworCisgICAgdWludDE2eDhfdCBzaXh0ZWVuQ29uc3QyNTUgPSB2
ZHVwcV9uX3UxNigyNTUpOworICAgIHVpbnQxNng4X3Qgc2l4dGVlbkNvbnN0T25lID0gdmR1cHFf
bl91MTYoMSk7CisKKyAgICB1bnNpZ25lZCBjb2xvck9mZnNldCA9IDA7CisgICAgd2hpbGUgKGNv
bG9yT2Zmc2V0IDwgY29sb3JBcnJheUxlbmd0aCkgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGFs
cGhhQTEgPSBzcmNQaXhlbEFycmF5QS0+aXRlbShjb2xvck9mZnNldCArIDMpOworICAgICAgICB1
bnNpZ25lZCBjaGFyIGFscGhhQjEgPSBzcmNQaXhlbEFycmF5Qi0+aXRlbShjb2xvck9mZnNldCAr
IDMpOworICAgICAgICB1bnNpZ25lZCBjaGFyIGFscGhhQTIgPSBzcmNQaXhlbEFycmF5QS0+aXRl
bShjb2xvck9mZnNldCArIDcpOworICAgICAgICB1bnNpZ25lZCBjaGFyIGFscGhhQjIgPSBzcmNQ
aXhlbEFycmF5Qi0+aXRlbShjb2xvck9mZnNldCArIDcpOworCisgICAgICAgIHVpbnQxNng4X3Qg
ZG91YmJsZVBpeGVsQSA9IHZtb3ZsX3U4KHZsZDFfdTgoc291cmNlUGl4ZWxBICsgY29sb3JPZmZz
ZXQpKTsKKyAgICAgICAgdWludDE2eDhfdCBkb3ViYmxlUGl4ZWxCID0gdm1vdmxfdTgodmxkMV91
OChzb3VyY2VQaXhlbEIgKyBjb2xvck9mZnNldCkpOworICAgICAgICB1aW50MTZ4OF90IGFscGhh
QSA9IHZjb21iaW5lX3UxNih2ZHVwX25fdTE2KGFscGhhQTEpLCB2ZHVwX25fdTE2KGFscGhhQTIp
KTsKKyAgICAgICAgdWludDE2eDhfdCBhbHBoYUIgPSB2Y29tYmluZV91MTYodmR1cF9uX3UxNihh
bHBoYUIxKSwgdmR1cF9uX3UxNihhbHBoYUIyKSk7CisKKyAgICAgICAgdWludDE2eDhfdCByZXN1
bHQ7CisgICAgICAgIHN3aXRjaCAobV9tb2RlKSB7CisgICAgICAgIGNhc2UgRkVCTEVORF9NT0RF
X05PUk1BTDoKKyAgICAgICAgICAgIHJlc3VsdCA9IG5vcm1hbE5FT04oZG91YmJsZVBpeGVsQSwg
ZG91YmJsZVBpeGVsQiwgYWxwaGFBLCBhbHBoYUIsIHNpeHRlZW5Db25zdDI1NSwgc2l4dGVlbkNv
bnN0T25lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZFQkxFTkRfTU9ERV9N
VUxUSVBMWToKKyAgICAgICAgICAgIHJlc3VsdCA9IG11bHRpcGx5TkVPTihkb3ViYmxlUGl4ZWxB
LCBkb3ViYmxlUGl4ZWxCLCBhbHBoYUEsIGFscGhhQiwgc2l4dGVlbkNvbnN0MjU1LCBzaXh0ZWVu
Q29uc3RPbmUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRkVCTEVORF9NT0RF
X1NDUkVFTjoKKyAgICAgICAgICAgIHJlc3VsdCA9IHNjcmVlbk5FT04oZG91YmJsZVBpeGVsQSwg
ZG91YmJsZVBpeGVsQiwgYWxwaGFBLCBhbHBoYUIsIHNpeHRlZW5Db25zdDI1NSwgc2l4dGVlbkNv
bnN0T25lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZFQkxFTkRfTU9ERV9E
QVJLRU46CisgICAgICAgICAgICByZXN1bHQgPSBkYXJrZW5ORU9OKGRvdWJibGVQaXhlbEEsIGRv
dWJibGVQaXhlbEIsIGFscGhhQSwgYWxwaGFCLCBzaXh0ZWVuQ29uc3QyNTUsIHNpeHRlZW5Db25z
dE9uZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGRUJMRU5EX01PREVfTElH
SFRFTjoKKyAgICAgICAgICAgIHJlc3VsdCA9IGxpZ2h0ZW5ORU9OKGRvdWJibGVQaXhlbEEsIGRv
dWJibGVQaXhlbEIsIGFscGhhQSwgYWxwaGFCLCBzaXh0ZWVuQ29uc3QyNTUsIHNpeHRlZW5Db25z
dE9uZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGRUJMRU5EX01PREVfVU5L
Tk9XTjoKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJlc3VsdCA9IHZkdXBxX25fdTE2
KDApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICB2c3QxX3U4KGRl
c3RpbmF0aW9uUGl4ZWwgKyBjb2xvck9mZnNldCwgdm1vdm5fdTE2KHJlc3VsdCkpOworCisgICAg
ICAgIHVuc2lnbmVkIGNoYXIgYWxwaGFSMSA9IDI1NSAtICgoMjU1IC0gYWxwaGFBMSkgKiAoMjU1
IC0gYWxwaGFCMSkpIC8gMjU1OworICAgICAgICB1bnNpZ25lZCBjaGFyIGFscGhhUjIgPSAyNTUg
LSAoKDI1NSAtIGFscGhhQTIpICogKDI1NSAtIGFscGhhQjIpKSAvIDI1NTsKKworICAgICAgICBk
c3RQaXhlbEFycmF5LT5zZXQoY29sb3JPZmZzZXQgKyAzLCBhbHBoYVIxKTsKKyAgICAgICAgZHN0
UGl4ZWxBcnJheS0+c2V0KGNvbG9yT2Zmc2V0ICsgNywgYWxwaGFSMik7CisKKyAgICAgICAgY29s
b3JPZmZzZXQgKz0gODsKKyAgICAgICAgaWYgKGNvbG9yT2Zmc2V0ID4gY29sb3JBcnJheUxlbmd0
aCkgeworICAgICAgICAgICAgQVNTRVJUKGNvbG9yT2Zmc2V0IC0gNCA9PSBjb2xvckFycmF5TGVu
Z3RoKTsKKyAgICAgICAgICAgIGNvbG9yT2Zmc2V0ID0gY29sb3JBcnJheUxlbmd0aCAtIDg7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShGSUxURVJTKSAmJiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCisKKyNlbmRpZiAv
LyBGRUJsZW5kTkVPTl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152235</attachid>
            <date>2012-07-13 06:08:04 -0700</date>
            <delta_ts>2012-07-13 08:35:54 -0700</delta_ts>
            <desc>patch2</desc>
            <filename>blend_intrinsics2.patch</filename>
            <type>text/plain</type>
            <size>19972</size>
            <attacher name="Gabor Rapcsanyi">rgabor</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjU2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA3LTEzICBHYWJvciBS
YXBjc2FueWkgIDxyZ2Fib3JAd2Via2l0Lm9yZz4KKworICAgICAgICBPcHRpbWl6aW5nIGJsZW5k
IGZpbHRlciB0byBBUk0tTkVPTiB3aXRoIGludHJpbnNpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwOTQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGZlQmxlbmQgU1ZHIGZpbHRlciBtb2RlcyBj
YW4gYmUgZ3JlYXRseSBmYXN0ZW4gdXAgd2l0aCBBUk0tTkVPTiBzaW5jZQorICAgICAgICB3ZSBh
cmUgYWJsZSB0byBjYWxjdWxhdGUgd2l0aCAyIHBpeGVscyAoOCBjaGFubmVscykgYXQgdGhlIHNh
bWUgdGltZS4KKyAgICAgICAgVGhlIGNvZGUgaXMgd3JpdHRlbiB3aXRoIE5FT04gaW50cmluc2lj
cyBhbmQgaXQgZG9lc24ndCBhZmZlY3QgdGhlCisgICAgICAgIGdlbmVyYWwgLSBpdCBoYXMgdGhl
IHNhbWUgYmVoYXZpb3VyIGFzIHRoZSBvcmlnaW5hbCBhbGdvcml0aG0uCisKKyAgICAgICAgRXhp
c3RpbmcgdGVzdHMgY292ZXIgdGhpcyBpc3N1ZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5R2VuZXJpYyk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmg6CisgICAgICAg
IChGRUJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9GRUJs
ZW5kTkVPTi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRkVCbGVuZFV0
aWxpdGllc05FT04pOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZFV0aWxpdGllc05FT046OmRp
djI1NSk6IGludGVnZXIgZGl2aXNvbiB3aXRoIDI1NQorICAgICAgICAoV2ViQ29yZTo6RkVCbGVu
ZFV0aWxpdGllc05FT046Om5vcm1hbCk6IGNhbGN1bGF0ZSBub3JtYWwgbW9kZSBibGVuZGluZyBm
b3IgdHdvIHBpeGVscworICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZFV0aWxpdGllc05FT046Om11
bHRpcGx5KTogY2FsY3VsYXRlIG11bHRpcGx5IG1vZGUgYmxlbmRpbmcgZm9yIHR3byBwaXhlbHMK
KyAgICAgICAgKFdlYkNvcmU6OkZFQmxlbmRVdGlsaXRpZXNORU9OOjpzY3JlZW4pOiBjYWxjdWxh
dGUgc2NyZWVuIG1vZGUgYmxlbmRpbmcgZm9yIHR3byBwaXhlbHMKKyAgICAgICAgKFdlYkNvcmU6
OkZFQmxlbmRVdGlsaXRpZXNORU9OOjpkYXJrZW4pOiBjYWxjdWxhdGUgZGFya2VuIG1vZGUgYmxl
bmRpbmcgZm9yIHR3byBwaXhlbHMKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxlbmRVdGlsaXRpZXNO
RU9OOjpsaWdodGVuKTogY2FsY3VsYXRlIGxpZ2h0ZW4gbW9kZSBibGVuZGluZyBmb3IgdHdvIHBp
eGVscworICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6cGxhdGZvcm1BcHBseU5FT04pOgorCiAy
MDEyLTA3LTEzICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbQ2hyb21pdW1dIEZpeCBidWdzIGluIEhhcmZCdXp6U2hhcGVyCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMTIyNTY3KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEyNDYsNiArMTI0Niw3IEBAIFNFVChXZWJDb3JlX1NP
VVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCiAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9ORU9OSGVscGVycy5oCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9hcm0vRkVCbGVuZE5FT04uaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvYXJtL0ZFQ29tcG9zaXRlQXJpdGhtZXRpY05FT04uaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL0ZFR2F1c3NpYW5CbHVyTkVPTi5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9hcm0vRkVMaWdodGluZ05FT04uY3BwCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEyMjU2NykKKysrIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTMyODgsNiArMzI4OCw3IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9ORU9OSGVscGVycy5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9GRUJsZW5kTkVPTi5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9GRUNvbXBvc2l0ZUFyaXRobWV0
aWNORU9OLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJt
L0ZFR2F1c3NpYW5CbHVyTkVPTi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL2FybS9GRUxpZ2h0aW5nTkVPTi5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZp
c2lvbiAxMjI1NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjc4LDYgKzIyNzgsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL1NvdXJjZUFscGhhLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
U291cmNlR3JhcGhpYy5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9ORU9O
SGVscGVycy5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9GRUJsZW5kTkVP
Ti5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9GRUNvbXBvc2l0ZUFyaXRo
bWV0aWNORU9OLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL0ZFR2F1c3Np
YW5CbHVyTkVPTi5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9GRUxpZ2h0
aW5nTkVPTi5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEyMjU2NykKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzcxNCw2ICszNzE0
LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNv
dXJjZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3BvdExp
Z2h0U291cmNlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJt
L05FT05IZWxwZXJzLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
YXJtL0ZFQmxlbmRORU9OLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvYXJtL0ZFQ29tcG9zaXRlQXJpdGhtZXRpY05FT04uaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9hcm0vRkVHYXVzc2lhbkJsdXJORU9OLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL0ZFTGlnaHRpbmdORU9OLmNwcCcsCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2
aXNpb24gMTIyNTY3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTMxNTQ5LDYgKzMxNTQ5LDEwIEBACiAJCQkJCQk+CiAJ
CQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcZmlsdGVyc1xhcm1cRkVCbGVuZE5FT04uaCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxl
PgorCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xm
aWx0ZXJzXEZFQ29sb3JNYXRyaXguY3BwIgogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxMjI1NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMzMyLDYgKzEwMzMyLDcgQEAKIAkJOTM4
MTkyMDQwRjg3RTFFQzAwRDUzNTJBIC8qIEJpbmFyeVByb3BlcnR5TGlzdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBCaW5hcnlQcm9wZXJ0eUxpc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTM4MkFBQjEwRDhDMzg2MTAwRjM1N0E2IC8qIE5vZGVXaXRoSW5k
ZXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9kZVdpdGhJbmRleC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzgyREY1NzEwQThENUM5MDA5MjU2NTIgLyog
Q29sb3JTcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvclNwYWNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzOEM0OTY4MTVBRDY3RTMwMEZDQjJF
MSAvKiBGRUJsZW5kTkVPTi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGRUJs
ZW5kTkVPTi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzhFNjVGMDA5RjA5ODQw
MDA4QTQ4RUMgLyogSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM4RTY1RjYwOUYwOTg1RDAwOEE0OEVDIC8qIEpTSFRN
TEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTM4RTY2MjUwOUYwOTk1NjAwOEE0OEVDIC8qIEhUTUxDYW52YXNFbGVt
ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MQ2FudmFzRWxlbWVudC5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTEyNSw2ICsxNTEyNiw3IEBACiAJCTQ5RUNF
QjVDMTQ5OTc5MEQwMENERDNBNCAvKiBhcm0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTkzOEM0OTY4MTVBRDY3RTMwMEZDQjJFMSAvKiBGRUJsZW5kTkVP
Ti5oICovLAogCQkJCTQ5RUNFQjVFMTQ5OTc5MEQwMENERDNBNCAvKiBGRUNvbXBvc2l0ZUFyaXRo
bWV0aWNORU9OLmggKi8sCiAJCQkJNDlFQ0VCNjAxNDk5NzkwRDAwQ0REM0E0IC8qIEZFR2F1c3Np
YW5CbHVyTkVPTi5oICovLAogCQkJCTQ5RUNFQjYxMTQ5OTc5MEQwMENERDNBNCAvKiBGRUxpZ2h0
aW5nTkVPTi5jcHAgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQmxlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAJKHJldmlzaW9uIDEyMjU2NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2lmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUg
IkZFQmxlbmQuaCIKKyNpbmNsdWRlICJGRUJsZW5kTkVPTi5oIgogCiAjaW5jbHVkZSAiRmlsdGVy
LmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgpAQCAtODYsMjYgKzg3LDEyIEBAIHN0YXRpYyBp
bmxpbmUgdW5zaWduZWQgY2hhciBsaWdodGVuKHVuc2kKICAgICByZXR1cm4gKChzdGQ6Om1heCgo
MjU1IC0gYWxwaGFBKSAqIGNvbG9yQiArIGNvbG9yQSAqIDI1NSwgKDI1NSAtIGFscGhhQikgKiBj
b2xvckEgKyBjb2xvckIgKiAyNTUpKSAvIDI1NSk7CiB9CiAKLXZvaWQgRkVCbGVuZDo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVCbGVuZDo6cGxhdGZvcm1BcHBseUdlbmVyaWMoUGFz
c1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcGl4ZWxBcnJheUEsIFBhc3NSZWZQdHI8VWludDhD
bGFtcGVkQXJyYXk+IHBpeGVsQXJyYXlCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVaW50OENsYW1wZWRBcnJheSogZHN0UGl4ZWxBcnJheSwgdW5zaWduZWQgcGl4ZWxBcnJh
eUxlbmd0aCkKIHsKLSAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7Ci0gICAg
RmlsdGVyRWZmZWN0KiBpbjIgPSBpbnB1dEVmZmVjdCgxKTsKLQotICAgIEFTU0VSVChtX21vZGUg
PiBGRUJMRU5EX01PREVfVU5LTk9XTik7Ci0gICAgQVNTRVJUKG1fbW9kZSA8PSBGRUJMRU5EX01P
REVfTElHSFRFTik7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBzcmNQaXhlbEFycmF5
QSA9IHBpeGVsQXJyYXlBOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3JjUGl4ZWxB
cnJheUIgPSBwaXhlbEFycmF5QjsKIAotICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBkc3RQaXhlbEFy
cmF5ID0gY3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCk7Ci0gICAgaWYgKCFkc3RQaXhl
bEFycmF5KQotICAgICAgICByZXR1cm47Ci0KLSAgICBJbnRSZWN0IGVmZmVjdEFEcmF3aW5nUmVj
dCA9IHJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoaW4tPmFic29sdXRlUGFpbnRSZWN0
KCkpOwotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3JjUGl4ZWxBcnJheUEgPSBpbi0+
YXNQcmVtdWx0aXBsaWVkSW1hZ2UoZWZmZWN0QURyYXdpbmdSZWN0KTsKLQotICAgIEludFJlY3Qg
ZWZmZWN0QkRyYXdpbmdSZWN0ID0gcmVxdWVzdGVkUmVnaW9uT2ZJbnB1dEltYWdlRGF0YShpbjIt
PmFic29sdXRlUGFpbnRSZWN0KCkpOwotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3Jj
UGl4ZWxBcnJheUIgPSBpbjItPmFzUHJlbXVsdGlwbGllZEltYWdlKGVmZmVjdEJEcmF3aW5nUmVj
dCk7Ci0KLSAgICB1bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3RoID0gc3JjUGl4ZWxBcnJheUEtPmxl
bmd0aCgpOwotICAgIEFTU0VSVChwaXhlbEFycmF5TGVuZ3RoID09IHNyY1BpeGVsQXJyYXlCLT5s
ZW5ndGgoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBwaXhlbE9mZnNldCA9IDA7IHBpeGVsT2Zmc2V0
IDwgcGl4ZWxBcnJheUxlbmd0aDsgcGl4ZWxPZmZzZXQgKz0gNCkgewogICAgICAgICB1bnNpZ25l
ZCBjaGFyIGFscGhhQSA9IHNyY1BpeGVsQXJyYXlBLT5pdGVtKHBpeGVsT2Zmc2V0ICsgMyk7CiAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgYWxwaGFCID0gc3JjUGl4ZWxBcnJheUItPml0ZW0ocGl4ZWxP
ZmZzZXQgKyAzKTsKQEAgLTE0Myw2ICsxMzAsNDUgQEAgdm9pZCBGRUJsZW5kOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKQogICAgIH0KIH0KIAordm9pZCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKQoreworICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKKyAgICBG
aWx0ZXJFZmZlY3QqIGluMiA9IGlucHV0RWZmZWN0KDEpOworCisgICAgQVNTRVJUKG1fbW9kZSA+
IEZFQkxFTkRfTU9ERV9VTktOT1dOKTsKKyAgICBBU1NFUlQobV9tb2RlIDw9IEZFQkxFTkRfTU9E
RV9MSUdIVEVOKTsKKworICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBkc3RQaXhlbEFycmF5ID0gY3Jl
YXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CisgICAgaWYgKCFkc3RQaXhlbEFycmF5KQor
ICAgICAgICByZXR1cm47CisKKyAgICBJbnRSZWN0IGVmZmVjdEFEcmF3aW5nUmVjdCA9IHJlcXVl
c3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOworICAg
IFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3JjUGl4ZWxBcnJheUEgPSBpbi0+YXNQcmVtdWx0
aXBsaWVkSW1hZ2UoZWZmZWN0QURyYXdpbmdSZWN0KTsKKworICAgIEludFJlY3QgZWZmZWN0QkRy
YXdpbmdSZWN0ID0gcmVxdWVzdGVkUmVnaW9uT2ZJbnB1dEltYWdlRGF0YShpbjItPmFic29sdXRl
UGFpbnRSZWN0KCkpOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3JjUGl4ZWxBcnJh
eUIgPSBpbjItPmFzUHJlbXVsdGlwbGllZEltYWdlKGVmZmVjdEJEcmF3aW5nUmVjdCk7CisKKyAg
ICB1bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3RoID0gc3JjUGl4ZWxBcnJheUEtPmxlbmd0aCgpOwor
ICAgIEFTU0VSVChwaXhlbEFycmF5TGVuZ3RoID09IHNyY1BpeGVsQXJyYXlCLT5sZW5ndGgoKSk7
CisKKyNpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCisgICAgaWYgKHBpeGVsQXJyYXlMZW5n
dGggPj0gOCkKKyAgICAgICAgcGxhdGZvcm1BcHBseU5FT04oc3JjUGl4ZWxBcnJheUEtPmRhdGEo
KSwgc3JjUGl4ZWxBcnJheUItPmRhdGEoKSwgZHN0UGl4ZWxBcnJheS0+ZGF0YSgpLCBwaXhlbEFy
cmF5TGVuZ3RoKTsKKyAgICBlbHNlIHsgLy8gaWYgdGhlcmUgaXMganVzdCBvbmUgcGl4ZWwKKyAg
ICAgICAgQVNTRVJUKHBpeGVsQXJyYXlMZW5ndGggPiAwKTsKKyAgICAgICAgdWludDMyX3Qgc291
cmNlQVsyXSA9IHswLCAwfTsKKyAgICAgICAgdWludDMyX3Qgc291cmNlQkFuZERlc3RbMl0gPSB7
MCwgMH07CisKKyAgICAgICAgc291cmNlQVswXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Qq
PihzcmNQaXhlbEFycmF5QS0+ZGF0YSgpKVswXTsKKyAgICAgICAgc291cmNlQkFuZERlc3RbMF0g
PSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oc3JjUGl4ZWxBcnJheUItPmRhdGEoKSlbMF07
CisgICAgICAgIHBsYXRmb3JtQXBwbHlORU9OKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHNv
dXJjZUEpLCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihzb3VyY2VCQW5kRGVzdCksIHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHNvdXJjZUJBbmREZXN0KSwgOCk7CisgICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihkc3RQaXhlbEFycmF5LT5kYXRhKCkpWzBdID0gc291cmNl
QkFuZERlc3RbMF07CisgICAgfQorI2Vsc2UKKyAgICBwbGF0Zm9ybUFwcGx5R2VuZXJpYyhzcmNQ
aXhlbEFycmF5QSwgc3JjUGl4ZWxBcnJheUIsIGRzdFBpeGVsQXJyYXksIHBpeGVsQXJyYXlMZW5n
dGgpOworI2VuZGlmCit9CisKIHZvaWQgRkVCbGVuZDo6ZHVtcCgpCiB7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAko
cmV2aXNpb24gMTIyNTY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUJsZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDExIEBAIHB1YmxpYzoK
ICAgICBCbGVuZE1vZGVUeXBlIGJsZW5kTW9kZSgpIGNvbnN0OwogICAgIGJvb2wgc2V0QmxlbmRN
b2RlKEJsZW5kTW9kZVR5cGUpOwogCisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5R2VuZXJpYyhQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwaXhlbEFycmF5QSwgUGFzc1JlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gcGl4ZWxBcnJheUIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
aW50OENsYW1wZWRBcnJheSogZHN0UGl4ZWxBcnJheSwgdW5zaWduZWQgcGl4ZWxBcnJheUxlbmd0
aCk7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5TkVPTih1bnNpZ25lZCBjaGFyKiBzcmNQaXhlbEFy
cmF5QSwgdW5zaWduZWQgY2hhciogc3JjUGl4ZWxBcnJheUIsIHVuc2lnbmVkIGNoYXIqIGRzdFBp
eGVsQXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjb2xvckFycmF5
TGVuZ3RoKTsKKwogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL2FybS9GRUJsZW5kTkVPTi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL0ZFQmxlbmRORU9OLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9G
RUJsZW5kTkVPTi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdhYm9yIFJhcGNzYW55aQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVU5JVkVSU0lUWSBPRiBTWkVHRUQgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBVTklWRVJTSVRZIE9GIFNaRUdFRCBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRkVCbGVuZE5FT05faAorI2RlZmluZSBG
RUJsZW5kTkVPTl9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShG
SUxURVJTKSAmJiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCisKKyNpbmNsdWRlICJGRUJsZW5k
LmgiCisjaW5jbHVkZSA8YXJtX25lb24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBGRUJsZW5kVXRpbGl0aWVzTkVPTiB7CitwdWJsaWM6CisgICAgc3RhdGljIGlubGluZSB1aW50
MTZ4OF90IGRpdjI1NSh1aW50MTZ4OF90IG51bSwgdWludDE2eDhfdCBzaXh0ZWVuQ29uc3QyNTUs
IHVpbnQxNng4X3Qgc2l4dGVlbkNvbnN0T25lKQorICAgIHsKKyAgICAgICAgdWludDE2eDhfdCBx
dW90aWVudCA9IHZzaHJxX25fdTE2KG51bSwgOCk7CisgICAgICAgIHVpbnQxNng4X3QgcmVtYWlu
ZGVyID0gdmFkZHFfdTE2KHZzdWJxX3UxNihudW0sIHZtdWxxX3UxNihzaXh0ZWVuQ29uc3QyNTUs
IHF1b3RpZW50KSksIHNpeHRlZW5Db25zdE9uZSk7CisgICAgICAgIHJldHVybiB2YWRkcV91MTYo
cXVvdGllbnQsIHZzaHJxX25fdTE2KHJlbWFpbmRlciwgOCkpOworICAgIH0KKworICAgIHN0YXRp
YyBpbmxpbmUgdWludDE2eDhfdCBub3JtYWwodWludDE2eDhfdCBwaXhlbEEsIHVpbnQxNng4X3Qg
cGl4ZWxCLCB1aW50MTZ4OF90IGFscGhhQSwgdWludDE2eDhfdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZ4OF90IHNpeHRlZW5Db25zdDI1NSwgdWludDE2
eDhfdCBzaXh0ZWVuQ29uc3RPbmUpCisgICAgeworICAgICAgICB1aW50MTZ4OF90IHRtcDEgPSB2
c3VicV91MTYoc2l4dGVlbkNvbnN0MjU1LCBhbHBoYUEpOworICAgICAgICB1aW50MTZ4OF90IHRt
cDIgPSB2bXVscV91MTYodG1wMSwgcGl4ZWxCKTsKKyAgICAgICAgdWludDE2eDhfdCB0bXAzID0g
ZGl2MjU1KHRtcDIsIHNpeHRlZW5Db25zdDI1NSwgc2l4dGVlbkNvbnN0T25lKTsKKyAgICAgICAg
cmV0dXJuIHZhZGRxX3UxNih0bXAzLCBwaXhlbEEpOworICAgIH0KKworICAgIHN0YXRpYyBpbmxp
bmUgdWludDE2eDhfdCBtdWx0aXBseSh1aW50MTZ4OF90IHBpeGVsQSwgdWludDE2eDhfdCBwaXhl
bEIsIHVpbnQxNng4X3QgYWxwaGFBLCB1aW50MTZ4OF90IGFscGhhQiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNng4X3Qgc2l4dGVlbkNvbnN0MjU1LCB1
aW50MTZ4OF90IHNpeHRlZW5Db25zdE9uZSkKKyAgICB7CisgICAgICAgIHVpbnQxNng4X3QgdG1w
MSA9IHZzdWJxX3UxNihzaXh0ZWVuQ29uc3QyNTUsIGFscGhhQSk7CisgICAgICAgIHVpbnQxNng4
X3QgdG1wMiA9IHZtdWxxX3UxNih0bXAxLCBwaXhlbEIpOworICAgICAgICB1aW50MTZ4OF90IHRt
cDMgPSB2YWRkcV91MTYodnN1YnFfdTE2KHNpeHRlZW5Db25zdDI1NSwgYWxwaGFCKSwgcGl4ZWxC
KTsKKyAgICAgICAgdWludDE2eDhfdCB0bXA0ID0gdm11bHFfdTE2KHRtcDMsIHBpeGVsQSk7Cisg
ICAgICAgIHVpbnQxNng4X3QgdG1wNSA9IHZhZGRxX3UxNih0bXAyLCB0bXA0KTsKKyAgICAgICAg
cmV0dXJuIGRpdjI1NSh0bXA1LCBzaXh0ZWVuQ29uc3QyNTUsIHNpeHRlZW5Db25zdE9uZSk7Cisg
ICAgfQorCisgICAgc3RhdGljIGlubGluZSB1aW50MTZ4OF90IHNjcmVlbih1aW50MTZ4OF90IHBp
eGVsQSwgdWludDE2eDhfdCBwaXhlbEIsIHVpbnQxNng4X3QsIHVpbnQxNng4X3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2eDhfdCBzaXh0ZWVuQ29uc3Qy
NTUsIHVpbnQxNng4X3Qgc2l4dGVlbkNvbnN0T25lKQorICAgIHsKKyAgICAgICAgdWludDE2eDhf
dCB0bXAxID0gdmFkZHFfdTE2KHBpeGVsQSwgcGl4ZWxCKTsKKyAgICAgICAgdWludDE2eDhfdCB0
bXAyID0gdm11bHFfdTE2KHBpeGVsQSwgcGl4ZWxCKTsKKyAgICAgICAgdWludDE2eDhfdCB0bXAz
ID0gZGl2MjU1KHRtcDIsIHNpeHRlZW5Db25zdDI1NSwgc2l4dGVlbkNvbnN0T25lKTsKKyAgICAg
ICAgcmV0dXJuIHZzdWJxX3UxNih0bXAxLCB0bXAzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgaW5s
aW5lIHVpbnQxNng4X3QgZGFya2VuKHVpbnQxNng4X3QgcGl4ZWxBLCB1aW50MTZ4OF90IHBpeGVs
QiwgdWludDE2eDhfdCBhbHBoYUEsIHVpbnQxNng4X3QgYWxwaGFCLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNng4X3Qgc2l4dGVlbkNvbnN0MjU1LCB1aW50
MTZ4OF90IHNpeHRlZW5Db25zdE9uZSkKKyAgICB7CisgICAgICAgIHVpbnQxNng4X3QgdG1wMSA9
IHZzdWJxX3UxNihzaXh0ZWVuQ29uc3QyNTUsIGFscGhhQSk7CisgICAgICAgIHVpbnQxNng4X3Qg
dG1wMiA9IHZtdWxxX3UxNih0bXAxLCBwaXhlbEIpOworICAgICAgICB1aW50MTZ4OF90IHRtcDMg
PSBkaXYyNTUodG1wMiwgc2l4dGVlbkNvbnN0MjU1LCBzaXh0ZWVuQ29uc3RPbmUpOworICAgICAg
ICB1aW50MTZ4OF90IHRtcDQgPSB2YWRkcV91MTYodG1wMywgcGl4ZWxBKTsKKworICAgICAgICB1
aW50MTZ4OF90IHRtcDUgPSB2c3VicV91MTYoc2l4dGVlbkNvbnN0MjU1LCBhbHBoYUIpOworICAg
ICAgICB1aW50MTZ4OF90IHRtcDYgPSB2bXVscV91MTYodG1wNSwgcGl4ZWxBKTsKKyAgICAgICAg
dWludDE2eDhfdCB0bXA3ID0gZGl2MjU1KHRtcDYsIHNpeHRlZW5Db25zdDI1NSwgc2l4dGVlbkNv
bnN0T25lKTsKKyAgICAgICAgdWludDE2eDhfdCB0bXA4ID0gdmFkZHFfdTE2KHRtcDcsIHBpeGVs
Qik7CisKKyAgICAgICAgcmV0dXJuIHZtaW5xX3UxNih0bXA0LCB0bXA4KTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgaW5saW5lIHVpbnQxNng4X3QgbGlnaHRlbih1aW50MTZ4OF90IHBpeGVsQSwgdWlu
dDE2eDhfdCBwaXhlbEIsIHVpbnQxNng4X3QgYWxwaGFBLCB1aW50MTZ4OF90IGFscGhhQiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZ4OF90IHNpeHRlZW5D
b25zdDI1NSwgdWludDE2eDhfdCBzaXh0ZWVuQ29uc3RPbmUpCisgICAgeworICAgICAgICB1aW50
MTZ4OF90IHRtcDEgPSB2c3VicV91MTYoc2l4dGVlbkNvbnN0MjU1LCBhbHBoYUEpOworICAgICAg
ICB1aW50MTZ4OF90IHRtcDIgPSB2bXVscV91MTYodG1wMSwgcGl4ZWxCKTsKKyAgICAgICAgdWlu
dDE2eDhfdCB0bXAzID0gZGl2MjU1KHRtcDIsIHNpeHRlZW5Db25zdDI1NSwgc2l4dGVlbkNvbnN0
T25lKTsKKyAgICAgICAgdWludDE2eDhfdCB0bXA0ID0gdmFkZHFfdTE2KHRtcDMsIHBpeGVsQSk7
CisKKyAgICAgICAgdWludDE2eDhfdCB0bXA1ID0gdnN1YnFfdTE2KHNpeHRlZW5Db25zdDI1NSwg
YWxwaGFCKTsKKyAgICAgICAgdWludDE2eDhfdCB0bXA2ID0gdm11bHFfdTE2KHRtcDUsIHBpeGVs
QSk7CisgICAgICAgIHVpbnQxNng4X3QgdG1wNyA9IGRpdjI1NSh0bXA2LCBzaXh0ZWVuQ29uc3Qy
NTUsIHNpeHRlZW5Db25zdE9uZSk7CisgICAgICAgIHVpbnQxNng4X3QgdG1wOCA9IHZhZGRxX3Ux
Nih0bXA3LCBwaXhlbEIpOworCisgICAgICAgIHJldHVybiB2bWF4cV91MTYodG1wNCwgdG1wOCk7
CisgICAgfQorfTsKKwordm9pZCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5TkVPTih1bnNpZ25lZCBj
aGFyKiBzcmNQaXhlbEFycmF5QSwgdW5zaWduZWQgY2hhciogc3JjUGl4ZWxBcnJheUIsIHVuc2ln
bmVkIGNoYXIqIGRzdFBpeGVsQXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGNvbG9yQXJyYXlMZW5ndGgpCit7CisgICAgdWludDhfdCogc291cmNlUGl4ZWxB
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oc3JjUGl4ZWxBcnJheUEpOworICAgIHVpbnQ4
X3QqIHNvdXJjZVBpeGVsQiA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHNyY1BpeGVsQXJy
YXlCKTsKKyAgICB1aW50OF90KiBkZXN0aW5hdGlvblBpeGVsID0gcmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4oZHN0UGl4ZWxBcnJheSk7CisKKyAgICB1aW50MTZ4OF90IHNpeHRlZW5Db25zdDI1
NSA9IHZkdXBxX25fdTE2KDI1NSk7CisgICAgdWludDE2eDhfdCBzaXh0ZWVuQ29uc3RPbmUgPSB2
ZHVwcV9uX3UxNigxKTsKKworICAgIHVuc2lnbmVkIGNvbG9yT2Zmc2V0ID0gMDsKKyAgICB3aGls
ZSAoY29sb3JPZmZzZXQgPCBjb2xvckFycmF5TGVuZ3RoKSB7CisgICAgICAgIHVuc2lnbmVkIGNo
YXIgYWxwaGFBMSA9IHNyY1BpeGVsQXJyYXlBW2NvbG9yT2Zmc2V0ICsgM107CisgICAgICAgIHVu
c2lnbmVkIGNoYXIgYWxwaGFCMSA9IHNyY1BpeGVsQXJyYXlCW2NvbG9yT2Zmc2V0ICsgM107Cisg
ICAgICAgIHVuc2lnbmVkIGNoYXIgYWxwaGFBMiA9IHNyY1BpeGVsQXJyYXlBW2NvbG9yT2Zmc2V0
ICsgN107CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYWxwaGFCMiA9IHNyY1BpeGVsQXJyYXlCW2Nv
bG9yT2Zmc2V0ICsgN107CisKKyAgICAgICAgdWludDE2eDhfdCBkb3ViYmxlUGl4ZWxBID0gdm1v
dmxfdTgodmxkMV91OChzb3VyY2VQaXhlbEEgKyBjb2xvck9mZnNldCkpOworICAgICAgICB1aW50
MTZ4OF90IGRvdWJibGVQaXhlbEIgPSB2bW92bF91OCh2bGQxX3U4KHNvdXJjZVBpeGVsQiArIGNv
bG9yT2Zmc2V0KSk7CisgICAgICAgIHVpbnQxNng4X3QgYWxwaGFBID0gdmNvbWJpbmVfdTE2KHZk
dXBfbl91MTYoYWxwaGFBMSksIHZkdXBfbl91MTYoYWxwaGFBMikpOworICAgICAgICB1aW50MTZ4
OF90IGFscGhhQiA9IHZjb21iaW5lX3UxNih2ZHVwX25fdTE2KGFscGhhQjEpLCB2ZHVwX25fdTE2
KGFscGhhQjIpKTsKKworICAgICAgICB1aW50MTZ4OF90IHJlc3VsdDsKKyAgICAgICAgc3dpdGNo
IChtX21vZGUpIHsKKyAgICAgICAgY2FzZSBGRUJMRU5EX01PREVfTk9STUFMOgorICAgICAgICAg
ICAgcmVzdWx0ID0gRkVCbGVuZFV0aWxpdGllc05FT046Om5vcm1hbChkb3ViYmxlUGl4ZWxBLCBk
b3ViYmxlUGl4ZWxCLCBhbHBoYUEsIGFscGhhQiwgc2l4dGVlbkNvbnN0MjU1LCBzaXh0ZWVuQ29u
c3RPbmUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRkVCTEVORF9NT0RFX01V
TFRJUExZOgorICAgICAgICAgICAgcmVzdWx0ID0gRkVCbGVuZFV0aWxpdGllc05FT046Om11bHRp
cGx5KGRvdWJibGVQaXhlbEEsIGRvdWJibGVQaXhlbEIsIGFscGhhQSwgYWxwaGFCLCBzaXh0ZWVu
Q29uc3QyNTUsIHNpeHRlZW5Db25zdE9uZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBGRUJMRU5EX01PREVfU0NSRUVOOgorICAgICAgICAgICAgcmVzdWx0ID0gRkVCbGVuZFV0
aWxpdGllc05FT046OnNjcmVlbihkb3ViYmxlUGl4ZWxBLCBkb3ViYmxlUGl4ZWxCLCBhbHBoYUEs
IGFscGhhQiwgc2l4dGVlbkNvbnN0MjU1LCBzaXh0ZWVuQ29uc3RPbmUpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRkVCTEVORF9NT0RFX0RBUktFTjoKKyAgICAgICAgICAgIHJl
c3VsdCA9IEZFQmxlbmRVdGlsaXRpZXNORU9OOjpkYXJrZW4oZG91YmJsZVBpeGVsQSwgZG91YmJs
ZVBpeGVsQiwgYWxwaGFBLCBhbHBoYUIsIHNpeHRlZW5Db25zdDI1NSwgc2l4dGVlbkNvbnN0T25l
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZFQkxFTkRfTU9ERV9MSUdIVEVO
OgorICAgICAgICAgICAgcmVzdWx0ID0gRkVCbGVuZFV0aWxpdGllc05FT046OmxpZ2h0ZW4oZG91
YmJsZVBpeGVsQSwgZG91YmJsZVBpeGVsQiwgYWxwaGFBLCBhbHBoYUIsIHNpeHRlZW5Db25zdDI1
NSwgc2l4dGVlbkNvbnN0T25lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZF
QkxFTkRfTU9ERV9VTktOT1dOOgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmVzdWx0
ID0gdmR1cHFfbl91MTYoMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAg
ICAgIHZzdDFfdTgoZGVzdGluYXRpb25QaXhlbCArIGNvbG9yT2Zmc2V0LCB2bW92bl91MTYocmVz
dWx0KSk7CisKKyAgICAgICAgdW5zaWduZWQgY2hhciBhbHBoYVIxID0gMjU1IC0gKCgyNTUgLSBh
bHBoYUExKSAqICgyNTUgLSBhbHBoYUIxKSkgLyAyNTU7CisgICAgICAgIHVuc2lnbmVkIGNoYXIg
YWxwaGFSMiA9IDI1NSAtICgoMjU1IC0gYWxwaGFBMikgKiAoMjU1IC0gYWxwaGFCMikpIC8gMjU1
OworCisgICAgICAgIGRzdFBpeGVsQXJyYXlbY29sb3JPZmZzZXQgKyAzXSA9IGFscGhhUjE7Cisg
ICAgICAgIGRzdFBpeGVsQXJyYXlbY29sb3JPZmZzZXQgKyA3XSA9IGFscGhhUjI7CisKKyAgICAg
ICAgY29sb3JPZmZzZXQgKz0gODsKKyAgICAgICAgaWYgKGNvbG9yT2Zmc2V0ID4gY29sb3JBcnJh
eUxlbmd0aCkgeworICAgICAgICAgICAgQVNTRVJUKGNvbG9yT2Zmc2V0IC0gNCA9PSBjb2xvckFy
cmF5TGVuZ3RoKTsKKyAgICAgICAgICAgIGNvbG9yT2Zmc2V0ID0gY29sb3JBcnJheUxlbmd0aCAt
IDg7CisgICAgICAgIH0KKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShGSUxURVJTKSAmJiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCisKKyNl
bmRpZiAvLyBGRUJsZW5kTkVPTl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>152427</attachid>
            <date>2012-07-14 10:41:13 -0700</date>
            <delta_ts>2012-07-14 10:41:13 -0700</delta_ts>
            <desc>test case</desc>
            <filename>blend.svg</filename>
            <type>image/svg+xml</type>
            <size>908</size>
            <attacher name="Gabor Rapcsanyi">rgabor</attacher>
            
              <data encoding="base64">PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB2ZXJzaW9uPSIxLjEiIGJhc2VQcm9maWxl
PSJiYXNpYyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+Cgo8ZGVmcz4KICA8ZmlsdGVyIGlkPSJCbGVu
ZCIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIwJSIgeT0iMCUiIHdpZHRoPSIx
MDAlIiBoZWlnaHQ9IjEwMCUiPgogICAgPGZlRmxvb2QgaW49IkJhY2tncm91bmRBbHBoYSIgZmxv
b2QtY29sb3I9IiMwZjAiIGZsb29kLW9wYWNpdHk9IjAuNSIgcmVzdWx0PSJpbWciLz4KICAgIDxm
ZUJsZW5kIGlkPSJibGVuZGVyIiBpbjI9ImltZyIgaW49IlNvdXJjZUdyYXBoaWMiIG1vZGU9Im5v
cm1hbCI+PC9mZUJsZW5kPgogIDwvZmlsdGVyPgo8L2RlZnM+Cgo8ZyBmaWx0ZXI9InVybCgjQmxl
bmQpIj4KICA8cmVjdCBpZD0icmVjdCIgeD0iMCIgeT0iMCIgd2lkdGg9IjUwMCIgaGVpZ2h0PSI1
MDAiIGZpbGw9ImJsdWUiIG9wYWNpdHk9IjAuNSIgLz4KPC9nPgoKPHNjcmlwdD4gCjwhW0NEQVRB
WwoKdmFyIHJvdW5kID0gTWF0aC5yb3VuZDsKCnZhciBtb2RlcyA9IG5ldyBBcnJheSgic2NyZWVu
IiwibXVsdGlwbHkiLCJsaWdodGVuIiwiZGFya2VuIiwgIm5vcm1hbCIpOwp2YXIgYmxlbmRlciA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdibGVuZGVyJyk7CnZhciBtb2RlID0gMDsKCmZ1bmN0
aW9uIGFuaW0oKSB7CiAgICBtb2RlKys7CiAgICBpZihtb2RlID4gbW9kZXMubGVuZ3RoLTEpCiAg
ICAgIG1vZGUgPSAwOwoKICAgIGJsZW5kZXIuc2V0QXR0cmlidXRlKCJtb2RlIiwgbW9kZXNbbW9k
ZV0pOwp9CgpzZXRJbnRlcnZhbChhbmltLDEpOwoKLy9dXT4KPC9zY3JpcHQ+Cgo8L3N2Zz4=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>309706</attachid>
            <date>2017-05-11 04:45:46 -0700</date>
            <delta_ts>2017-05-11 04:45:46 -0700</delta_ts>
            <desc>SVG test case for ARM_NEON</desc>
            <filename>svg_test_case.svg</filename>
            <type>image/svg+xml</type>
            <size>5685</size>
            <attacher name="Rahul Gupta">rahul.g</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJpY29fZW5fb24iIHdp
ZHRoPSIzMTgiIGhlaWdodD0iNjIiIHZpZXdCb3g9Ii0xMCAtMTAgMzE4IDYyIiB5PSI2MiI+PGRl
ZnM+PHN0eWxlPi5jY2xzLTF7ZmlsbDojZGVlM2VifS5jY2xzLTEsLmNjbHMtMiwuY2Nscy0zLC5j
Y2xzLTR7ZmlsbC1ydWxlOmV2ZW5vZGR9LmNjbHMtMntmaWxsOiNmOWZhZmN9LmNjbHMtM3tmaWxs
OiM2NjZ9LmNjbHMtNHtmaWxsOiMwMGM3M2M7ZmlsdGVyOnVybCgjY2ZpbHRlcil9PC9zdHlsZT48
ZmlsdGVyIGlkPSJjZmlsdGVyIiB4PSI5NCIgeT0iMTYiIHdpZHRoPSI2MC40MzgiIGhlaWdodD0i
MTAuOTY5IiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiPjxmZUltYWdlIHByZXNlcnZlQXNw
ZWN0UmF0aW89Im5vbmUiIHg9Ijk0IiB5PSIxNiIgd2lkdGg9IjYwLjQzOCIgaGVpZ2h0PSIxMC45
NjkiIHJlc3VsdD0iaW1hZ2UiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs
aW5rIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUI0Yld4dWN6
MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJSGh0Ykc1ek9uaHNhVzVyUFNK
b2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMM2hzYVc1cklpQjNhV1IwYUQwaU5qQXVORE00
SWlCb1pXbG5hSFE5SWpFd0xqazJPU0lnZG1sbGQwSnZlRDBpTUNBd0lEWXdMalF6T0NBeE1DNDVO
amtpUGdvZ0lEeGtaV1p6UGdvZ0lDQWdQSE4wZVd4bFBnb2dJQ0FnSUNBdVkyeHpMVEVnZXdvZ0lD
QWdJQ0FnSUdacGJHdzZJSFZ5YkNnamJHbHVaV0Z5TFdkeVlXUnBaVzUwS1RzS0lDQWdJQ0FnZlFv
Z0lDQWdQQzl6ZEhsc1pUNEtJQ0FnSUR4c2FXNWxZWEpIY21Ga2FXVnVkQ0JwWkQwaWJHbHVaV0Z5
TFdkeVlXUnBaVzUwSWlCNU1UMGlOUzQwT0RRaUlIZ3lQU0kyTUM0ME16Z2lJSGt5UFNJMUxqUTRO
Q0lnWjNKaFpHbGxiblJWYm1sMGN6MGlkWE5sY2xOd1lXTmxUMjVWYzJVaVBnb2dJQ0FnSUNBOGMz
UnZjQ0J2Wm1aelpYUTlJakFpSUhOMGIzQXRZMjlzYjNJOUlpTXlaR0poTkRJaUx6NEtJQ0FnSUNB
Z1BITjBiM0FnYjJabWMyVjBQU0l4SWlCemRHOXdMV052Ykc5eVBTSWpNekJqTkRRMUlpOCtDaUFn
SUNBOEwyeHBibVZoY2tkeVlXUnBaVzUwUGdvZ0lEd3ZaR1ZtY3o0S0lDQThjbVZqZENCamJHRnpj
ejBpWTJ4ekxURWlJSGRwWkhSb1BTSTJNQzQwTXpnaUlHaGxhV2RvZEQwaU1UQXVPVFk1SWk4K0Nq
d3ZjM1puUGdvPSIvPjxmZUNvbXBvc2l0ZSByZXN1bHQ9ImNvbXBvc2l0ZSIgb3BlcmF0b3I9Imlu
IiBpbjI9IlNvdXJjZUdyYXBoaWMiLz48ZmVCbGVuZCByZXN1bHQ9ImJsZW5kIiBpbjI9IlNvdXJj
ZUdyYXBoaWMiLz48L2ZpbHRlcj48L2RlZnM+PHBhdGggaWQ9ImNSZWN0YW5nbGVfMTcwOF9jb3B5
XzMiIGRhdGEtbmFtZT0iUmVjdGFuZ2xlIDE3MDggY29weSAzIiBjbGFzcz0iY2Nscy0xIiBkPSJN
LS4wMTkgMEgyOTh2NDJILS4wMTlWMHoiLz48cGF0aCBpZD0iY1JlY3RhbmdsZV8xNzA4X2NvcHlf
My0yIiBkYXRhLW5hbWU9IlJlY3RhbmdsZSAxNzA4IGNvcHkgMyIgY2xhc3M9ImNjbHMtMiIgZD0i
TS45ODEgMUgyOTd2NDBILjk4MVYxeiIvPjxwYXRoIGlkPSJjU2lnbl9pbl9jb3B5IiBkYXRhLW5h
bWU9IlNpZ24gaW4gY29weSIgY2xhc3M9ImNjbHMtMyIgZD0iTTE2Ny43MjcgMTguMjkzYS4xMjMu
MTIzIDAgMCAwIC4wNy0uMTE5VjE2LjU1YTMuMTQgMy4xNCAwIDAgMC0uNjY1LS40NDEgMy44ODUg
My44ODUgMCAwIDAtLjczNS0uMjczIDUuMzggNS4zOCAwIDAgMC0uNzU2LS4xNCA2LjQ4MSA2LjQ4
MSAwIDAgMC0uNzE0LS4wNDIgNS4xODMgNS4xODMgMCAwIDAtMS40MTQuMTgyIDMuMzY4IDMuMzY4
IDAgMCAwLTEuMTA2LjUyNSAyLjMyNCAyLjMyNCAwIDAgMC0uNzE0Ljg2MSAyLjcyMiAyLjcyMiAw
IDAgMC0uMjUyIDEuMiAyLjkxNiAyLjkxNiAwIDAgMCAuMTgyIDEuMDc4IDIuNzQyIDIuNzQyIDAg
MCAwIC41LjgxOSAzLjUwNSAzLjUwNSAwIDAgMCAuNzU2LjYzNyA2LjgxNSA2LjgxNSAwIDAgMCAu
OTU5LjVsLjk2Ni40MmE0LjA2MSA0LjA2MSAwIDAgMSAxLjIxOC43NjMgMS4zODUgMS4zODUgMCAw
IDEgLjQyIDEuMDI5IDEuNDY1IDEuNDY1IDAgMCAxLS40NTUgMS4xODMgMi4zMDYgMi4zMDYgMCAw
IDEtMS40OTEuMzg1IDMuOSAzLjkgMCAwIDEtLjktLjEgMy4yNjEgMy4yNjEgMCAwIDEtLjc2My0u
MjggMy4zOCAzLjM4IDAgMCAxLS42NTgtLjQ0OCA2LjAzMiA2LjAzMiAwIDAgMS0uNi0uNi4xLjEg
MCAwIDAtLjEyNi0uMDIxLjEyMi4xMjIgMCAwIDAtLjA3LjExOXYxLjgyYTMuNzEgMy43MSAwIDAg
MCAxLjQuNzg0IDUuODU2IDUuODU2IDAgMCAwIDEuNzA4LjIzOCA2LjA0NCA2LjA0NCAwIDAgMCAx
LjU2MS0uMTg5IDMuNDQgMy40NCAwIDAgMCAxLjIxOC0uNTgxIDIuNjM3IDIuNjM3IDAgMCAwIC43
OTEtLjk5NCAzLjMzMyAzLjMzMyAwIDAgMCAuMjgtMS40MTQgMi42MzUgMi42MzUgMCAwIDAtLjY5
My0xLjg0OCA1Ljc5MSA1Ljc5MSAwIDAgMC0xLjk2Ny0xLjMxNmwtLjk2Ni0uNDJhMy41NDkgMy41
NDkgMCAwIDEtMS4wNTctLjYzNyAxLjI2MSAxLjI2MSAwIDAgMS0uMzg1LS45NzNxMC0xLjI0NiAx
LjcyMi0xLjI0NmEzLjM0OCAzLjM0OCAwIDAgMSAxLjQyMS4zIDQuMyA0LjMgMCAwIDEgMS4yLjgz
My4xLjEgMCAwIDAgLjExNS4wM3ptMi4wMTYuNDEzdjcuOTI0aDEuNzV2LTcuOTI0aC0xLjc1em0t
LjE0LTEuNzcxYTEuMTA2IDEuMTA2IDAgMCAwIC4yMzEuMzM2IDEuMTgyIDEuMTgyIDAgMCAwIC4z
NDMuMjM4IDEuMDEzIDEuMDEzIDAgMCAwIC40MzQuMDkxIDEuMTA5IDEuMTA5IDAgMCAwIC40Mjct
LjA4NCAxLjE1NSAxLjE1NSAwIDAgMCAuMzU3LS4yMzEgMS4xMzcgMS4xMzcgMCAwIDAgLjI0NS0u
MzQzLjk1MS45NTEgMCAwIDAgMC0uODEyIDEuMTQ1IDEuMTQ1IDAgMCAwLS4yNDUtLjM0MyAxLjI3
MSAxLjI3MSAwIDAgMC0uMzU3LS4yMzggMS4wOTIgMS4wOTIgMCAwIDAtMS4yMTEuMjMxIDEuMDU2
IDEuMDU2IDAgMCAwLS4zMDguNzU2Ljk3MS45NzEgMCAwIDAgLjA4MS4zOTl6bTcuODk1IDcuNmEx
LjcxNiAxLjcxNiAwIDAgMS0xLjQxNC42MjMgMS44MTQgMS44MTQgMCAwIDEtLjY3OS0uMTI2IDEu
NDA4IDEuNDA4IDAgMCAxLS41NTMtLjQwNiAyIDIgMCAwIDEtLjM3MS0uNzIxIDMuNzcgMy43NyAw
IDAgMS0uMTMzLTEuMDcxIDMuODM0IDMuODM0IDAgMCAxIC41LTIuMTU2IDEuNjM3IDEuNjM3IDAg
MCAxIDIuMDc5LS41ODEgMS43MjggMS43MjggMCAwIDEgLjU2Ny40NDEgMi4wNDIgMi4wNDIgMCAw
IDEgLjM3MS42NThBMi4zNzkgMi4zNzkgMCAwIDEgMTc4IDIydi45MmEyLjQ5IDIuNDkgMCAwIDEt
LjUgMS42MTd6bS00LjIzNSAzLjI0MWEuMTEuMTEgMCAwIDAtLjA2My4xMTJWMjkuNGE1LjAzOSA1
LjAzOSAwIDAgMCAxLjIxMS40NzYgNS44ODkgNS44ODkgMCAwIDAgMS40MDcuMTU0IDUuOCA1Ljgg
MCAwIDAgMS43NjQtLjIzOCAyLjc5MSAyLjc5MSAwIDAgMCAxLjIxOC0uNzQ5IDMuMTExIDMuMTEx
IDAgMCAwIC43LTEuMyA2Ljk0IDYuOTQgMCAwIDAgLjIyNC0xLjg4M2wtLjAxNC03LjE1NGgtMS42
OGwtLjEuODRoLS4wMTRhMi42ODcgMi42ODcgMCAwIDAtLjg0Ny0uNzM1IDIuNDkzIDIuNDkzIDAg
MCAwLTEuMjM5LS4yODcgMy4wMTkgMy4wMTkgMCAwIDAtMS40MDcuMzE1IDIuOTU5IDIuOTU5IDAg
MCAwLTEuMDI5Ljg4MiAzLjk2MSAzLjk2MSAwIDAgMC0uNjMgMS4zNjUgNi45MjYgNi45MjYgMCAw
IDAtLjIxIDEuNzY0IDMuODc2IDMuODc2IDAgMCAwIC44NjggMi43NDQgMy4xNDUgMy4xNDUgMCAw
IDAgMi40MDguOTI0IDIuNjIgMi42MiAwIDAgMCAxLjI2LS4zMDggMi4zNTYgMi4zNTYgMCAwIDAg
LjktLjgxMmguMDF2MS4wMzZhMi4zODMgMi4zODMgMCAwIDEtLjUxMSAxLjYzOCAyLjI2MyAyLjI2
MyAwIDAgMS0xLjc1Ny41NzQgMy4zNSAzLjM1IDAgMCAxLTEuMTQ4LS4yIDUuMDgyIDUuMDgyIDAg
MCAxLTEuMTktLjY1MS4xMzcuMTM3IDAgMCAwLS4xMzEtLjAxN3ptOS45MDUtOS4wNzJoLTEuNjUy
djcuOTI2aDEuNzIydi00LjNhMy4zNDIgMy4zNDIgMCAwIDEgLjE0Ny0xLjAyOSAyLjQgMi40IDAg
MCAxIC40LS43NyAxLjc1NSAxLjc1NSAwIDAgMSAuNTg4LS40ODMgMS41NzUgMS41NzUgMCAwIDEg
LjcxNC0uMTY4IDEuMzM4IDEuMzM4IDAgMCAxIDEuMDIyLjM4NSAxLjk4NSAxLjk4NSAwIDAgMSAu
MzY0IDEuMzY1djVoMS43MjJ2LTQuOTE0YTMuNTgzIDMuNTgzIDAgMCAwLS42NzktMi4zOTQgMi40
OTQgMi40OTQgMCAwIDAtMS45OTUtLjc4NCAyLjU2OSAyLjU2OSAwIDAgMC0xLjMwOS4zMzYgMy4w
ODMgMy4wODMgMCAwIDAtLjk0NS44MjZoLS4wMTR6bTkuNjQ2IDB2Ny45MjZoMS43NXYtNy45MjRo
LTEuNzV6bS0uMTQtMS43NzFhMS4xMDYgMS4xMDYgMCAwIDAgLjIzMS4zMzYgMS4xODIgMS4xODIg
MCAwIDAgLjM0My4yMzggMS4wMTkgMS4wMTkgMCAwIDAgLjQzNC4wOTEgMS4xIDEuMSAwIDAgMCAu
NDI3LS4wODQgMS4xNTUgMS4xNTUgMCAwIDAgLjM1Ny0uMjMxIDEuMSAxLjEgMCAwIDAgLjI0NS0u
MzQzLjk1MS45NTEgMCAwIDAgMC0uODEyIDEuMTExIDEuMTExIDAgMCAwLS4yNDUtLjM0MyAxLjI3
MSAxLjI3MSAwIDAgMC0uMzU3LS4yMzggMS4wOTIgMS4wOTIgMCAwIDAtMS4yMTEuMjMxIDEuMDYg
MS4wNiAwIDAgMC0uMzA4Ljc1Ni45NzEuOTcxIDAgMCAwIC4wODQuNDAxem01LjMzNCAxLjc3MWgt
MS42NTJ2Ny45MjZoMS43MjJ2LTQuM2EzLjM0MiAzLjM0MiAwIDAgMSAuMTQ3LTEuMDI5IDIuNCAy
LjQgMCAwIDEgLjQtLjc3IDEuNzU1IDEuNzU1IDAgMCAxIC41ODgtLjQ4MyAxLjU3NSAxLjU3NSAw
IDAgMSAuNzE0LS4xNjggMS4zMzkgMS4zMzkgMCAwIDEgMS4wMjIuMzg1IDEuOTg1IDEuOTg1IDAg
MCAxIC4zNjQgMS4zNjV2NWgxLjcyMnYtNC45MTRhMy41ODMgMy41ODMgMCAwIDAtLjY3OS0yLjM5
NCAyLjUgMi41IDAgMCAwLTEuOTk1LS43ODQgMi41NjcgMi41NjcgMCAwIDAtMS4zMDkuMzM2IDMu
MDgzIDMuMDgzIDAgMCAwLS45NDUuODI2aC0uMDE0eiIvPjxwYXRoIGNsYXNzPSJjY2xzLTQiIGQ9
Ik0xMDIuMDE4IDE2LjAwOHY1LjVsLTMuOTgtNS41SDkzLjk5djEwLjk2NGg0LjAzNHYtNS41NjVs
My45ODEgNS41NjRoMy45ODRWMTYuMDA4aC0zLjk3MXptNDkuMDE2IDYuODc4YTMuMTQzIDMuMTQz
IDAgMCAwIDIuNDY3LTMuMjM4YzAtMi45MjEtMi4yMjQtMy42NC01LjI4LTMuNjRoLTUuMjR2MTAu
OTY0aDR2LTMuMzg0bDIuNzA3IDMuMzg0aDQuNzU5em0tMS45OC0yLjMwOWExLjk2MyAxLjk2MyAw
IDAgMS0xLjExMi4zaC0uOTY5di0yLjIzNWguOTUyYTEuOTU0IDEuOTU0IDAgMCAxIDEuMTQ4LjMg
MS4wNDIgMS4wNDIgMCAwIDEgLjM0My44MzMuOTY2Ljk2NiAwIDAgMS0uMzYyLjgwMnptLTE2LjA0
OS00LjU2OWg5djIuOTg0aC01di45OTFoNHYzLjAwNWgtNHYxaDQuOTh2Mi45ODVoLTguOTczVjE2
LjAwOHptLTE3LjAxMiAwaC00LjgxNGwtNC40NDEgMTAuOTY0aDQuNjk0bC40MS0xLjk4MWgzLjQ4
N2wuNDEgMS45ODFoNC42OTR6bS0zLjQ1OSA3LjAxOWwuOTk0LTMuNzRoLjExNWwuOTk0IDMuNzRo
LTIuMXptMTQuNjItNy4wMTlsLTIuMDgxIDYuNjE4aC0uMTE3bC0yLjA3OS02LjYxOGgtNC42bDQu
NzUgMTAuOTY0aDMuOTg1bDQuNzUtMTAuOTY0aC00LjZ6Ii8+PC9zdmc+
</data>

          </attachment>
      

    </bug>

</bugzilla>